函数的参数
# 需求定义一个函数,给定一个数字,遍历从1到该数字之间的所有数字
num = int(input("请输入一个整数:"))
def func(n):
"""打印1,n之间的所有数字"""
for i in range(1,n+1):
print(i)
func(num)
# 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
def func2(num1,num2):
"""打印num1到num2之间的数字"""
for i in range(num1,num2+1):
print(i)
func2(10,100)
1.位置参数
实参传递的顺序按照形参定义的顺序进行传递的传参方式
# 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
def func2(num1,num2):
"""打印num1到num2之间的数字"""
for i in range(num1,num2+1):
print(i)
# 位置参数传递
func2(10,100)
2.关键字参数(函数调用时)
忽略了原本的位置关系,明确指出形参和实参的对应关系:
格式:函数名(形参=实参)
# 需求定义一个函数,给定两个数字,遍历两个数字之间的所有数字
def func2(num1,num2):
"""打印num1到num2之间的数字"""
for i in range(num1,num2+1):
print(i)
# 关键字参数
func2(num1=10,num2=100)
func2(num2=100,num1=10)
3.默认参数(定义函数体现)
在定义函数时,可以对某些形参设定默认值,有默认值的参数,在调用时可以不传入,如果不传入就使用默认值。优先使用传入的值。
使用场景:某个参数变化比较小,就可以指定一个默认值。
学过包含默认值的方法:列表中的pop(index),字符串中的stirp()
# 用户输入个人信息,函数打印个人信息:没有默认值
def print_info(name,age,gender):
"""打印信息"""
print(f"我叫{name},我今年{age}岁,我的性别是{gender}。")
print_info('zs', 20, "男")
print_info('ls', 21, "男")
print_info('ww', 22, "男")
print_info('ml', 19, "男")
# 用户输入个人信息,函数打印个人信息:使用默认值
def print_info(name,age,gender="男"):
"""打印信息"""
print(f"我叫{name},我今年{age}岁,我的性别是{gender}。")
# 不传入包含默认值的参数
print_info('zs', 20,)
print_info('ls', 21,)
print_info('ww', 22,)
print_info('ml', 19,)
4.可变参数(*args,**kwargs)
1 在定义函数时,函数参数很多
2 在定义函数时,不确定函数的数量
-
元组类型可变参数(*args):只能通过位置参数传递
def print_info2(*args): """介绍个人信息""" print(args) for i in args: print(i) # 不善言辞 print_info2() # 正常 print_info2('zs',20,180) print_info2(name='zs', age=20, height = 180) # 错误,不能使用关键字方式传递 # 善谈 print_info2('ls',20,175,70,"郑州","吃") # 定义元组 t = (1,4,5,6,7,8,8,9,9,0,0) print_info2(t) # 传入一个元素:把元组当做一个整体 print_info2(*t) # 传入多个元素:将元组打散
-
字典类型可变参数(**kwargs)
只能通过关键字参数方式传递
def print_info3(**kwargs): """介绍个人信息""" print(kwargs) print_info3('zs',20,180) # 错误 print_info3(name='zs', age=20, height = 180) # 正确
定义万能参数
def func(a, b, c=20, *args, **kwargs):
print(a,b,c) # 1 2 34
print(args) # (4,)
print(kwargs) # {name:zs,age:20}
func(1, 2, 34, 4, name='zs', age=20)
def func2(a, b, *args,c=20, **kwargs):
print(a,b,c) # 1 2 20
print(args) # (34,4)
print(kwargs) # {name:zs,age:20}
func2(1, 2, 34, 4, name='zs', age=20)
总结:
- 在定义函数时:位置参数-- 默认参数和*args---**kwargs
- 在调用函数时:位置参数---关键字参数