十二、Python的语句与语法-赋值与表达式

一、赋值语句简介

在Python里,赋值语句与其它语言有所不同,它不是直接把相应的值赋给变量,而是把对象的地址赋给变量,让变量可以找到相应的对象,这个叫做对象的引用。

• 赋值语句建立对象引用值。Python赋值可以理解成存储了对象的指针

• 变量名在首次赋值时会被创建。因为变量本身没有类型,所以不需要提前创建

• 变量名在引用前必须先赋值。

• 执行隐式赋值的一些操作。所谓的隐式赋值,就是函数调用、模块倒入、类的定义、for 循环等。

二、赋值语句形式

_text = ‘Text’ :基本形式

_text1, _text2 = ‘Text1’, ‘Text2’ :序列赋值-元组赋值运算

[_text1, _text2] = [‘Text1’, ‘Text2’] :序列赋值-列表赋值运算

t1, t2, t3, t4 = ‘TEXT’ :序列赋值-字符串赋值运算

t1, *t2 = ‘TEXT’ :扩展的序列解包(Python 3.x)

t1 = t2 = ‘TEXT’ :多目标赋值运算

t1 += 1 :增强赋值运算

三、序列赋值

>>>_1st=1

>>>_2nd=2

>>>first,second=_1st,_2nd

>>>first

1

>>>second

2

变量的个数与后面序列的元素个数必须一致。

>>>[a,b,c] = (1,2,3)

>>>[a,b,c][1,2,3]

>>>[a,b,c]='abc'

>>>[a,b,c]['a','b','c']

1、不对称

我们有三个变量,a,b,c。我们想把text存储到这三个变量里:

>>>a,b,c='text'[],'text'[1],'text'[2]

>>>a,b,c('t','e','x')

>>>a,b,c=list('text'[:2])+['text'[2:]]

>>>a,b,c('t','e','xt')

>>>a,b='text'[:2];c='text'[2:]

>>>a,b,c('t','e','xt')

>>>(a,b),c='text'[:2],'text'[2:]

>>>a,b,c('t','e','xt')

2、迭代用法

>>>mylist=[(1,2,3),(4,5,6),(7,8,9)]

>>>fora,b,cinmylist:

...print(a,b,c)...

123

456

789

这个可以理解为:每次迭代的时候,提取一个列表里的元素。第一次为例:提取(1,2,3),然后执行a,b,c = (1,2,3)。因此第一次a引用的值是1,b为2,c为3。以此类推。

>>>L=[1,2,3,4]

>>>whileL:

...T,L=L[],L[1:];print(T,L)...

1[2,3,4]

2[3,4]

3[4]

4[]

3、扩展序列解包

之前变量与对象不对称的时候,需要特殊操作。这个在Python3.x之后有了新的用法。

>>>a,*b,c=1,2,3,4

>>>a,b,c(1, [2,3],4)

之前的循环方法,在这里也可以使用扩展序列解包:

>>>L=[1,2,3,4]

>>>whileL:

...T,*L=L;print(T,L)...

1[2,3,4]

2[3,4]

3[4]

4[]

扩展解包当遇到只有一个元素,或者没有元素的时候即在边界情况的时候:

>>>T=(1,2)

>>>a,*b=T

>>>a,b(1, [2])

>>>a,b,*c=T

>>>a,b,c(1,2, [])

>>>*a,b,c=T

>>>a,b,c([],1,2)

>>>*a=T File"", line1

SyntaxError: starred assignment target must beina listortuple

>>>*a,=T

>>>a[1,2]

四、多目标赋值

多目标赋值就是按下面方式赋值:

>>>a=b=c='Dora'

这个时候,跟之前说的,会把所有到对象的引用赋给a, b, c三个变量。因此这个时候这三个都是完全一样的。

>>>a=b=c='Dora'

>>>aisb

True

>>>bisc

True

>>>aisc

True

上边赋值相当于:

c ='Dora'

b = ca = b

关于共享引用,请查看之前笔记:“类型与运算-其它”中的引用与赋值。

五、增强赋值语句

下面的几个语句就是增强赋值语句:

X += Y,X -= Y,X = Y

X /= Y,X *= Y,X //= Y

X %= Y,X &=Y,X |= Y

X ^= Y,X >= Y

举个例子: X += 1 我们可以认为这个是 X = X + 1, 但在列表中是有区别的。

>>>M=L=[1,2]

>>>L=L+[3,4]

>>>M,L([1,2], [1,2,3,4])

>>>M=L=[1,2]

>>>L+=[3,4]

>>>M,L([1,2,3,4], [1,2,3,4])

六、变量命名规则

变量名可以是大小写字母,数字和下划线“”。但只能以大小写字母或下划线开头,不能以数字开头。变量名是区分大小写的。保留字符是不能使用的。

Python 3.0里的保留字符:

False,class,finally,is,

return,None,continue,for,

lambda,try,True,def,

from,nonlocal,while,and,

del,global,not,with,

as,elif,if,or,yield,

assert,else,import,pass,

break,except,in,raise

在Python2.7里exec,print是保留字段,但nonlocal, False, True不是。

特殊变量名:

_main等,前后都有两个下划线的变量名,有很多是有特殊意义的。

七、表达式语句

表达式,就是等号右边的部分。表达式本身不会存储:

>>>d=print('Dora')Dora

>>>d

>>>print(d)

None

常见表达式语句:

Add(1, 2):函数调用

MyClass.Add(1,2):方法调用

Text:打印变量(交互模式)

print(‘My text’):打印操作

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190201B0MTHG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励