ch4-深入py流程控制

4.1 if语句
if 条件:
    语句
elif 条件:
    语句
else:
    语句

没有switch语句

4.2 for语句
for 项 in 序列:
    语句
在迭代中修改序列是不安全的,可以使用切片复制需要修改的序列作为迭代的对象

4.3 range()函数
range(i)        生成包含0到i - 1的一个可迭代的对象
range(i, j)     生成包含i到j - 1的一个可迭代对象
range(i, j, k)  生成包含i到j - 1,步进为k的一个可迭代对象

4.4 break,continue,循环中的else
break,continue的作用与C中无异
for中的else当循环条件不满足的时候会被执行

4.5 pass语句
语法占位符

4.6 定义函数
def 函数名(参数):
    语句
在函数的语句的第一行可选的有函数的文档字符串
函数调用回味函数的局部变量生成一个新的符号表,引用变量的时候遵守就近原则,
也就是先查找函数的局部符号表,然后是外层函数的符号表,再者是全局符号表,
最后是语言内置的符号表

非函数局部变量不能直接被赋值,但可以被引用。因为,在函数内,如果对一个新的
符号赋值,就会将这个符号添加到函数的局部符号表中,这样的话,引用的符号就不是
函数外部的符号了,所以也就不可能为外部符号赋值;另一方面,如果不是为符号赋值
而只是引用这个符号的话,python就会按照就近原则来查找这个符号,因此是可以引用
到外部的符号的。

在函数调用的时候,函数的局部变量表就会被创建,而且,函数的形参会被添加到局部
符号表中。

在A函数中定义B函数(没有错,可以在函数中定义函数,就像racket中一样)的时候,
会在A函数的符号表中添加上B函数的函数名这个符号,你可以将B函数赋值给其他的
变量,就像给其他变量赋值一个整数一样

当函数没有显式返回值或者return语句后没有值的时候,这个函数返回一个None,None
是一个python语言内置的符号

4.7 深入函数定义
4.7.1 默认参数值
可以为形参给定默认的值,就像在其他语言中一样,有默认值的形参后面不能出现没有
默认值的形参。py中形参默认值只被赋值一次,所以如果默认形参在函数中被改变了,
那么这种改变会在下一次调用中起作用。

4.7.2 关键字参数
函数可以通过‘形参=值’这种方式来调用。比如
def f(val):
    print(val)
f(val = 2)
关键字参数必须在位置参数后面,位置参数就是根据位置确定值的形参。关键字参数
之间的顺序并不重要。
关键字参数的形式有点像字典的形式,所以如果参数中有字典参数的话就会将所有
非形参的关键字参数添加到字典参数中(字典参数使用前缀两个*来表示),比如:
def f(val, **kv):
    for k, v in kv.items():
        print(k, v)
f(i = 1, j = 2, val = 3, k = 4)

4.7.3 可变参数列表
当需要向函数传递任意数量的参数的时候,向函数传递一个序列类型变量,或者直接
将形参定义为可变参数列表的形参。将形参前缀上一个*,函数就会将这个形参视为一个
元组,可以向其传递任意数量的参数,比如:
def sum(*vals):
    s = 0
    for v in vals:
        s += v
    return s
print(sum(1, 2, 3, 4))

4.7.4 参数列表的分拆
如果一个函数调用需要用到某个列表里面的所有值,那么,可以使用分拆列表来将这些
值从列表中分拆出来,这只需要在列表变量前加上*,比如:
lst = [1, 10, 2]
print(range(*lst))
同样的,可以使用**来分拆字典

4.7.5 lambda形式
函数其实是一个lambda变量,就像在racket中一样,所以在函数中定义函数其实就是在
函数中定义一个lambda变量,然后使用某个符号引用这个lambda变量而已。例如:
def make_incrementor(n):
    return lambda x: x + n
def add_2(x):
    return make_incrementor(2)(x)

4.7.6 文档字符串

4.7.7 函数注解


py文档http://www.pythondoc.com/pythontutorial3/controlflow.html


基于cc4.0协议

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值