目录
一、函数的各类参数
1.1 必备参数(位置参数)
含义:传递和定义参数的顺序及个数必须一致
格式:def func(a, b)
eg:
def funa(name,age,sex):
print(name)
print(age)
print(sex)
funa("xiao ming",18,"男") # 写了几个就必须要传几个,不可以多传,也不可以少传
# 输出结果:
# xiao ming
# 18
# 男
1.2 默认参数
含义:为参数提供默认值,调用函数时可不传该默认参数的值
注意:所有的位置参数必须出现在默认参数前,包括函数定义和调用
eg:
def funb(a=8):
print(a)
funb()
funb(200) # 设置默认值,没有传值会根据默认值来执行代码,传了值根据传入的值来执行代码
# 输出结果:
# 8
# 200
def funb(a=8,b): # 报错,位置参数b必须出现在默认参数a=8之前
print(a)
funb()
1.3 可变参数
含义:可以接收任意数量的位置参数,这些参数在函数内部被打包成一个元组,传入的值的数量是可以改变的,可以传入多个,也可以不传
格式:def func(*args) # args是约定俗成,*号代表是可变参数,无*号,args也同样是位置参数
eg:
def func(*args): # 可以把args改成其他参数名,但是args符合代码的规范性
print(args) # 输出结果:('海绵宝宝', '派大星星', '章鱼哥哥')
print(type(args)) # <class 'tuple'>,以元组形式接收
func("海绵宝宝","派大星星","章鱼哥哥")
1.4 关键词参数
含义:以接收任意数量的关键字参数,这些参数在函数内部被打包成一个字典
格式:def func(**kwargs) # kwargs是约定俗成,**号代表是可变参数,无**号,kwargs也同样是位置参数
注意:传值的时候,需要采用键=值的形式
eg:
def fund(**kwargs): # 可以把kwargs改成其他参数名,但是kwargs符合代码的规范性
print(kwargs)
print(type(kwargs)) # 以字典形式接收
fund() # 空字典
fund(name='xiao ming',age=18) # 传值的时候,需要采用键=值的形式
二、函数嵌套
2.1 嵌套调用
含义:在一个函数里面调用另外一个函数
eg:
def study():
print("好好学习")
def course():
study() # 在course()函数中调用study()函数
print("Python")
course()
# 输出结果:
# 好好学习
# Python
2.2 嵌套定义
含义:在一个函数中定义另外一个函数
注意:不要在内层函数中调用外层函数,会陷入死循环,直到超过递归的最大深度
eg:
def study(): # 外函数
print("好好学习")
def course(): # 内函数
print("Python")
course() # 注意缩进,定义和调用是同级的,调用如果在定义里面则永远调用不到
study()
# 输出结果:
# 好好学习
# Python