目录
定义
-
需要使用def关键字
def fun(id): print(f"函数id={id}") # 调用函数 fun(123) # 输出:函数id=123 # 如果函数后面没有加括号,代表的是其地址值 print( fun ) # 输出:<function fun at 0x000002CDB9D89040>
参数
-
位置参数:
形参和实参的位置是一 一对应的。
-
关键字参数:
通过“形参=实参”的格式传值。
-
默认值参数:
如果传值了就使用传来的值,否则使用默认的。注意:若函数中包含默认参数,要将默认参数放在最后
# 需要两个参数
def fun(ip, port):
print(f'地址为:{ip}')
print(f'端口为:{port}')
# 需要一个参数,当不给第二个参数时会自动赋为默认值
def fun(ip, port=8080):
print(f'地址为:{ip}')
print(f'端口为:{port}')
# 调用第一个函数,并使用关键字传值
fun(ip="127.0.0.1", port=3306)
# 调用第二函数,形式参数使用默认参数
fun("127.0.0.1")
-
不定长参数:
-
*args :接收不定数量的位置参数,以元组的形式保存
-
**kwargs :接受不定数量的关键字参数,以字典形式保存。
-
def fun(*args):
print(args)
# 只能在第二个函数定义之前调用,会与下一个函数起冲突
fun(1, 3, '4', '6') # 输出:(1, 3, '4', '6')
def fun(**kwargs):
print(kwargs)
# 字典序:带有关键字
fun(a=1, b=3, c='4', d='6') # 输出:{'a': 1, 'b': 3, 'c': '4', 'd': '6'}
# 空参调用:不会冲突原因:两个函数都是不定长参数类型
fun() # 输出:{}
返回值
-
使用return关键字。
def max(x,y): return x if x>y else y # 三元运算 print( max("a","悟解") ) # 输出:悟解
匿名函数
fun1 = lambda :"无参"
fun2 = lambda x:f"有参={x}"
fun3 = lambda x,y:f"参数1={x},参数2={y}"
fun4 = lambda *args:f"不定长参数={args}"
print( fun1() ) # 输出:无参
print( fun2("悟解") ) # 输出:有参=悟解
print( fun3("悟","解") ) # 输出:参数1=悟,参数2=解
print( fun4(1,2,3) ) # 输出:不定长参数=(1, 2, 3)
递归
同c语言Java语言相同的理解,下面是斐波那契数列的实现方法:
def fibonacci(x):
if x==1 or x==2:
return 1
else:
return fibonacci(x-1)+fibonacci(x-2)
print( fibonacci(6) ) # 输出:8