Python中函数使用def定义的函数还有就是lambda 定义的函数。
使用def关键字声明的函数,返回使用return关键字,如果到达函数仍然没有遇到return语句,就会自动返回None.
1 | a = None |
函数有两种连接变量的方式:全局变量,本地变量。在使用全局变量的时候,在使用关键字global表示这个变量是个全局变量,如果不使用global会被默认为本地变量。
1 | a = None |
print(a)在python可以返回多个值,也就是相当于一个元组,在C++中有tuple的类型,可供来返回多个值,而在python中我们可以直接返回多个值。
1 | def f(): |
在Python中每一个函数都是一个对象,可以将函数作为一个参数传递到其他的函数中,相当于一种回调的使用。lambda是一种匿名函数,在c++中也有lambda函数,在Python定义匿名函数可以直接使用lambda关键字。匿名函数没有一个显示的__name__属性。
1 | exp_val = lambda x : x*x |
了解到一个新的词语,柯里化函数:部分参数应用,它是通过部分参数应用的方式从已有的函数产生新的函数,内建的functools可以使用pratial函数简化处理:
1 | from functools import partial |
这与C++ 的bind函数很像,可以对函数使用占位符并确定某些位置的参数,形成一个新的函数对象。Python中通过一致的方式遍历序列这也就是迭代器模式。迭代器在Python中是一种用在上下文中向Python解释器生成对象的对象。生成器是构造新的可遍历序列的一种简洁的方式,如果需要创建生成器需要使用yield关键字,即将return换成yield关键字即可。
1 | def squares(n = 10): |
生成器表达式可以很方便的创建生成器,生成器表达式与列表的推导式很相似,只需要将列表推导式的中括号换成小括号就行。生成器表达式也可以代替列表推导式。
1 | gen = (x**2 for x in range(1,11)) |
itertools模块是适用于大多数数据集合算法的生成器,可以查看相应的文档来学习
错误和异常处理使用try/except捕获和处理异常