Python入门指南学习笔记-3-流程控制

for循环的else子句

for循环可以有一个else子句;它在循环迭代完整个列表时执行,但循环被break中止的情况下不会执行。以下搜索素数的示例程序演示了这个子句:

<pre>

for n in range(2, 10):
... for x in range(2, n):
... if n % x == 0:
... print n, 'equals', x, '*', n/x
... break
... else:
... # loop fell through without finding a factor
... print n, 'is a prime number'
...
2 is a prime number
3 is a prime number
4 equals 2 * 2
5 is a prime number
6 equals 2 * 3
7 is a prime number
8 equals 2 * 4
9 equals 3 * 3
</pre>

函数默认值解析

函数默认值会解析,并且只赋值一次

<pre>
i = 5
def f(arg=i):
print arg
i = 6
f()

结果如下:

5
</pre>

默认值只赋值一次,默认值为引用对象时如下:

def f(a, L=[]):
    L.append(a)
    return L
print f(1)
print f(2)
print f(3)
# 结果如下:
[1]
[1, 2]
[1, 2, 3]

想想如何改进...

函数参数

def parrot(voltage,action='voom',*arguments,**keywords):

分别是参数、可选参数、可变参数,关键字参数
可变参数接收一个元祖,关键字参数接收一个字典

Lambda

通过lambda关键字,可以创建短小的匿名函数。这里有一个函数返回它的两个参数的和:lambda a,b:a+b 。分号前面是参数,分后后面是返回值。Lambda 形式可以用于任何需要的函数对象。出于语法限制,它们只能有一个单独的表达式。
lambda 形式可以从外部作用域引用变量:

>>> def make_incrementor(n):
...    return lambda x: x + n
...
>>> f = make_incrementor(42)
>>> f(0)
42
>>> f(1)
43
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容