1. 什么是函数?
函数是带名字的代码块,用于完成具体的工作。要执行函数定义的特定任务,可调用该函数。需要在程序中多次执行同一项任务时,无须反复编写完成该任务的代码,只需要调用执行该任务的函数,让Python运行其中的代码即可
2. 函数的定义
定义完函数后,函数是不会自动执行的,需要调用它才可以
def say_hello(): #函数名 print('hello') #函数体 say_hello() #调用函数
def create_room(): print('准备创建房间') print('正在创建房间') print('完成创建房间') def create_stair(): print('准备创建楼梯') print('正在创建楼梯') print('完成创建楼梯') def create_building(): create_room() create_stair() create_building() """ 运行结果: 准备创建房间 正在创建房间 完成创建房间 准备创建楼梯 正在创建楼梯 完成创建楼梯 """
3. 函数的参数
a. 普通参数
单个参数
def say_hello(name): print(f'hello, {name}') say_hello('Elsa') # 运行结果: hello, Elsa
多个参数
def create_door(width, height): print(f'门的宽是{width}m,高是{height}m') create_door(2, 1)
b. 默认参数:
如果默认参数不传递新值, 则它的值为默认值, 否则,默认值为新传递的值
def day_salary(day, salary=11000): print(f'平均每天的薪水是{salary / day:.2f}元') day_salary(22) # 运行结果:平均每天的薪水是500.00元 day_salary(22, 14000) # 运行结果:平均每天的薪水是636.36元
c. 关键字传参
无须考虑函数调用中的参数顺序,还清楚地指出了函数调用中各个值的用途
def full_name(firstname, lastname): print(f'Your full name is {firstname} {lastname}') full_name(lastname='Wong', firstname='Elsa') # 运行结果:Your full name is Elsa Wong
d. 不定长参数
*args: 元组
def function_a(*args): print(args) for arg in args: print(arg) function_a('hello', 'Elsa') """ 运行结果: ('hello', 'Elsa') hello Elsa """
**kwargs: 字典
{'firstname': 'Elsa', 'lastname': 'Wong'} firstname->Elsa lastname->Wong
def function_c(width, height, *args, **kwargs): print(width) print(height) print(args) print(kwargs) function_c(2, 3, 'hello', 'world',firstname='Elsa', lastname='Wong') """ 运行结果: 2 3 ('hello', 'world') {'firstname': 'Elsa', 'lastname': 'Wong'}