函数分类:内建函数,三方函数,自定义函数
函数的使用描述
直接在函数体的最上面使用三个双引号对注释
说明的信息:
- 函数的功能
- 参数
- 返回值
def caculate(a, b):
"""
:param a:
:param b:
:return:
"""
pass
help(caculate)
Help on function caculate in module main:
caculate(a, b)
:param a:
:param b:
:return:
偏函数
当我们写一个参数比较多的函数时,如果有些参数,大部分场景下都是某一个固定值,那么为了简化使用,就可以创建一个新函数,指定我们要使用的函数的某个参数,为某个固定的值;这个新函数就是偏函数。
借助functools模块的partial
import functools
def test(a, b, c, d=1):
print(a + b + c, d)
newFunc = functools.partial(test, c=5)
print(newFunc,type(newFunc))
newFunc(1,2)
functools.partial(<function test at 0x03D20660>, c=5) <class ‘functools.partial’>
8 1
import functools
numStr = '100010'
result = int(numStr, base=2)
print(result)
int2 = functools.partial(int, base=2)
print(int2(numStr))
34
34
高阶函数
当一个函数A的参数,接收的又是另一个函数时,则把这个函数A称为高阶函数
l = [{'name':'sz', 'age':18},
{'name': 'sz2', 'age': 19},
{'name':'sz3', 'age':18.5},
]
def getKey(x):
return x['age']
result = sorted(l, key=getKey)
print(result)
[{‘name’: ‘sz’, ‘age’: 18}, {‘name’: ‘sz3’, ‘age’: 18.5}, {‘name’: ‘sz2’, ‘age’: 19}]
应用场景:
def caculate(num1, num2, caculateFunc):
print(caculateFunc(num1, num2))
def sum(a, b):
return a + b
caculate(1, 2, sum)
3
返回函数
一个函数内部,它返回的数据是另外一个函数
def getFunc(flag):
# 再次定义几个函数
def sum(a,b,c):
return a + b + c
def jian(a, b, c):
return a - b - c
if flag == '+':
return sum
elif flag == '-':
return jian
result = getFunc('+')
print(result, type(result))
res = result(1, 3, 5)
print(res)
<function getFunc..sum at 0x03C80738> <class ‘function’>
9
匿名函数(lambda 函数)
没有名字的函数
lambda 参数1, 参数2: 表达式
只能写一个表达式,不能直接return
表达式的结果就是返回值
result = (lambda x, y: x + y)(1, 2)
print(result)
newFunc = lambda x, y: x + y
print(newFunc(4,5))
3
9
l = [{'name':'sz', 'age':18},
{'name': 'sz2', 'age': 19},
{'name':'sz3', 'age':18.5},
]
result = sorted(l, key=lambda x: x['age'])
print(result)
[{‘name’: ‘sz’, ‘age’: 18}, {‘name’: ‘sz3’, ‘age’: 18.5}, {‘name’: ‘sz2’, ‘age’: 19}]