你是否曾对着 Python 代码抓耳挠腮,觉得那些字母组合比外星语言还难懂?实则 90% 的编程困惑都能从 “变量” 这个基础概念找到突破口!掌握变量就像拿到了 Python 编程的万能钥匙,今天就用最接地气的方式带你揭开变量的神秘面纱,文末还藏着 3 个让老程序员都直呼 “真香” 的进阶技巧,必定要看到最后!
一、什么是变量?3 分钟理解编程界的 “哆啦 A 梦口袋”
变量本质就是编程世界里的魔法容器,和你书桌抽屉一样能分类存储不同东西。列如:
- 装年龄:age = 18(整数抽屉)
- 装身高:height = 1.75(小数抽屉)
- 装名字:name = ‘小明’(文字抽屉)
- 装是否成年:is_adult = True(对错抽屉)
关键特性揭秘:
- 可以重复使用:age = 18后再写age = 19,相当于把 18 岁的标签换成 19 岁
- 自动识别类型:Python 会根据赋值内容自动判断,不用像其他语言先声明类型
- 支持中文变量:年龄 = 18也是合法的,不过实际开发提议用英文更规范
二、变量命名规则:写出让同事点赞的优雅代码
(1)硬性规则(违反会报错!)
- 不能以数字开头:1student错误,student1正确
- 不能包含空格:user name错误,user_name正确
- 避开 Python 关键词:if = 1错误(if 是判断关键词),my_if = 1正确
小结:
- 变量名要由字母(涵盖大写和小写)、数字或者下划线(_)构成。
- 变量名的开头不能是数字。
- 变量名不能和 Python 的关键字(像 if、for、def 等)一样。
- 变量名不允许包含特殊符号,例如 @、!、%、. 等,仅能使用下划线(_)。
(2)命名技巧(让代码会说话)
|
糟糕命名 |
优秀命名 |
说明 |
|
a |
user_age |
见名知意,明确是用户年龄 |
|
b_list |
teacher_names |
复数形式表明列表,明确存储教师姓名 |
|
data |
student_score_dict |
加上数据类型后缀,明确是学生成绩字典 |
(3)行业规范
- 蛇形命名法:student_name(单词用下划线连接)
- 帕斯卡命名法:StudentName(类名专用,每个单词首字母大写)
- 全大写:MAX_SCORE = 100(常量专用,表明最高分)
三、变量数据类型:4 大类型的使用场景全解析
(1)整数(int):不带小数点的数字
适用场景:
- 年龄、人数、班级编号等计数场景
- 数学运算中的整数计算
特殊用法:
# 二进制表明
binary_num = 0b1010 # 二进制1010等于十进制10
# 八进制表明
octal_num = 0o12 # 八进制12等于十进制10
# 十六进制表明
hex_num = 0xA # 十六进制A等于十进制10
(2)浮点数(float):带小数点的数字
精度注意事项:
# 浮点数存在精度问题
print(0.1 + 0.2) # 输出0.30000000000000004
# 解决方案:使用decimal模块
from decimal import Decimal
print(Decimal('0.1') + Decimal('0.2')) # 正确输出0.3
(3)字符串(str):文本内容的专属容器
3 种定义方式:
single_quote = '我是单引号字符串'
double_quote = "我是双引号字符串"
triple_quote = '''我是
多行
字符串'''
常用操作示例:
name = 'Python'
print(name[0]) # 输出P(获取第一个字符)
print(name[2:4]) # 输出th(获取第3-4个字符)
print(name * 3) # 输出PythonPythonPython(重复3次)
(4)布尔值(bool):编程世界的对错裁判
典型应用场景:
- 条件判断:if age >= 18:
- 逻辑运算:is_student and is_active
- 过滤数据:new_list = [x for x in list if x > 10]
四、变量操作:从新手到高手的必经之路
(1)修改变量值的 3 种方式
# 方式1:直接赋值
count = 5
count = 10 # 直接覆盖旧值
# 方式2:增量赋值
count = 5
count += 1 # 等价于count = count + 1,结果为6
# 方式3:链式赋值
a = b = c = 10 # 同时给3个变量赋值10
(2)字符串拼接的进阶技巧
name = '小明'
age = 18
# 方式1:+号拼接(最基础)
print('我叫' + name + ',今年' + str(age) + '岁')
# 方式2:格式化字符串(推荐)
print(f'我叫{name},今年{age}岁')
# 方式3:字符串模板
from string import Template
t = Template('我叫$name,今年$age岁')
print(t.substitute(name=name, age=age))
(3)输入输出的高级玩法
# 获取多个输入
name, age = input('请输入姓名和年龄,用空格分隔:').split()
age = int(age) # 转换为整数
# 带格式的输出
print(f'姓名:{name:<10} 年龄:{age:>5}') # 左对齐姓名,右对齐年龄
# 输出到文件
with open('output.txt', 'w') as f:
print('我叫小明,今年18岁', file=f)
五、实战案例:用变量解决 3 个真实场景问题
案例 1:个人信息登记表
# 获取用户输入
name = input('姓名:')
age = int(input('年龄:'))
height = float(input('身高(米):'))
is_student = input('是否是学生(是/否):') == '是'
# 处理数据
birth_year = 2025 - age
next_birthday_age = age + 1
# 输出结果
print(f'''
===== 个人信息表 =====
姓名:{name}
年龄:{age}岁
明年生日:{next_birthday_age}岁
出生年份:{birth_year}年
身高:{height}米
学生身份:{'是' if is_student else '否'}
''')
案例 2:商品价格计算器
# 商品基础信息
product_name = 'Python入门教程'
original_price = 59.9 # 原价
discount = 0.85 # 85折
# 计算优惠后价格
discounted_price = original_price * discount
# 计算不同购买数量的总价
for count in [1, 2, 5]:
total_price = discounted_price * count
print(f'购买{count}本《{product_name}》,原价{original_price*count:.2f}元,折后价{total_price:.2f}元')
案例 3:简单成绩统计
# 输入3门课成绩
math = float(input('数学成绩:'))
english = float(input('英语成绩:'))
physics = float(input('物理成绩:'))
# 计算总分和平均分
total = math + english + physics
average = total / 3
# 判断成绩等级
if average >= 90:
level = '优秀'
elif average >= 80:
level = '良好'
elif average >= 60:
level = '及格'
else:
level = '不及格'
# 输出结果
print(f'''
===== 成绩统计 =====
数学:{math}分
英语:{english}分
物理:{physics}分
总分:{total}分
平均分:{average:.2f}分
等级:{level}
''')
六、进阶技巧:让变量操作效率提升 300%
技巧 1:同时赋值的 N 种玩法
# 常规同时赋值
a, b, c = 1, 2, 3
# 交换变量值(无需中间变量)
a, b = b, a
# 解压列表赋值
numbers = [10, 20, 30]
x, y, z = numbers
# 忽略某些值(用下划线)
data = (100, 'python', True)
value, _, is_valid = data
技巧 2:变量解包的高级应用
# 函数返回多个值解包
def get_person_info():
return '张三', 18, '学生'
name, age, role = get_person_info()
# 解包时使用星号收集多余元素
numbers = [1, 2, 3, 4, 5]
first, *middle, last = numbers # first=1, middle=[2,3,4], last=5
# 字典解包(**操作符)
person = {'name': '李四', 'age': 20}
print(f"姓名:{person['name']},年龄:{person['age']}")
# 等价于
print(f"姓名:{**person}['name'],年龄:{**person}['age']}")
技巧 3:变量作用域管理
# 全局变量与局部变量
global_var = '我是全局变量'
def demo_function():
local_var = '我是局部变量'
print(global_var) # 可以访问全局变量
# print(local_var) # 函数外不能访问局部变量
demo_function()
# 修改全局变量
def modify_global():
global global_var
global_var = '全局变量被修改了'
modify_global()
print(global_var) # 输出:全局变量被修改了
七、避坑指南:新手最容易犯的 5 大变量错误
- 变量未定义就使用
# 错误示例
print(未定义的变量) # 会报错NameError
# 正确做法
undefined_var = '我已定义'
print(undefined_var)
- 数据类型错误
# 错误示例
age = '18'
next_age = age + 1 # 会报错TypeError
# 正确做法
age = '18'
next_age = int(age) + 1
print(next_age) # 输出19
- 命名不规范导致的歧义
# 糟糕示例
a = input('输入数字:')
b = a + 10 # 这里a是字符串,会报错
# 改善示例
user_input = input('输入数字:')
number = int(user_input)
result = number + 10
- 字符串拼接错误
# 错误示例
name = '小明'
age = 18
print('我叫' + name + ',今年' + age + '岁') # 会报错TypeError
# 正确做法
print('我叫' + name + ',今年' + str(age) + '岁')
# 或使用格式化字符串
print(f'我叫{name},今年{age}岁')
- 变量覆盖导致的数据丢失
# 错误示例
data = [1, 2, 3, 4, 5]
sum_result = sum(data)
data = 0 # 错误地覆盖了data变量,导致无法再次使用原始数据
print(sum_result)
# 正确做法
original_data = [1, 2, 3, 4, 5]
sum_result = sum(original_data)
# 后续使用original_data
八、互动时间:3 道测试题检验学习成果
- 以下哪个变量名是合法的?( )
A. 2user B. user@name C. user_name D. class
- 执行以下代码后,a 的值是多少?( )
a = 5
a = a + 3
a += 2
A. 5 B. 8 C. 10 D. 15
- 如何将字符串 ‘123’ 转换为整数?( )
A. int (‘123’) B. str (123) C. float (‘123’) D. bool (‘123’)
记得在评论区留下你的答案!
点赞、收藏、关注加转发,后续会有更多精彩的文章!
© 版权声明
文章版权归作者所有,未经允许请勿转载。如内容涉嫌侵权,请在本页底部进入<联系我们>进行举报投诉!
THE END




















暂无评论内容