2019/09/27 03-keyword-only参数和参数解构

在这里插入图片描述
参数列表,传参需要按照位置来对应,一个是按照名称来对应(对关键字传参,谁等于谁来传实参)
缺省值用起来还不方便,就给你用可变参数(可变位置参数,可变关键字参数)这时候就看你用什么方式传参了,可变又允许你不传,可变关键字参数一定是在形参列表的最后,中间可以放可变位置参数,但可变位置参数后面也可以放keyword-only(只能接收关键字传参),普通参数又有带缺省值和不带缺省值的,不带缺省值的只能往后放,往前放就语法错误
顺序
普通参数-》普通参数带缺省值-》可变位置参数-》keyword-only-》可变关键字参数
可变位置参数收集后是形成元组
可变关键字参数收集是形成字典,普通字典,因为是普通字典所以可以修改
在这里插入图片描述
这种写法,xy叫keyword-only在这里插入图片描述在这里插入图片描述
keyword-only在标准库经常看到,只能接收keyword传参的参数,必须通过关键字传参,而且只能通过关键字传参在这里插入图片描述
x是keyword-only必须要通过keywords方式传进去
在这里插入图片描述
下面的传参是错误的,y根本没有定义
在这里插入图片描述
有缺省值就可以
在这里插入图片描述
上面定义成功,下面不行在这里插入图片描述
x,y只能通过keyword-only
在这里插入图片描述
有缺省值就都可以
在这里插入图片描述在这里插入图片描述
*一个星号后面理解为是keyword-ony , kwargs 是可变关键字参数(必须放到最后一个) ,x 是无法理解的
在这里插入图片描述在这里插入图片描述
直接报语法错误,x的值都被前面拿走了
在这里插入图片描述
keyword-only另一种形式,后面的参数,xy都是keyword-only参数在这里插入图片描述这两种是一个意思,所谓keywordonly就是能通过keyword传实参的,只能通过这种方式,没有缺省值的时候是必须传,不传就异常
在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
y没给
在这里插入图片描述在这里插入图片描述
1给y
在这里插入图片描述在这里插入图片描述
位置参数不能跟着关键字参数在这里插入图片描述
y给多值在这里插入图片描述在这里插入图片描述在这里插入图片描述
x=5是普通的位置参数,只不过带了缺省值
在这里插入图片描述
可以这么写
在这里插入图片描述
x没给就用缺省值
在这里插入图片描述
python形参定义,和传参方式放在一起稍稍有点乱在这里插入图片描述
这些都是形式参数
在这里插入图片描述
这是标识符,就需要满足对于标识符的要求(不能以数字,下划线开头)python中只有字面常量,定义不出常量
args 可变位置参数后面都是keyword-only参数直到 * kwargs

在这里插入图片描述
前面这些是顺序的,要求在定义形参的时候,如果要带缺省值,就往后放,可变参数可以有0个多个所以不需要缺省值
在这里插入图片描述
形参定义顺序,这一块叫参数列表但不是list
在这里插入图片描述在这里插入图片描述
必须要给xyz,n必须关键词传参

现在就可以阅读标准库,形参讲完了,就可以阅读里面大量的函数了
在这里插入图片描述在这里插入图片描述
缺省值太多了用 kwargs,用 args可能不知道谁和谁的值*
在这里插入图片描述
cmdb给host了,不是原来的意思了,就是按照位置对应了在这里插入图片描述
传那么多参数根本不知道是干嘛,不用kwargs就不知道别人传什么参数是干嘛的
在这里插入图片描述在这里插入图片描述
参数解构
要把两个参数填上去才行

在这里插入图片描述在这里插入图片描述
这个相当于有一个列表,把这个列表解开了,解开以后两个元素两项分别对应4,5,xy上去
在这里插入图片描述
解元组和set都可以解开,但是字典比较特殊
在这里插入图片描述
告诉你参数结构不是在这里使用的
参数解构,是做函数参数才能使用的语法,下面跟函数参数一点关系也没有
在这里插入图片描述
参数解构只能用在参数部分中用
在这里插入图片描述
必须在一个可迭代对象,而不是int在这里插入图片描述
要两个你给3个
在这里插入图片描述在这里插入图片描述
少一个也不行在这里插入图片描述
有可变位置参数可以
在这里插入图片描述
其实跟for循环是一样的,默认写key在这里插入图片描述
想要拿到300,一个星号和两个是不一样的在这里插入图片描述在这里插入图片描述
找不到期望 的keyword参数在这里插入图片描述
可以理解为字典是个二维结构,解开第一层拿到key,第二层相当于拿到value
在这里插入图片描述
用两个星号解开字典复杂结构,解开是这个
在这里插入图片描述
上面定义是x y ,你定义ab是传不进去的在这里插入图片描述
ab没人要
在这里插入图片描述
这样就行
在这里插入图片描述
在这里插入图片描述
可以理解字典是二维结构,一个星号只能 解开key,第二层解开才等价于关键字传参
参数结构只能用在函数传参中,其他地方不能用
在这里插入图片描述
少了不行,多了就需要可变参数在这里插入图片描述
解开是a=5,b=6,不满足xy,要看清标识符对应
在这里插入图片描述
要没有缺省值,参数就一定要对应,参数多了必须有可变参数
可变位置参数是元组,可变关键字参数收集以后是字典

在这里插入图片描述在这里插入图片描述
定义部分,可变位置参数(元组)
在这里插入图片描述
0+range10出问题
在这里插入图片描述
拿到range(10)解开,相当于本来可迭代的对象,立即拿出来,解构在这里插入图片描述
都要写星号,不写不行
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
上来编写函数就是def,至少接受两个参数
在这里插入图片描述在这里插入图片描述
觉得print不好用,可以用return
在这里插入图片描述
add(整体函数没有返回值,等于none)传参返回是none,
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值