第五章 条件、循环和其他语句
5.1 print和import
1、sep打印分割样式:
'''
print("a","b","c",sep="_")
'''
a_b_c
------------------
(program exited with code: 0)
请按任意键继续. . .
2、end打印的末尾格式
'''
print("a","b",end=(""))
print("a","b",end=("\t"))
print("a","b",end=("*"))
print("a","b",end=("\n"))
print("a","b","c",sep="_")
'''
a ba b a b*a b
a_b_c
------------------
(program exited with code: 0)
请按任意键继续. . .
其实,print是python的一个内置函数,它的参数可选,它的原函数为:
print(self, *args, sep=' ', end='\n', file=None)
#以下是原注释。
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default. #默认情况下,将值打印到流或sys.stdout文件。
Optional keyword arguments: #可选关键字参数:
file: a file-like object (stream); defaults to the current sys.stdout. #file: 一个类似文件的对象(流);默认为当前sys.stdout。
sep: string inserted between values, default a space. # sep:在输出字符串之间插入值 ,默认为空。
end: string appended after the last value, default a newline. #end:附加在最后一个值之后的字符串,默认为换行符。
flush: whether to forcibly flush the stream. #flush:是否强制输出流。(默认为False)
5.1.2 导入时重命名
从模块导入时,通常使用①import somemodule 或使用②from somemodule import somefunction 或
③from somemodule import somefunction, anotherfunction, yetanotherfunction 或④from somemodule import *
仅当你确定要导入模块中的一切时,采用使用最后一种方式。 如果有两个模块,包含同名函数,就第一种方式导入相应的模块,但还有一种办法:在语句末尾添加as子句并指定别名。下面是一个导入整个模块并给它指定别名的例子:
'''
import math as abcde
print(abcde.sqrt(9))
'''
指定abcde为math模块的别名。输出结果为:
3.0
------------------
(program exited with code: 0)
请按任意键继续. . .
也可以为导入的函数指定别名。
'''
from math import sqrt as abcd
print(abcd(9))
'''
3.0
------------------
(program exited with code: 0)
请按任意键继续. . .
5、赋值魔法
5.2.1序列解包
可同时(并行)给多个变量赋值:
'''
x,y,z,=2,3,4
print(x,y,z,
)
'''
2 3 4
------------------
(program exited with code: 0)
请按任意键继续. . .
使用这种方式还可交换多个变量的值。
'''
x,y,z=z,y,x
print(x,y,z)
'''
4 3 2
------------------
(program exited with code: 0)
请按任意键继续. . .
实际上,这里执行的操作称为序列解包(或可迭代对象解包):将一个序列(或任何可迭代对象)解包,并将得到的值存储到一系列变量中。
这在使用返回元组(或其他序列或可迭代对象)的函数或方法时很有用。假设要从字典中随便获取(或删除)一个键-值对,可使用方法popitem,它随便获取一个键-值对并以元组的方式返回。接下来,可直接将返回的元组解包到两个变量中。
这让函数能够返回被打包成元组的多个值,然后通过一条赋值语句轻松地访问这些值。要解包的序列包含的元素个数必须与你在等号左边列出的目标个数相同,否则Python将引发异常。
'''
sc={"a":10,"b":20,"c":30}
print(sc.popitem())
k,v=sc.popitem()
print(k,v)
'''
('c', 30)
b 20
------------------
(program exited with code: 0)
请按任意键继续. . .
但是,可使用星号运算符(*)来收集多余的值,这样无需确保值和变量的个数相同。*可以放在任何位置上。
'''
a,b,*c=[1,2,3,4,5,6]
print(*c)
names="张三 李四 王五 马六 刘七"
i,*j,k=names.split()
print(j)
'''
3 4 5 6
['李四', '王五', '马六']
------------------
(program exited with code: 0)
请按任意键继续. . .
5.2.2链式赋值
链式赋值是一种快捷方式,用于将多个变量关联到同一个值,形如:x=y=z=modeFun()
5.2.3 增强赋值
即:x+=2,x*=3,x/=1等等。
5.3代码块
在有些编程语言中代码块是用一对大括号({})表示的,在python中代码块是通过缩进代码(即在前面加空格)来创建的。使用冒号:指出接下来是一个代码块,并将该代码块中的每行代码都缩进相同的程度。发现缩进量与之前相同时,你就知道当前代码块到此结束了。