函数与Lambda表达式
1. 函数
还记得 Python 里面“万物皆对象”么?Python 把函数也当成对象,可以从另一个函数中返回出来而去构建高阶函数,比如:
- 参数是函数
- 返回值是函数
函数的定义
- 函数以
def
关键词开头,后接函数名和圆括号()。 - 函数执行的代码以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回
None
。
def functionname(parameters): "函数_文档字符串" function_suite return [expression]
函数的调用
【例子】
def printme(str): print(str) printme("我要调用用户自定义函数!") # 我要调用用户自定义函数! printme("再次调用同一函数") # 再次调用同一函数 temp = printme('hello') # hello print(temp) # None
【例子】
def add(a, b): print(a + b) add(1, 2) # 3 add([1, 2, 3], [4, 5, 6]) # [1, 2, 3, 4, 5, 6]
函数文档
def MyFirstFunction(name): "函数定义过程中name是形参" # 因为Ta只是一个形式,表示占据一个参数位置 print('传递进来的{0}叫做实参,因为Ta是具体的参数值!'.format(name)) MyFirstFunction('老马的程序人生') # 传递进来的老马的程序人生叫做实参,因为Ta是具体的参数值! print(MyFirstFunction.__doc__) # 函数定义过程中name是形参 help(MyFirstFunction) # Help on function MyFirstFunction in module __main__: # MyFirstFunction(name) # 函数定义过程中name是形参
函数参数
Python 的函数具有非常灵活多样的参数形态,既可以实现简单的调用,又可以传入非常复杂的参数。从简到繁的参数形态如下:
- 位置参数 (positional argument)
- 默认参数 (default argument)
- 可变参数 (variable argument)
- 关键字参数 (keyword argument)
- 命名关键字参数 (name keyword argument)
- 参数组合
1. 位置参数
def functionname(arg1): "函数_文档字符串" function_suite return [expression]
arg1
- 位置参数 ,这些参数在调用函数 (call function) 时位置要固定。
2. 默认参数
def functionname(arg1, arg2=v): "函数_文档字符串" function_suite return [expression]
arg2 = v
- 默认参数 = 默认值,调用函数时,默认参数的值如果没有传入,则被认为是默认值。- 默认参数一定要放在位置参数 后面,不然程序会报错。
【例子】
def printinfo(name, age=8): print('Name:{0},Age:{1}'.format(name, age)) printinfo('小马') # Name:小马,Age:8 printinfo('小马', 10) # Name:小马,Age:10
- Python 允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
【例子】
def printinfo(name, age): print('Name:{0},Age:{1}'.format(name, age)) printinfo(age=8, name=&#