Python死磕——Python赋值语句、表达式以及打印

Python011

Python死磕——Python赋值语句、表达式以及打印,第1张

a赋值为's' b赋值为'p'

在这个赋值语句中,a匹配第一个字母,剩下的用于匹配b:a赋值为's',b赋值为'pam'

在这个语句中spam ham都会赋值成对相同的字符串对象'lunch'的引用

赋值右侧可以是任何类型的序列,只要长度相等即可

在Python3.0中可以允许我们使用更为通用的扩展解包语法,在python2.x中要求赋值目标中的项数和主体的数目必须一致:否则就会报错

如果想使用通用方法就需要使用分片。

在Python3.0中一个带有单个星号的名称,可以在赋值目标中使用,以指定对于序列的一个更为通用的匹配

带星号的名称可能只匹配单个的项

X+=Y X&=Y X-=Y X|=Y

X =Y X^=Y X/=Y X>>=Y

X%=Y X<<=Y X *=Y X//=Y

增强赋值语句的有点

对于增强赋值语句,对列表是做原处修改的意思。而'+'总是生成新对象。

上述的例子中,由于'+'会生成一个新的列表对象,所以M的值并没有发生改变

犹豫增强赋值对于可变的数据类型时在原处修改值,所以使M的值发生了变化

对列表调用append、sort、reverse这类在原处修改的运算,一定是对列表做原处的修改,但这些方法在列表修改后并不会把列表返回,而是返回的None对象

print默认的把对象打印到stdout流,添加了一些格式化。

格式中sep、end、和file部分如果给出的话,必须作为关键字参数给定。必须使用一种特殊的"name = value"语法来根据名称而不是根据位置来传递参数。

在Python3.0和Python2.6中,打印都默认地发送到标准输出流。也可以发送到一个文本文件’

print只是Python的人性化的特性,它提供了sys.stdout对象的简单接口

将输出流重定向到文件后print语句直接打印内容到文件

对于Python的初学者,在对象的使用过程中,由于对变量的赋值和对象的复制中的概念模糊,导致程序出错。

例如,下面的代码:

输出结果为:

a = [6,2,3,4,5],

b = [6,2,3,4,5],

c = [1,2,3,4,5]

a等于b?True

a等于c?True

a是b?True

a是c? False

可以看到,a,b, c所指向的对象的值都相同(a==b为True). a和b都是代表同一个对象(a is b为True)。当我们通过变量b对该列表进行修改时,由于a也指向该列表,所以当打印a,b时,我们得到相同的值。 而a和c则是代表不同的对象(a is c为False),所以修改b所指向得列表不会改变c梭子乡的列表的值.

在Python中,所有的变量都代表了对象,即便是简单的数字类型(int, float, bool),也是以对象的形式存在的。我们看下面的代码:

输出结果是:

a==b为True

a is b为True

可见,a, b都是指向同一个对象。接下来,进行下面的操作,

输出结果是:

a = 1, b = 2

a is b为False

与前面的列表不同,当我们对b做修改时,实际上是给b赋予了一个新生成的对象,对数值类型来说,所有的数值运算都会创建一个数值对象,并将这个对象指定给变量。因此,a与b指向了不同的对象,数值也不同。

再回过头来看列表对象,

我们知道,b是与a指向同一对象的变量,使用b对该对象进行修改,与使用a对该对象进行修改,效果是完全一样的。如果我们需要需要一个与a完全相同又与a相互独立的列表,那么就需要复制这个对象,也就是新建一个内容和源对象相同的对象。

对于列表来说,最简单的复制方法是通过下标索引的方式创建新的列表:

对于各种数据类型通用的对象拷贝复制,我们可以使用python内建的copy模块。

对于复杂对象(如嵌套列表)的复制,则需要注意区分浅拷贝和深拷贝。我们来看下面的代码:

得到的结果是:

a[0] is b[0]为 True

a[0] is c[0]为 False

a = [[-1, 2, 3], [4, 5, 6]]

b = [[-1, 2, 3], [7, 8, 9]]

c = [[1, 2, 3], [4, 5, 6]]

a[1] is b[1]为False

从上面的代码我们可以看到,copy函数为浅拷贝,只拷贝了对象的外层,而对象内部所包含的对象仍然指向原有的对象。而deepcopy则为深拷贝,对象内部的对象也进行了复制。

以上我们对变量的赋值和对象的复制做了更加深入的分析。在具体的使用中,我们需要根据具体来决定使用赋值、浅拷贝、深拷贝。

题主你好,

python中变量赋值的语法为:

key = value

-----

举例来说, 我给name赋值为张三:

上面可以看出, 在给name赋完值后, 在交互模式下, 直接输入变量名name,就可以回显变量name的值,张三.

*.需要注意的是, 如果是在脚本中写的话, 变量赋值的语法不变(还是 name = "张三"), 但要想输出变量name的值,就不能直接写个name, 而要将变量名name作为print()等这样的输出函数的参数才可以:

a.在脚本中直接输入变量名:

可以看到脚本执行后, 并没有输出name的值.

b.将变量name作为print()函数的参数:

可以看到当将变量name作为print()函数的参数,可以正常输出变量name的值.

-----

希望可以帮到题主, 欢迎追问.