python中表达式赋值与链式赋值的区别

python支持普通赋值,链式赋值,增量赋值,但不支持表达式赋值。

普通赋值:x  =1

增量赋值:x = 1 ; x  += 1

链式赋值---同时对几个变量进行赋值,例子如下

>>> x = 1
>>> x = y = x + 1
>>> x,y
(2, 2)

在其它语言,如C语言中,支持表达式赋值,就是说,表达式是有返回值的,例如x = 1;y = (x += 1)),那么x,y的值都是2,在python中,会发生什么情况呢?

>>> x = 1
>>> y = (x += 1)
SyntaxError: invalid syntax
>>> y = (x = x+1)
SyntaxError: invalid syntax
>>> 

上面的例子说明一个问题:python不支持表达式赋值。

python还支持多元赋值,在一句话中,对多个变量进行赋值,eg:x ,y ,z = 1,2,"xyz"(一般x =1;y =2; z ="xyz"),或者是使用如下的表达式

 >>> (x,y,z) = (3,4,5)
>>> x
3
>>> y
4
>>> z
5
>>> 
时间: 2024-11-05 19:35:27

python中表达式赋值与链式赋值的区别的相关文章

python链式赋值有哪些注意事项?

在我们在python开发http://www.maiziedu.com/land/python/中, 经常遇到赋值语句, 就像下面的那样: a = 3b = 3 可能你会觉得我又要说什么变量赋值就是引用, 这么简单的知识就不讨论啦, 相信聪明的大家肯定都知道的, 本文和大家分享的是链式赋值相关内容,一起来看看吧,希望对大家学习和使用这部分内容有所帮助. 先科普下什么是 链式赋值 : 链式赋值: 同时对几个变量进行赋值 例如: a = b = c = 3 好了, 现在正式进入正题: >>>

pyhton链式赋值在可变类型/不可变类型上的区别以及其本质

关于链式赋值的一些注意点: a=[]b=[]x=y=[]print(a==b) #Trueprint(x==y) #Trueprint(a is b) #Falseprint(x is y) #Truea.append(1)x.append(666)print(a,b,x,y)输出结果为:[1] [] [666] [666] aa=1bb=1cc=dd=1print(aa==bb) #Trueprint(cc==dd) #Trueprint(aa is bb) #Trueprint(cc is

DataFrame 避免链式赋值

在运行以下Python代码时,Pandas抛出SettingWithCopyWarning警告: row_data = df_pred.loc[key] row_data['col'] = new_value df_pred是一个数据框,根据索引从数据框中获取一行,然后对该行的一个字段进行赋值,警告的详细内容如下: SettingWithCopyWarning:A value is trying to be set on a copy of a slice from a DataFrame.Tr

python中urllib, urllib2,urllib3, httplib,httplib2, request的区别

permike原文python中urllib, urllib2,urllib3, httplib,httplib2, request的区别 若只使用python3.X, 下面可以不看了, 记住有个urllib的库就行了 python2.X 有这些库名可用: urllib, urllib2, urllib3, httplib, httplib2, requests python3.X 有这些库名可用: urllib, urllib3, httplib2, requests 两者都有的urllib3

python中生成器对象和return 还有循环的区别

python中生成器对象和return 还有循环的区别 在python中存在这么一个关键字yield,这个关键字在项目中经常被用到,比如我写一个函数不想它只返回一次就结束那我们就不能用return,因为return后面就不能跟任何东西,意味着函数的结束.那么我们完全可以这么做: def main(): for i in range(1,100): yield i 这样就等于生成了一个循环返回对象,特别在爬虫scrapy中较为常见!yeild和return还有for 上本质有什么区别呢?其实很简单

python中a+=a和a=a+a的区别

+= 是 + 的一种升级版本, 具有能把执行后的结果再写回传递来的变量本身的功能, 可变变量自身有比不可变变量多一个魔法方法 _iadd_, += 操作调用 _iadd_方法,没有该方法时,再尝试调用_add_方法, 不可变变量没有_iadd_方法 举例: # a += b >>> a1 = range(3) >>> a2 = a1 >>> a2 += [3] >>> a1 [0, 1, 2, 3] >>> a2 [

python中List append()、extend()和insert()的区别

Python中向列表增加更多数据时,有append().extend()和insert()等方法 其中最常用的是list.append(obj) 向列表的尾部添加一个新的元素. 需要一次性添加多个元素时可以使用list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) 示例及结果如下: 1 list = [1,2,3,4] 2 list.append([5,6,7]) 3 print(list) 4 list.extend([8,9,10]) 5 pri

Python中模块(Module)和包(Package)的区别

1. 模块(Module) 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式.在Python中,一个.py文件就称之为一个模块(Module). 使用模块有什么好处? 最大的好处是大大提高了代码的可维护性.其次,编写代码不必从零开始.当一个模块编写完毕,就可以被其他地方引用.我们在编写程序的时候,也经常引用其他模

python中的可变与不可变对象的区别

Python中不可变对象:int, float, str, tuple, bool Python中可变对象: list, dict, set 不可变对象: a = 5 PK a= 4: 在5的内存地址和4的内存地址是不同的 可变对象: list = [1, 2, 3, 4] PK list.append(5, 6): 这中的list的内存地址是相同的 * 放在dict 和 set中的元组或者列表中的每一个对象都是用作为key的.如(1,2,3)可以,但(1,[2,3])则不可以[2,3]是可变的