多重赋值与变量命名规则
1.多重赋值
在一行内同时给多个变量绑定值。
右边先整体求值,再按顺序一一绑定给左边变量,两者互不冲突。左右数量必须相等。
2.多重赋值的数量匹配
左右数量不相等时,报错误ValueError,提示解包时数量不匹配。
左边变量数量和右边值数量必须严格对应。
3.连续等号
多个变量通过连续等号指向内存中同一个对象。
从右向左依次绑定,最终所有变量指向同一对象。
4.连续等号中的重新赋值
对某个变量重新赋值,只是把该标签撕下来贴到新对象上,其他变量仍指向原对象,不受影响。
5.连续等号中的修改内部
如果修改的是可变对象内部元素,因为所有变量指向同一个对象,通过任何一个变量访问都会看到变化。重新赋值与修改内部有本质区别。
6.变量名字符规则
变量名只能由汉字、字母、数字、下划线组成。其他字符(空格、运算符等)会触发语法错误。
7.数字开头禁止
变量名不能以数字开头。Python 读到数字开头会识别为数值字面量,后面接非数字字符导致解析失败。
8.空格禁止
变量名中不能包含空格。空格在 Python 中用于分隔语法元素,出现在变量名中会破坏语法结构。
9.运算符禁止
变量名中不能包含运算符(如减号)。运算符在Python中有运算含义,出现在变量名中会被解析为运算表达式,触发语法错误。
10.保留字禁止
if、for、def 等保留字不能用作变量名。
它们在词法分析阶段就被识别为语法标记,使用会触发SyntaxError。
11.内置函数名覆盖
print、int 等内置函数名可以被赋值覆盖,不报错。但原功能丢失Python 出于信任程序员的设计哲学不对此设限,但不推荐这样做。
12.下划线开头约定
以下划线开头的变量名语法合法,运行上无特殊限制。
社区约定它表示内部变量,外部不应直接依赖。
13.变量名区分大小写
大写字母和小写字母被视为不同字符。
Name 和name 是两个不同的变量名。中文变量名不涉及此问题。
实例1
甲, 乙, 丙 = 1, 2, 3
print("交换前:", 甲, 乙, 丙)
甲, 乙, 丙 = 丙, 甲, 乙
print("交换后:", 甲, 乙, 丙)
交换前: 1 2 3
交换后: 3 1 2
实例2
甲 = 乙 = 丙 = 10
print("初始:", 甲, 乙, 丙)
乙 = 20
print("修改乙后:", 甲, 乙, 丙)
初始: 10 10 10
修改乙后: 10 20 10
实例3
# 合法的变量名
内部变量 = "可以"
_变量 = "也可以"
变量1 = "没问题"
姓名 = "正确"
# 非法的变量名(每行单独运行会报错)
#1变量=3 #数字开头,SyntaxError
#我的 变量=5 #包含空格,SyntaxError
#my-var=4 #包含运算符,SyntaxError
#if=2 #保留字,SyntaxError