本文阐明python中变量赋值的形式,并阐明一些细节。

python中变量赋值的几种形式

1 x = \"大众long\"大众 # (1).基本形式2 x, y = \"大众long\公众, \"大众shuai\"大众 # (2).元组对应赋值3 [x, y] = [\"大众long\"大众, \公众shuai\"大众] # (3).列表对应赋值4 a, b, c, d = \公众long\"大众 # (4).序列赋值5 a, b = 'long' # (5).解包赋值6 a = b = \"大众long\公众 # (6).多目标赋值7 a += 3 # (7).二元赋值表达式8 ((a, b), c) = ('lo','ng') # (8).嵌套赋值序列

把稳:python的数值是不可变工具,无法在原处修正数据,以是不支持自增、自减。

php几种变量赋值python中变量赋值的8种情势须要留意哪些细节 Docker

1 a++2 ++a3 a--4 --b

个中(1)-(3)无需过多阐明,唯一须要把稳的是,当利用逗号的时候,python总会临时或永久地建立成tuple来保存元素,以是x, y = \"大众long\"大众, \公众shuai\公众在内部完备等价于(x, y) = (\公众long\公众, \"大众shuai\"大众)。

实际上,列表元素也可以赋值给元组,或者元组赋值给列表,只要两边的序列元素个数能对应,无所谓旁边两边的序列类型:

1 >>> (x,y) = (1,2)2 >>> (x,y) = [1,2]3 >>> [x,y] = (1,2)4 >>> [x,y] = [1,2]5 >>> (x,y) = 'ab'6 >>> [x,y] = 'ab'

对付(4)赋值办法,是序列赋值的行为,在python中,只假如序列,都可以这样赋值。
正如这里的变量赋值情形等价于:

1 a = \公众l\公众2 b = \"大众o\"大众3 c = \公众n\公众4 d = \"大众g\"大众

如果换成其它的序列也一样。
例如:

1 a, b, c, d = (\"大众shell\"大众,\公众perl\"大众,\"大众php\"大众,\公众python\"大众)2 a, b, c, d = [\公众shell\"大众,\"大众perl\"大众,\"大众php\"大众,\公众python\公众]

但是变量和序列中的元素必须逐一对应。
如果变量名与元素个数不同,则会报错,除非只有一个变量名,这表示将全体序列赋值给这个变量。

如果想要将序列中的元素赋值给不等的变量,可以考虑先将序列进行切片。

1 >>> str='long'2 >>> a, b, c = list(str[:2]) + [str[2:]]3 >>> a,b,c4 ('l', 'o', 'ng')

(5)的赋值办法则恰好是让变量名少于元素个数的办法。
这种赋值形式称为序列解包(下文会专门阐明这种赋值办法),多出来的元素会全部以列表的办法赋值给末了一个变量名。
正如这里等价于:

1 a=\"大众l\"大众2 b=[\公众o\"大众, \"大众n\公众, \"大众g\"大众]

下面两种赋值办法得到的结果是一样的,a是字符串,b是列表,b都包含3个元素:

1 a, b = (\公众shell\"大众,\"大众perl\公众,\"大众php\公众,\"大众python\"大众)2 a, b = [\"大众shell\"大众,\公众perl\公众,\"大众php\公众,\"大众python\公众]

赋值的结果:

1 shell2 ['perl', 'php', 'python']

(6)的赋值办法等价于:

1 b = \"大众long\公众2 a = b

python赋值时,总是先打算\"大众=\公众右边的结果,然后将结果按照赋值办法赋值给\"大众=\"大众左边的变量。
以是,这里的过程是先将\公众long\"大众赋值给变量b,再将b赋值给变量a。

由于总是先打算右边,以是交流变量非常的方便。

1 a, b = \"大众a\公众, \"大众b\公众23 # 交流:4 a, b = b, a56 # 交流结果:7 a = \公众b\"大众8 b = \"大众a\"大众

(7)的赋值办法a += 3在结果上等价于a = a + 3,在其它措辞中这两种赋值办法是完备等价的,但在python中这种增强赋值的办法要比后者更高效率些,为什么效率要高一些,下文会稍作阐明。
在很大程度上来说,Python中只假如简化的形式,基本上都比更繁芜的等价形式效率更高。

(8)的赋值办法((a, b), c) = ('lo', 'ng')是将序列进行嵌套序列赋值,将'lo'赋值给元组(a, b),'ng'赋值给c,元组又进一步赋值a='l', b='o'。
这种赋值办法在python中很好用,特殊是在表达式中赋值的时候,比如for循环和函数参数:

1 for (a, b, c) in [(1, 2, 3), (4, 5, 6)]:...2 for ((a, b), c) in [((1, 2), 3), ((4, 5), 6)]:...3 4 def f(((a, b), c)):...5 f(((1, 2), 3))

以为文章还可以的话不妨点个赞,有任何见地或者意见欢迎大家评论!

我是一名python开拓工程师,整理了一套python的学习资料,如果你想提升自己,对编程感兴趣,关注我并在后台私信小编:“08”即可免费领取资料!
希望对你能有所帮助!