python中冒号赋值_Python从菜鸟到⾼⼿(8):print函数、赋
值与代码块
1.神奇的print函数
print函数相信读者⼀定对它不陌⽣,因为在前⾯的章节,⼏乎每个例⼦都使⽤了print函数,这个函数的功能就是在控制台输出⽂本。不过print在输出⽂本时还可以进⾏⼀些设置,以及输出多参数字符串。
如果为print函数传⼊多个参数值,那么print函数会将所有的参数值⾸尾相接输出。
# 输出结果:a b c d e
菜鸟教程python函数print("a","b","c","d","e");
我们可以看到,上⾯的这⾏代码输出了a到e,共5个字母。在Python控制台中输出了“a b c d e”。很明显是将这5个字符⾸尾相接输出了。不过这些字母之间⽤空格分隔,这是print函数默认的分隔符,⽤于分隔输出的多个参数值,这个默认设置是⾮常有⽤的,例如,执⾏下⾯的代码,会在等号(=)后⾯加⼀个空格。
print("name =", "Bill")
print("age =", 30)
输出结果如下:
name = Bill
age = 30
其中等号(=)前⾯的空格是第1个参数值包含的。
print函数会为除了第1个参数值以外的其它参数值前⾯添加⼀个空格,这样做,在需要⽤空格分隔的场景下,就不需要在每⼀个参数值前⾯添加空格了。
不过这种默认设置有利有弊,在不需要⽤空格分隔时,print函数仍然会添加空格。例如,要输出字符串“Apple,Orange,Banana”。其中Apple、Orange和Banana之间⽤逗号(,)分隔,逗号(,)与英⽂单词之间没有空格。如果按前⾯的做法,会有如下的代码输出这⾏字符串。
print("Apple",",", "Orange",",","Banana")
输出的结果如下:
Apple , Orange , Banana
print("Apple",",", "Orange",",","Banana")
很明显,逗号(,)前后都有空格。当然,可以将逗号(,)与前⾯的英⽂单词合并,但逗号(,)与后⾯的英⽂单词之间仍然会有空格。
print("Apple",",", "Orange",",","Banana")
解决这个问题的⽅法很多,例如,可以⽤传统的字符串相加的⽅式输出字符串“Apple,Orange,Banana”。
print("Apple" + "," + "Orange" + "," + "Banana")
现在我们要⽤print函数特有的⽅法解决这个问题,就是修改默认的多参数值分隔符。在print函数最后添加“sep=","”,就可以将分隔符从空格改成逗号(,)。现在可以直接使⽤下⾯的代码输出字符串“Apple,Orange,Banana”。
print("Apple", "Orange","Banana", sep=",")
输出结果。
Apple,Orange,Banana
print函数输出字符串时,默认会在字符串结尾添加换⾏符(\n),这样每次调⽤print函数输出字符串,都会另起⼀⾏。不过有时我们希望调⽤多次print函数都在同⼀⾏输出,这时我们可以在print函数最后加上“end=" "”,让最后⼀个输出字符串结尾符变成空格,⽽不是原来的“\n”,当然,也可以将结尾符设成长度为0的字符串,这样多次使⽤print函数输出的结果就会⾸尾相接了,中间没有任何分隔符。
print("a",end="");
print("b",end="");
print("c");
输出结果:abc
下⾯的例⼦演⽰了print函数输出多参数值,修改默认多参数值分隔符,以及修改输出字符串结尾字符的⽅法。
# 输出⽤空格分隔的多参数值
print("name =", "Bill")
# 输出⽤空格分隔的多参数值
print("age =", 30)
# 使⽤加号(+)连接字符串
print("Apple" + "," + "Orange" + "," + "Banana")
# 修改多参数值分隔符为逗号(,),然后输出多参数值
print("Apple", "Orange","Banana", sep=",")
# 修改多参数值分隔符为“&”,然后输出多参数值
print("Can","you","tell","me", "how", "to", "get", "to","the","nearest", "tube", "station", sep="&")
# 修改输出字符串结尾符为空格,这样下⼀次调⽤print函数,就会中同⼀⾏输出内容了
# 运⾏结果:Hello world
print("Hello", end=" ")
print("world")
# 修改输出字符串结尾符为长度为0的字符串,这样下⼀次调⽤print函数,输出的内容不仅会在同⼀⾏,
# ⽽且会⾸尾相接,运⾏结果:abc
print("a",end="");
print("b",end="");
print("c");
程序运⾏结果如下图所⽰。
2.有趣的赋值操作
在很多读者看来,赋值操作是再简单不过了,我们在前⾯的章节也多次使⽤了赋值操作。不过Python语⾔中的赋值操作要有趣的多。例如,可以同时将多个值赋给多个变量。
>>> x,y,z = 1,2,3
>>> print(x,y,z)
1 2 3
在上⾯的代码中,将1,2,3分别赋给了x,y,z三个变量,并输出这3个变量的值。使⽤Python语⾔中的这个特性可以很容易实现两个变量中值的交换。
>>> x,y = 20,30
>>> x,y = y,x
>>> print(x,y)
30 20
这种同时将多个值赋给多个变量的操作,等号(=)右侧的值与左侧的变量个数必须相等,否则会抛出异常。
>>> x,y,z = 1,2
Traceback (most recent call last):
File "", line 1, in
ValueError: not enough values to unpack (expected 3, got 2)
>>> x,y = 1,2,3
Traceback (most recent call last):
File "", line 1, in
ValueError: too many values to unpack (expected 2)
Python语⾔的这种特性称为序列解包(Sequence Unpacking),其实任何⼀个可迭代(Iterable)的对象都⽀持这⼀特性,关于迭代对象(列表、集合等)的详细信息会在后⾯的章节介绍。
Python语⾔还⽀持链式赋值(Chained Assignments)和增量赋值(Augmented Assignments),链式赋值是指将同⼀个值连续赋给多个变量。
x = y = 20
增量赋值是指将变量⾃⾝增加或减⼩(负增量)指定值的表达式的简化形式。例如,x = x + 2,如果
⽤增量赋值表达式,可以写成x += 2,也就是将等号(=)右侧的x省略,并将加号(+)放到等号左侧。
其实前⾯介绍的⼆元运算符都⽀持增量赋值,例如,x = x 20可以写成x = 20,x = x % 3可以写成x %= 3。
下⾯的例⼦演⽰了序列解包、链式赋值和增量赋值的使⽤⽅法。
x,y,z = 1,2,3 # 使⽤序列解包⽅式进⾏赋值
print(x,y,z)
x,y = y,x # 利⽤序列解包交换x和y的值
print(x,y)
# x,y,z = 1,2 # 抛出异常
# x,y = 1,2,3 # 抛出异常
x = y = 20 # 使⽤链式赋值设置x和y
print(x,y)
x *= 2 # 增量赋值
x %= 3 # 增量赋值
print(x)
程序运⾏结果如下图所⽰。
3. ⽤缩进创建代码块
代码块并⾮⼀种语句,⽽是在学习条件和循环语句之前必须要掌握的知识。
代码块是在条件为真(true)时执⾏的⼀组语句,在代码前放置空格来缩进语句即可创建代码块。
注意:使⽤tab字符也可以缩进语句形成代码块。Python将⼀个tab字符解释为到下⼀个tab字符位置的移动,⽽⼀个tab字符为8个空格,不过Python标准推荐使⽤空格缩进的⽅式创建代码块,建议使⽤4个空格缩进的⽅式创建代码块。
代码块的每⾏语句应该缩进同样的量。下⾯的伪代码(并⾮真正的Python代码)展⽰了如何⽤缩进的
⽅式创建代码块。
This is a code line
This is another code line:
This is a block
continuing the same block
the last line of this block
We escaped the inner block
很多编程语⾔使⽤特殊单词或字符来表⽰⼀个代码块的开始,⽤另外的单词或字符表⽰代码块的结束,例如,Pascal语⾔使⽤begin表⽰代码块的开始,使⽤end表⽰代码块的结束,⽽C风格的编程语⾔(如Java、C#、C++等)使⽤⼀对⼤括号表⽰代码块的开始和结束。Python语⾔和这些语⾔都不⼀样,Python语⾔使⽤冒号(:)表⽰代码块的开始,代码块中的每⼀条语句都是缩进的(缩进量相同)。当回退到与快的开始语句同样的缩进量时,就表⽰当前块已经结束。很多集成开发环境(IDE)会帮助⽤户轻松把握缩进,因此读者不必担⼼缩进量不对导致Python程序⽆法编译通过。
我们现在已经了解了如何使⽤Python语⾔中的缩进块,在下⾯⼏节就详细介绍各种缩进块的应⽤。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。