函数的几种参数类型
# 函数
# (1 以def开头,后接函数标识符和圆括号()
# (2 所有传入的参数和自变量都必须在圆括号中,可以在圆括号中定义参数
# (3 函数内容以冒号开始,并且要缩进
# (4 return 表达式 ,结束函数,选择性返回一个值给调用方,不带表达式的return相当于返回None
# (5 函数的参数有必须参数、关键字参数、默认参数、可变参数、组合参数
# 1、必须参数。必须以正确的顺序传入参数,传入的数量也必须一样。
def paerameone(str):
print('传入的参数:%s' % str)
paerameone('hello')
# 当不传入参数
# paerameone() 提示缺少参数:missing 1 required positional argument: 'str'
# 当传入的参数大于定义函数的参数数量
# paerameone('1','2') 提示paerameone() takes 1 positional argument but 2 were given
# 2、关键字参数。函数调用关键字参数确定传入的参数值。使用关键字参数允许调用函数时参数的顺序与声明式不一致。
def person(age,name):
print('age是%s,name是%s'%(age,name))
person(18,'小明') # 使用必须参数,传入正确的顺序、数量
person(age=20,name='小红')
# 3、默认参数。调用函数时,如果没有传递参数,则使用默认参数。即在定义参数时,给参数一个默认值,如果调用的函数没有传参,则使用默认的参数。
# 并且默认参数要放在非默认参数后面
def default(age,name='静静'):
print('age是%s,name是%s'%(age,name))
default(18) # age是18,name是静静
default(age=19) # age是19,name是静静
# 4、可变参数。如果需要一个函数能够处理的函数声明时更多这些参数叫作可变参数。
# 加了*号的变量名会存放所有的未命名的变量参数。在函数内部,参数前的*号将所有值放在同一个元组里。当在调用时没有传指定参数,则就是一个空元组。
# 可变参数声明时不会命名。
def personinfo(arg,*personinfotuple):
print(arg)
for var in personinfotuple:
print('可变长参数为%s' % var)
personinfo(arg='小明')
personinfo('小明','20','shenzhen')
# 4、关键字参数。使用**处理关键字参数。
# **param表示把param接收以key:value键值对的关键字参数。
def personinfo2(arg,**personparam):
for var1,var2 in personparam.items():
print('关键字参数为%s%s'%(var1,var2))
personinfo2('小明',classcode='2',age=18)