python关键字参数和默认参数,python 位置参数,默认参数
python参数type _技术博客of _mb62abf3afb54fb _博客的位置参数、默认参数、动态参数、关键字参数
Python参数列表1。位置参数:调用函数时传递的参数,默认按顺序赋值;但是,在调用函数时,如果指定给参数赋值,就不注意顺序了。
2.默认参数:定义函数时,设置参数的默认值。
3.动态参数:*args调用可以传入或不传入任何参数的函数。在函数内部传递它们会将这些函数保存到一个元组中。
4.关键字参数:**kwargs参数传入后成为字典类型。
1.必需参数(也称为位置参数)def add(a,b):
返回a b
sum=add(1,2)
打印(总和)
#输出结果
3 3 add函数有两个参数,第一个参数是A,第二个参数是B,传入的两个整数按照位置顺序赋给函数的参数A和B。参数A和B称为位置参数。传递的参数数量必须等于参数列表的数量。要求传递的参数与函数定义的参数一一对应。如果传递的参数数量不等于函数定义的参数数量,运行时将报告error # error示例。
def add(a,b):
返回a b
sum=add(1,2,3)
#输出结果
sum=add(1,2,3)
e类型错误:add()接受2个位置参数,但给定了3个II。默认参数使用默认参数,可以简化函数的调用,尤其是需要频繁调用函数的时候:
#必需参数a,默认参数b
定义测试1(a,b=3):
打印(a,b)
测试1(0)
Test1(0,1)运行结果:
0 3
0声明函数时,当既有必选参数又有缺省参数时,参数的顺序必须是(必选参数和缺省参数),即缺省参数不能在前面,缺省参数必须在位置参数后面。
3.可变参数【也叫动态参数】为什么需要可变参数?假设你需要一个有两个数的和函数。
def add(a,b):
返回a b
Add(1,2)在这种情况下,有一个包含3个数的求和函数。
def add3(a,b,c):
返回一个
Add3(1,2,3)问题来了:
然后,如果你还需要一个4数求和函数,可以用上面的方法再加一个函数,但是显然比较麻烦。于是,可变参数诞生了,希望只写一个函数ADD来计算求和,但是函数的参数个数是不确定的,所以可以重用可变参数def函数的表达式(*args):
Body该函数被设置为接受可变数量的参数。参数的类型是元组。当这个函数被调用时,所有的参数被合并成一个元组,合并后的元组被赋给args。您可以通过遍历args来访问传递的参数。示例1:
#累积可变参数函数
def add(*args):
打印(参数)
总和=0
对于args中的arg:
总和=参数
print(len=%d,sum=%d % (len(args),sum))
添加(1)
加法(1,2)
加法(1,2,3)
#输出结果
(1,)
len=1,sum=1
(1, 2)
len=2,sum=3
(1, 2, 3)
对于示例2,Len=3,sum=6:
def test2(num,num2=2,*args):
打印(num,num2,args)
测试2(1)
测试2(1,3)
测试2(1,3,3,3,3,3,3)
test2(1,*(2,3,4,5))
测试(1,* [2,3,4,5])运行结果:
1 2 ()
1 3 ()
1 3 (3, 3, 3, 3, 3)
1 2 (3, 4, 5)
1 (3,4,5)知识点args是元组类型的可变参数。也可以传递很多值*(2,3,4,5)。在元组或列表前面加一个*表示其中的每个元素都是分开的,单独作为参数传入,也叫元组解包。(详见python拆包)【注意】:调用函数时,不能指定变量参数前的参数名;而且不管函数什么时候声明,什么时候调用,必选参数都必须在变量参数之前。例如:
#可变参数
def myfun(a,*b):
打印(一份)
打印(b)
myfun(a=1,2,3,4)
#输出结果
myfun(a=1,2,3,4)
^
语法错误:位置实参跟在关键字实参后面【注意】:调用函数时,变量实参(*)后面的实参必须指定实参名称【即关键字传递】,否则将被归类为变量实参。
1,例如:
#可变参数
def myfun(a,*b,c=无):
打印(一份)
打印(b)
打印(c)
myfun(1,2,3,4)
#输出结果
一个
(2, 3, 4)
Nonec输出None,即不获取参数值。
例如,关键字传递:
#可变参数
def myfun(a,*b,c=无):
打印(一份)
打印(b)
打印(c)
myfun(1,2,3,c=4)
#输出结果
一个
(2, 3)
4关键字参数什么是关键字参数?Python允许调用函数时,参数以“参数名=参数值”的形式传递。
def add(a,b):
返回a b
add(a=1,b=2)参数名=参数值形式的参数,如a=1,b=2,称为关键字参数。
包含关键字参数的函数的语法格式以符号* *开头,表示该函数可以接收关键字参数。
定义函数(* *夸脱):
Body这个函数被设置成能够接收关键字类型的参数kwargs。当调用这个函数时,所有的关键字参数都被合并到一个字典中,合并后的字典被赋给kwargs。通过访问kwargs,可以访问参数名和值。示例1:
#关键字参数函数示例
def create_full_name(**kwargs):
#印刷是一本字典。
印刷品(夸脱)
name=kwargs.get(name )
password=kwargs.get(password )
如果名称和密码:
打印(姓名是:,姓名,密码是:,密码)
如果是名称而不是密码:
打印(唯一名称是:,名称)
#方法1:通过key=value传递参数。
Create_full_name(name=小菠萝,password=123456 )
dict_={name: yy}
#方法二:传字典,然后加* *解包。
创建全名(* *字典_)
#输出结果
{ 姓名:小菠萝,密码: 123456}
是:小菠萝,密码是:123456
{ 姓名: yy}
唯一的名字是:yy例2:
def test3(a,b=2,**kwargs):
印刷(a、b、kwargs)
测试3(1)
测试3(1,3)
test3(1,* * * { key : value })
test3(1,3,* * * { key : value , key1: val , key2: val2})
test3(1,name=yy ,key=value )
test3(1,3,name=yy ,key=value )
test3(1,name=yy ,key=value ,b=222222)
# test3 (1,22222,name= yy ,key= value ,b=22222)会报告一个错误,因为第二个值已经传递给默认参数b了,运行结果:
1 2 {}
1 3 {}
1 ^ 2 { key : value }
^ 1 ^ 3 { key : value , key1: val , key2: val2}
^ 1 ^ 2 { 姓名: yy ,键:值 }
1 3 { 姓名: yy ,键:值 }
1 222222 {name: yy , key: value}知识点kwargs是字典类型。能不能传递key参数就需要传递key值对。如果你想通过dict,你需要在前面加上* *。这个dict的所有key-value都作为独立的key参数传递到kwargs中(改为key=value),而修改kwargs不会影响原来的dict。也可以不用dict直接写key=value。如果它与默认参数同名,如果没有以前的值,它将作为默认参数传递。如果是,直接报错(声明函数时不允许参数重复)。声明函数时,默认参数不能放在关键字参数之后,即默认参数必须是关键字参数之前的**dict,这也叫字典解包。示例1python的请求库关键字函数(如果python函数的参数是关键字参数,则该函数可以称为关键字函数)
除了方法和url是必需的参数之外,许多参数都可以通过kwargs传递。
2例如,函数def test4(a,b=2,*args,**kwargs)有四种参数类型:
打印(a,b,args,kwargs)
测试4(1)
测试4(1,1)
test4(1,*(1,2,3,3,4,))
test4(1,*(1,2,3,3,4,)cc=123,c=123)
lists=[a , b]
dicts={key: 123}
Test4(1,*列表,*字典)运行结果:
1 2 () {}
1 1 () {}
1 1 (2, 3, 3, 4) {}
1 1 (2,3,3,4) {cc: 123, c: 123}
1 a (b ,){key: 123}
期待陌生,拥抱惊喜。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。