-
2019-07-24 14:55:39
python中函数的参数有位置参数、默认参数、可变参数、命名关键字参数和关键字参数,这个顺序也是定义函数时的必须顺序。本文主要是讲讲命名关键字参数和关键字参数的区别:
关键字参数
可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。
形如:>>> def person(name,age,**kw): print("name:",name,"age:",age,"other:",kw) >>> person("bbj",23,city="hefei",habit="basketball") name: bbj age: 23 other: {'city': 'hefei', 'habit': 'basketball'} >>>
关键字参数按我的理解就是在调用时可以传入无数个自命名的参数,这里的关键字也就是自己命名的意思。所有的关键字参数会自动组装成一个字典。
命名关键字参数
同样是关键字参数,为何又加入“命名”两个字呢,意思就是在函数定义时给定好有哪些参数。
形如:>>> def person(name, age, *, city, job): print(name, age, city, job) >>> person('bbj',23,city='hefei',job='engineer') bbj 23 hefei engineer >>>
*后面的city、job都是命名关键字参数,在调用的时候与位置参数不同的是必须给出参数名否则调用时会报错。如果有可变参数在之前的时候则不需要额外的*,
更多相关内容 -
Python中几种参数得用法:默认参数,可变参数,关键字参数,命名关键字参数
2020-12-21 21:25:37一、默认参数: 默认参数,注意一点:必选参数在前,默认参数在后,否则Python的解释器会报错 二。可变参数: 可变参数,意思就是传入参数的个数是可变的,可以是1个,2个,无数个;传入参数类型为list或者tuple;... -
关键字参数
2020-12-16 12:58:27而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例: def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw) 函数person除了必...可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。请看示例:
def person(name, age, **kw): print('name:', name, 'age:', age, 'other:', kw)
函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数:
>>> person('Michael', 30) name: Michael age: 30 other: {}
也可以传入任意个数的关键字参数:
>>> person('Bob', 35, city='Beijing') name: Bob age: 35 other: {'city': 'Beijing'} >>> person('Adam', 45, gender='M', job='Engineer') name: Adam age: 45 other: {'gender': 'M', 'job': 'Engineer'}
关键字参数有什么用?它可以扩展函数的功能。比如,在person函数里,我们保证能接收到name和age这两个参数,但是,如果调用者愿意提供更多的参数,我们也能收到。试想你正在做一个用户注册的功能,除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。
和可变参数类似,也可以先组装出一个dict,然后,把该dict转换为关键字参数传进去:
>>> extra = {'city': 'Beijing', 'job': 'Engineer'} >>> person('Jack', 24, city=extra['city'], job=extra['job']) name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
当然,上面复杂的调用可以用简化的写法:
>>> extra = {'city': 'Beijing', 'job': 'Engineer'} >>> person('Jack', 24, **extra) name: Jack age: 24 other: {'city': 'Beijing', 'job': 'Engineer'}
extra表示把extra这个dict的所有key-value用关键字参数传入到函数的kw参数,kw将获得一个dict,注意kw获得的dict是extra的一份拷贝,对kw的改动不会影响到函数外的extra。
-
python函数参数(必须参数、可变参数、关键字参数)
2020-09-18 19:58:39主要介绍了python函数参数(必须参数、可变参数、关键字参数)的相关知识,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下 -
Python函数关键字参数
2020-11-24 03:19:59Python函数关键字参数教程关键字参数,就是我们在函数传递实参时,可以通过参数名指定,我们具体传递的是哪个形参,但关键字参数的实参和形参的个数还必须是一一对应的。Python函数位置参数详解语法def func_name...Python函数关键字参数教程
关键字参数,就是我们在函数传递实参时,可以通过参数名指定,我们具体传递的是哪个形参,但关键字参数的实参和形参的个数还必须是一一对应的。
Python函数位置参数详解
语法
def func_name(param1, param2):
# 执行语句...
return val
#调用函数
func_name(p1, p2)
说明
我们定义了一个函数,函数名为 func_name,该函数有两个位置参数,在函数调用时,我们需要同样的传入两个参数。
这里的实参 p1 对应的就是形参 param1,实参 p2 对应的就是形参 param2。
Python函数关键字参数详解
语法
def func_name(param1, param2):
# 执行语句...
return val
# 调用函数
func_name(param1 = p1, param2 = p2)
func_name(param2 = p2, param1 = p1)
参数
参数
描述
def
定义函数所使用的关键字,所有的函数前面都必须使用该关键字。
func_name
函数的名称。
param1
函数的形参1。
param2
函数的形参2,函数可以有任意多个形参。
return
后面接函数的返回值,函数的返回值只能有一个,可以是任意的数据类型。
说明
我们定义了一个函数,函数名为 func_name,该函数接受两个参数。接着,我们两次调用了函数 func_name。
第一次调用时,我们通过关键字参数指定形参 param1 对应的实参为 p1,形参 param2 对应的实参为 p2,第二次调用,同样使用关键字参数指定实参和形参的对应关系。
这样,通过关键字参数,形参的顺序就不必跟实参的顺序一样了。
案例
Python函数位置参数
Python函数使用位置参数,则参数顺序和个数必须一一对应
print("嗨客网(www.haicoder.net)")
# Python函数使用位置参数,则参数顺序和个数必须一一对应
def area(a, b, c):
s = (a + b + c) / 2
ret = (s*(s-a)*(s-b)*(s-c)) ** 0.5
return ret
ret = area(3, 4, 5)
print("area =", ret)
程序运行后,控制台输出如下:
我们定义了一个函数 area,该函数传入三个参数 a、b 和 c,该函数实现的是求任意三角形的面积的逻辑,并通过返回值返回求得的面积。
最后,我们调用了 area 函数,并传入了三个参数,使用 ret 变量来接受 area 函数返回的值,最后使用 print 函数打印最后的结果。
因此,我们的函数的形参有三个,且这里使用的是函数的位置参数,因此,我们的实参的顺序和个数必须和形参完全保持一致。
Python函数位置参数
Python函数使用位置参数,如果形参和实数个数不一样,程序报错
print("嗨客网(www.haicoder.net)")
# Python函数使用位置参数,如果形参和实数个数不一样,程序报错
def area(a, b, c):
s = (a + b + c) / 2
ret = (s*(s-a)*(s-b)*(s-c)) ** 0.5
return ret
ret = area(3, 4, 5, 6)
print("area =", ret)
程序运行后,控制台输出如下:
我们定义了一个函数 area,该函数传入三个参数 a、b 和 c,我们在调用该函数时,实参传递了四个,因此,实参和形参的个数不对应,程序报错。
Python函数关键字参数
Python 函数使用位置参数,则参数顺序可以不一致
print("嗨客网(www.haicoder.net)")
# Python函数使用位置参数,则参数顺序可以不一致
def sub(a, b):
return a - b
ret = sub(a = 1024, b = 512)
print("sub =", ret)
ret = sub(b = 512, a = 1024)
print("sub =", ret)
程序运行后,控制台输出如下:
我们定义了一个函数 sub,该函数传入两个参数 a 和 b,该函数实现的是求 a 和 b 的差的逻辑,并通过返回值返回求得的差值。
最后,我们使用了关键字参数的形式,两次调用了 sub 函数,第一次调用时,首先显式指定形参 a 的值为 1024,形参 b 的值为 512,第二次调用时,首先显式指定形参 b 的值为 512,形参 a 的值为 1024。
我们打印两次调用的结果,发现都是一样的正确的结果,因此,使用函数的关键字参数,实参的顺序和形参的顺序不必完全保持一致。
Python函数关键字参数
Python 函数使用位置参数,参数个数必须一致
print("嗨客网(www.haicoder.net)")
# Python函数使用位置参数,参数个数必须一致
def sub(a, b):
return a - b
ret = sub(b = 512)
print("sub =", ret)
程序运行后,控制台输出如下:
我们定义了一个函数 sub,该函数传入两个参数 a 和 b,我们使用位置参数调用该函数时,实参传递了一个,因此,实参和形参的个数不对应,程序报错。
Python函数关键字参数总结
关键字参数,就是我们在函数传递实参时,可以通过参数名指定,我们具体传递的是哪个形参,但关键字参数的实参和形参的个数还必须是一一对应的。Python 函数关键字参数定义:
def func_name(param1, param2):
# 执行语句...
return val
# 调用函数
func_name(param1 = p1, param2 = p2)
func_name(param2 = p2, param1 = p1)
-
Python 函数非关键字参数,关键字参数混用
2021-08-02 18:38:48隐式调用中,传参都需要关键字参数 但有时候写成params={‘a’:1,‘b’: 2} fun(params) 有时候写成fun(params=params) def __getattr__(self, name): # 当访问object不存在的属性时会调用该方法,即没有明确定义...隐式调用中,传参都需要关键字参数
但有时候写成params={‘a’:1,‘b’: 2}
fun(params)有时候写成fun(params=params)
def __getattr__(self, name): # 当访问object不存在的属性时会调用该方法,即没有明确定义函数时,去method中寻找隐性调用方法 def wrapper(*args, **kwargs): # 隐式调用全部使用kwargs # 处理传来的非关键字参数,直接写params,没写params=params if len(args) > 0: # 处理直接写params for arg in args: # args是元祖 if isinstance(arg, dict) is not True: print('隐式调用参数有误,非关键字参数') kwargs = {**kwargs, **arg} # 合并字典 if len(kwargs) > 0: # 有两种情况,一种是直接params=params 一种是关键字直接写比如instId=BTC-USDT for i in kwargs.keys(): if isinstance(kwargs[i], dict): # 如果关键字传参,参数本身就是字典情况处理 kwargs = {**kwargs, **kwargs[i]}.pop(i) # 处理params=params, value中字典放到kwarg,删除params这个item # 如果调用方法名称中,不包含async(非异步),用act函数 return self.act(*args, **kwargs) if name.find('async') < 0 else self.asyncact(*args, **kwargs) return wrapper
-
Python中函数的关键字参数
2022-03-09 09:01:46在《Python中参数具有默认值的函数》中提到,对于具有默认参数值的函数来说,在调用该函数时,可以指定其参数值,也可以不指定其参数值。 1 具有多个默认参数值的函数 对于具有多个默认参数值的函数来说,必须按... -
Python关键字参数
2020-11-24 03:19:40参数,也叫参变量,是一个变量。我们在研究当前问题的时候,关心某几个变量的变化以及它们之间的相互关系,其中有一个或一些叫自变量,另一个或另一些叫因变量。如果我们引入一个或一些另外的变量来描述自变量与因... -
Python可变参数、关键字参数及命名关键字参数
2020-12-24 13:38:091. 可变参数 可变参数就是允许在调用参数的时候传入多个(≥0个)参数 # 可变参数,参数nums接收到的是一个tuple(这些参数在传入时被自动组组装为一个元祖) def calc(*nums): sum = 0 for n in nums: sum += n ... -
Python-非关键字参数和关键字参数(*args **kw)
2020-05-04 23:06:27可变参数和关键字参数的语法: *args是可变参数,args接收的是一个tuple; **kw是关键字参数,kw接收的是一个dict。 使用*args和**kw是Python的习惯写法,当然也可以用其他参数名,但最好使用习惯用法。 一、可变... -
python基础 — 位置参数和关键字参数
2021-12-01 10:35:43关键字参数:调用函数的时候使用的是键值对的方式,key=values。混合传参时关键字参数必须在位置参数之后。 默认参数:定义函数时,直接给形式参数指定一个默认值。这样的话,即便调用函数时没有给拥有默认值的形参... -
python函数的关键字参数
2021-08-10 16:35:13# 函数person除了必选参数name和age外,还接受关键字参数kw。在调用该函数时,可以只传入必选参数: person(‘Michael’, 30) # 也可以传入任意个数的关键字参数 person(‘Bob’, 35, city=‘Beijing’) person(... -
Python自定义函数的位置参数和关键字参数
2022-03-26 18:09:121 位置参数和关键字参数 在《Python中自定义函数的方法》中提到,在调用函数时,可以根据函数参数的位置确定该参数的值,此时的参数叫做函数的位置参数,如图1所示。 图1 位置参数 从图1中可以看出,根据func... -
python关键字参数和位置参数
2021-03-05 22:06:13关键字参数必须跟随在位置参数后面! 因为python函数在解析参数时, 是按照顺序来的,位置参数是必须先满足, 才能考虑其他可变参数.,否则报错如下:In [74]: print(s1.format(name='jenkins',"good","kg",a='python'))... -
Python函数关键字参数及用法
2022-03-25 11:55:21Python函数关键字参数及用法 目前为止,我们使用函数时所用的参数都是位置参数,即传入函数的实际参数必须与形式参数的数量和位置对应。而本节将介绍的关键字参数,则可以避免牢记参数位置的麻烦,令函数的调用和... -
2021.03.15位置参数和关键字参数
2021-03-15 20:59:252021.03.15 总结 位置参数和关键字参数 根据函数调用的时候实参...3)位置参数和关键字参数可以一起用:位置参数必须在关键字参数的前面 def func1(a, b, c): print(f'a:{a}, b:{b}, c:{c}') # 位置参数 func1(10, 2 -
Python中的关键字参数
2021-03-17 17:31:30关键字参数与函数调用有关。在函数调用中使用关键字参数时,调用者通过参数名称标识参数。由于Python解释器能够使用提供的关键字来将值与参数进行匹配,因此您可以跳过参数或将其乱序放置。您还可以通过以下方式对... -
命名关键字参数
2020-12-16 22:20:09对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数。至于到底传入了哪些,就需要在函数内部通过kw检查。 仍以person()函数为例,我们希望检查是否有city和job参数: def person(name, age, **kw): if ... -
Python中位置参数、默认参数、可变参数、命名关键字参数、关键字参数的区别
2017-04-13 16:03:50Python中必选参数、默认参数、可变参数、命名关键字参数、关键字参数的区别: -
Python函数的位置参数、关键字参数精讲
2020-12-08 14:50:18函数名:是必须符合Python名称规范要求的标识符,需要避免使用Python的关键字;3.参数:称为函数的形参,调用时传递的真实数据称为实参,函数的参数可以没有,也可以是多个甚至可变个数;4.函数文档字符串:在... -
Python-位置参数,默认参数,可变参数,关键字参数区分
2020-01-04 09:42:01以键-值对的形式进行参数传递,打破了顺序限制,注意如果出现位置参数,一定要在关键字参数的前面,但关键字参数之间是不分顺序的 # 以下是用关键字参数正确调用函数的实例 # print_hello('tanggu', sex=1) # ... -
Python---函数---命名关键字参数
2020-12-22 23:30:08#命名关键字参数#对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数#至于到底传入了哪些,就需要在函数内部通过kw检查#仍以person()函数为例,我们希望检查是否有city和job参数defperson(name,age,**kw... -
[python][oldboy]关键字参数和位置参数,默认参数,可变长参数(无名,有名)
2021-01-29 10:12:27关键字参数和位置参数是在函数调用的时候定义关键字参数是以键-值对出现,无序,多一个不行,少一个不行位置参数,有序,多一个不行,少一个不行混搭:所有位置参数必须在关键字参数的左边默认参数是在函数定义的... -
Python之位置参数、默认参数、可变参数、关键字参数、命名关键字参数、命名位置参数
2019-01-25 14:11:24参考文章:... def printThreeChar(firstNum = 'a', secondNum = 'b', thirdNum = 'c'): #三个关键字参数,也称为默认参数 print firstNum print secondNum print thirdNum ... -
可变参数,关键字参数,命名关键字参数
2018-04-29 19:47:27参数常见的有可变参数,关键字参数,命名关键字参数,默认参数几种 # *args - 可变参数(参数个数不确定) - 元组 # *kwargs - 关键字参数(给了参数名和参数值的参数) - 字典 def add(*args, **kwargs): # *args可... -
可变参数与关键字参数
2020-09-13 23:32:021.可变参数** 可变参数就是传入的参数个数是可变的,可以是 0, 1, 2 到任意个,是不定长的参数。 *args - 可变参数,可以是从零个到任意个,自动组装成元组。 加了星号(*)的变量名会存放所有未命名的变量参数。 ... -
关键字参数和默认值参数
2020-04-10 17:50:39#可变参数+关键字参数 #关键自参数:key=value def add(a,b=10): #关键字参数 result=a+b print(result) add(5) add(4,7) #a=4,b=7 #此时7会覆盖b原来的默认值 def add(a,b=7,c=5): result=a+b+c print... -
python函数中的参数(关键字参数,默认参数,位置参数,不定长参数)
2020-12-16 00:49:21关键字参数:如果定义的函数中含有关键字参数,调用函数时必须要传如该关键字对应的实参。不定长参数:在定义函数的时候不确定传入的参数的数量(可能是0个或多个) def num(*args,**args): (不定长参数的标志符号是*...