一、函数的基本参数
1.位置参数
调用执行时,传递的实参按照位置顺序给形参进行赋值
def test1(p1,p2,p3):
print(p1,p2,p3)
test1(10,20,30)
2.默认值参数
定义参数是,可以给参数赋值;如果函数参数中出现了默认值参数~一般默认值参数放在普通参数的后面
def test2(n1, n2, opra="+"):
print("计算n1:[%s]和n2[%s]进行opra[%s]运算" % (n1, n2, opra))
# 默认值参数~如果实际参数传递了实际数据,就使用传递的数据;
# 如果默认值参数~没有传递实参,直接使用默认数据进行运算
test2(10, 20)
test2(10, 20, "/")
3.实参关键字参数
调用时可以根据参数名称进行赋值[打破位置参数要求的顺序]
def test3(p1, p2, p3):
print(p1, p2, p3)
test3(10, 20, 30)# 按照默认的位置顺序赋值
test3(p2=20, p1=10, p3=30)# 按照形参名称赋值[可以打乱位置顺序]
4.实参强制关键字参数
【提高代码的可读性】
实参传递数据是,形参中* 后面的所有参数~都要使用k=v的关键字参数方式传递数据
def test4(*,p1,p2,p3)
print(p1,p2,p3)
test4(p1= 10,p2=20,p3=30)
二、函数参数进阶
5.可变参数
函数在执行过程中,可以接受0~N个参数
def test(*args)
print("可变参数,在普通参数前面添加一个符号")
print("test()函数就可以接收0~N个参数进行操作")
print(args)
for x in args:
print(x)
test()
test("hello")
test("hello", "jerry")
test(1, 3, 5)
test(1, 1, 2, 3, 5, 8, 13, 21)
6.可变关键字参数
(1)可变关键字参数,就是在普通参数的 前面添加符号 **
(2)可变关键书参数,可以接受多个k=v的参数数据;并且可以接受0~n个k=v的数据,将数据包含在“字典”中
def test2(**kwargs)
print(kwargs,kwargs.get("name"))
test2(name="tom")
test2(name="shuke", age=62)
test2(name="jerry", age=18, gender="男")
#输出结果
{'name': 'tom'} tom
{'name': 'shuke', 'age': 62} shuke
{'name': 'jerry', 'age': 18, 'gender': '男'} jerry
7.函数的参数:万能形参
号称可以及诶手任何参数:满足规范的情况下
def test(*args,**kwargs)
print(args,kwargs)
test3()
test3("hello")
test3("hello", name="jerry")
test3("hello", "world", name="tom")
test3(name="tom")
#输出结果
() {}
('hello',) {}
('hello',) {'name': 'jerry'}
('hello', 'world') {'name': 'tom'}
() {'name': 'tom'}
三、解包
解包:将组合数据类型拆分
def test(p1,p2):
print(p1,p2)
#正常调用
test(10,20)
#非正常调用:列表解包
nums = [10, 20]
# 列表参数前面添加一个*符号,表示将列表拆分成一个一个独立的数据传递
test(*nums) # test(*nums) -> test(10, 20)
# 非正常调用:字典解包
#字典参数前面添加两个**
nums2 = {"p1": 100, "p2": 200}
test(**nums2) # test(**nums2)-> test(p1=100, p2=200)
网友评论