函数
定义:
def function(x, y):
body
return n
one = function(a, b)
默认返回值: None, 类型: <class 'NoneType'> 假
例子:
def my_len(data):
"""
求字符串长度的函数
:param data: 传入参数字符串
:return: 返回结果
"""
n = 0
for i in data:
n += 1
print(f"We have {n} letter(s) in {data}")
return None
my_len("eraser")
print(type(my_len("administration")))
说明文档 docstrings: 多行注释,自动生成: :param data: :return:
函数内全局变量赋值: 用globa关键字
num = 1
def my_function():
global num
num = 3
多返回值
def func_test():
return 1, 2
print(func_test())
# (1, 2)
类型: <class 'tuple'>
多参数
- 位置参数:根据定义的参数个数、位置一致
- 关键字参数:key=value 无顺序 *args
- 参数缺省:定义默认值,位置在最后
- 不定长参数:
- *args 一个元组
- **kwarg 键值对 参数组成字典
- 调用时:
- *容器 unpack成位置参数
- **容器 字典-> 关键字参数
def func_test2(name, num, isTrue=True):
print(f"Hello {name}, the num is {num} and it's {isTrue}")
func_test2("Tom", isTrue=False, num=114154)
func_test2("Jey", 11)
def func_test3(*args, **kwargs):
print(f"The args is {args}, the K-W args is {kwargs}")
func_test3(1, 2, 3, stu_name="Alex", age=123)
def Aniki(a, *b, **c):
z = [a, b, c]
print(z)
# a:一个位置参数 b:元组 c:所有键值对
Aniki(1, 2, "b", x="123", y="456")
# [1, (2, 'b'), {'x': '123', 'y': '456'}]
强制位参数
def f(a, b, /, c, d, *, e, f):
print(a, b, c, d, e, f)
形参 a 和 b 必须使用指定位置参数,c 或 d 可以是位置形参或关键字形参,而 e 和 f 要求为关键字形参
匿名函数
关键字 lambda 临时使用一次
引用 = lambda 参数列表:表达式
print(list(map(lambda x: x*x, [1, 2, 3, 4, 5])))
# [1, 4, 9, 16, 25]
print(reduce(lambda x, y: x + y, [1, 2, 3, 4, 5]))
# 15
闭包
在一个函数内部定义另外一个函数,并且把这个函数对象作为返回值
需要使用外层函数的变量(包括参数)
def increment(n):
return lambda x:x+n
f=increment(4)
nonlocal 外部变量