90% 的 Python 小白都不知道的变量魔法,学会这招让你秒变编程达人

你是否曾对着 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 大变量错误

  1. 变量未定义就使用
# 错误示例
print(未定义的变量) # 会报错NameError

# 正确做法

undefined_var = '我已定义'

print(undefined_var)

  1. 数据类型错误
# 错误示例
age = '18'

next_age = age + 1 # 会报错TypeError

# 正确做法

age = '18'

next_age = int(age) + 1

print(next_age) # 输出19

  1. 命名不规范导致的歧义
# 糟糕示例
a = input('输入数字:')

b = a + 10 # 这里a是字符串,会报错

# 改善示例

user_input = input('输入数字:')

number = int(user_input)

result = number + 10

  1. 字符串拼接错误
# 错误示例
name = '小明'

age = 18

print('我叫' + name + ',今年' + age + '岁') # 会报错TypeError

# 正确做法

print('我叫' + name + ',今年' + str(age) + '岁')

# 或使用格式化字符串

print(f'我叫{name},今年{age}岁')

  1. 变量覆盖导致的数据丢失
# 错误示例
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 道测试题检验学习成果

  1. 以下哪个变量名是合法的?( )

A. 2user B. user@name C. user_name D. class

  1. 执行以下代码后,a 的值是多少?( )
a = 5
a = a + 3
a += 2

A. 5 B. 8 C. 10 D. 15

  1. 如何将字符串 ‘123’ 转换为整数?( )

A. int (‘123’) B. str (123) C. float (‘123’) D. bool (‘123’)

记得在评论区留下你的答案!

点赞、收藏、关注加转发,后续会有更多精彩的文章!

© 版权声明
THE END
如果内容对您有所帮助,就支持一下吧!
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容