这是我参与11月更文挑战的10天,活动详情查看:2021最后一次更文挑战。
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。
自定义函数
定义规则:
- 函数代码块以
def关键词开头,后接函数标识符名称和圆括号()。 - 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数内容以冒号起始,并且缩进。
- 通过函数名加英文状态下的小括号对函数进行调用,如:
function_name()。
def function_name(para):
print("函数体代码")
function_name(1)
函数的参数
形参与实参:
- 形参就是形式上的参数,没有实际的值,通过别人赋值后才有意义,相当于变量。
- 实参就是实际意义上的参数,是一个实际存在的参数。
def test(b): # 形参
print(b)
a = 1
test(a) # 实参
可变类型参数与不可变类型参数:
- 可变类型参数在函数体内对变量重新赋值,相当于重新开辟了一块内存来保存值:
def test(a):
a = 10
print('111',a) # 10
a = 1
test(a)
print('222',a) # 1
不可变类型参数,在函数体内可以改变原有的值:
def test1(li):
li.extend([1,11])
print('111',li) # [1, 2, 3, 1, 11]
li = [1,2,3]
test1(li)
print('222',li) # [1, 2, 3, 1, 11]
位置参数:
- 位置参数也就是实参与实参顺序一一对应,而不论变量名。
默认值参数:
- 形参处进行赋值,所以当调用时不传该参数就默认使用形参处的值。当调用时传了该参数,则覆盖掉默认参数:
def test2(a,b=2):
a = a+b
print(a,b)
a = 1
test2(a) # 3 2
test2(a,10) # 11 10
可变长度参数:
*args接收时会转为元组数据类型:
def test3(*args):
print(args)
# test3() # ()
test3(1,2,3) # (1, 2, 3)
**kwargs接收时会转为字典数据类型:
def test4(**kwargs):
print(kwargs)
test4(a=1,b=2,c=3) # {'a': 1, 'b': 2, 'c': 3}
解包:
def test5(a,b,c):
print(a,b,c)
tu = (1,2,3)
test5(*tu)