Python 命名关键字形参
命名关键字形参
语法:
1.def func(a,b,*,c,d) c,d是命名关键字形参 2.def func(*args,c,d,**kwargs) 夹在收集参数之间的是命名关键字形参 如果是命名关键字形参,意味着,在调用函数时,必须使用关键字实参的方式赋值 [指名道姓赋值]
方法一
def func(a,b,*,c,d):print(a,b)print(c,d) func(1,2,3,4) # error func(1,2,c=3,d=4)
方法二
c此时是命名关键字形参,必须使用关键字实参方法指名道姓赋值 def func(*args,c,**kwargs):print(args) # (1,2,3,4)print(kwargs) # {a:1,b:2,d:4}print(c) # 3func(1,2,3,4,a=1,b=2,c=3,d=4) func(1,2,3,4,a=1,b=2,d=4) # error
必须按照如下顺序定义参数
形参: 普通形参 -> 默认形参->普通收集形参 -> 命名关键字形参 -> 关键字收集形参 实参: 普通实参 , 关键字实参
如何收集参数都写上,代码可以收集到所有的实参;
def func(*args,**kwargs):pass
关于 * 和 ** 的扩展使用
*和**在函数的定义处,作用负责打包
=> 打包成元组
**=> 打包成字典
*和**在函数的调用处,作用负责解包
=> 针对于tuple或者list进行解包
**=> 针对于dict进行解包
def func(a,b,*,c,d):print(a,b)print(c,d) tup = (1,2)
*tup在函数的调用处,负责解包,把元组当中的元素一个一个拿出来,作为函数的实参赋值调用 func(*tup,c=3,d=4) # func(1,2,c=3,d=4) 可以控制func的参数个数dic = {"c":3,"d":4} **dic在函数的调用处,负责解包,把字典当中的元素一个一个拿出来,作为关键字实参赋值调用 func(1,2,**dic) # func(1,2,c=3,d=4) 可以控制func的参数个数
综合写法
优点:更好的控制了函数调用时,参数的长度 func(*tup,**dic) # func(1,2,c=3,d=4) 可以控制func的参数个数函数的定义处 def func(*args , **kwargs): # 形参打包pass 函数的调用处 func(*tup,**dic) # 实参解包
小练习
def f1(a, b, c=0, *args, **kw):print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)def f2(a, b, c=0, *, d, **kw):print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw)
以上两个函数 打印结果 (一) f1(1, 2) # a=1,b=2,c=0,args=(),kw={}f1(1, 2, c=3) # a=1,b=2,c=3,args=(),kw={}f1(1, 2, 3, 'a', 'b') #a=1,b=2,c=3 args=(a,b),kw={}f1(1, 2, 3, 'a', 'b', x=99) # a=1,b=2,c=3,args=(a,b),kw={x:99}f2(1, 2, d=99, ext=None) # a=1,b=2,c=0,d=99,kw={ext:None}(二) args = (1, 2, 3, 4) kw = {'d': 99, 'x': '#'} f1(*args, **kw) # f1(1,2,3,4,d=99,x="#") # a=1,b=2,c=3,args=(4,),kw={d:99,x:#}(三) def f2(a, b, c=0, *, d, **kw):print('a =', a, 'b =', b, 'c =', c, 'd =', d, 'kw =', kw) myargs = (1, 2, 3) mykw = {'d': 88, 'x': '#'} f2(*myargs, **mykw) # f2(1,2,3,d=88,x=#) # a=1 b=2 c=3 d=88 kw={x:#}(四) def f1(a, b, c=0, *args,d,**kw):print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)print(d)f1(1,2,3, 'a', 'b',d=67, x=99,y=77) # a=1,b=2,c=3,args=(a,b),kw={x:99,y:77} d=67
Python 命名关键字形参相关推荐
- python中一共有多少个关键字-Python 为什么会有命名关键字参数?
题主会有这样的疑问是因为对Python函数的参数还了解不多.位置参数也不一定是必传的,事实上在下面你会看到参数是否必传(也就是有无默认值)与它是位置的还是关键字的根本无关.下文黄底图片的例子能充分为你 ...
- python可变参数和关键字参数位置_python笔记——函数的参数(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、参数组合)...
定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了.对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂逻辑被封装起来,调用者无需了解 ...
- Python位置参数、默认参数、可变参数、关键字参数、命名关键字参数、命名位置参数
前言 定义一个名为temp的函数,参数列表共4个参数 def temp(first,second="Hello World",*args,**kwargs)print(first) ...
- Python函数独立星号(*)分隔的命名关键字参数
如果需要限制关键字参数的输入名字,就需要使用到命名关键字参数的形式,所谓命名关键字参数就是给关键字参数限定指定的名字,输入其他名字不能识别.命名关键字参数和位置参数之间使用独立的星号(*)分隔,星号后 ...
- python疑问5:位置参数,默认参数,可变参数,关键字参数,命名关键字参数区别...
1.位置参数 位置参数要求调用时传入函数的参数必须和定义时的位置和个数一致,即一一对应,不可缺省 def func(a,b):sum = a + breturn sum print(func(2,3) ...
- Python可变参数、关键字参数及命名关键字参数
1. 可变参数 可变参数就是允许在调用参数的时候传入多个(≥0个)参数 # 可变参数,参数nums接收到的是一个tuple(这些参数在传入时被自动组组装为一个元祖) def calc(*nums):s ...
- 以下python语言关键字在异常处理_python后端开发工程师考证试题
原标题:python后端开发工程师考证试题 python开发工程师考证试题 选择题 题目 关于 Python 程序格式框架的描述,以下选项中错误的是 ( A ) A: Python 语言不采用严格的& ...
- python3函数的参数:必选参数(位置参数)、默认参数、可变参数、关键字参数、命名关键字参数
了解python函数的参数,是阅读各种库和源码的必需技能,请认真学习并掌握. 1.位置参数: def fn1(a):pass def fn2(a,b):pass msg: pass是占位符,当没有具体 ...
- python常用关键字意思_Python 关键字列表及示例
本教程提供有关Python中使用的所有关键字的简要信息. 关键字是Python中的保留字.我们不能将关键字用作变量名,函数名或任何其他标识符. 这是Python编程中所有关键字的列表 上述关键字可能会 ...
最新文章
- C-Substring的实现
- 批处理***与注册表
- 一步一步学List Control控件的用法(第二步)----创建第一行
- Java中怎样遍历Map的所有数据
- 软件调试中的断点分类
- 老牌语言依然强势,GO、Kotlin 等新语言为何不能破局?
- 工业铝型材与钢铁之间的区别
- python提取cad坐标_从CAD图里提取坐标的方法
- (新)OpenCV配置visual studio2019详细教程
- 差分编码解析以及FPGA实现
- 数学对数 log lg ln 简介
- Excel图表制作(二):单选框和下拉菜单组合完成动态图
- 2017物联网蓬勃发展,看各领域巨头如何抢先机占山头
- 未来计算机更加智能化,未来计算机的发展趋势
- pcolor和surf画出的图形转存为eps或pdf格式出现横竖斜白色虚线网格,完美去掉!!!
- objectArx --- ADS篇
- 利用SWFTools工具将pdf转换成swf
- 新学期,新FLAG | 尽人事,听天命,守得云开见月明
- 【Mathematica】 泰勒展开
- SQL 2005安装时报已经安装了同名实例的问题解决。(无法正确卸载干净时最管用)