文档章节

【flag】python 收集参数 关键字收集参数 ~解包解包! 注意细节呀

o
 osc_4nmshwhm
发布于 2018/08/07 12:15
字数 671
阅读 6
收藏 0

精选30+云产品,助力企业轻松上云!>>>

 

 收集参数

- 未被定义的可以放入函数中的不限个数的参数

- 这些实参被收集为一个元胞数组(tuple)

- 语法:    

1 def func(*argus):
2     func_body
3 
4 # 调用
5 func(p1,p2,p3...)


关键字收集参数

- 把关键字参数按字典格式存入收集参数

- 语法:

1 def func(**kwargs):
2     func_body
3 
4 # 调用
5 func(p1=v1,p2=v2,p3=v3...)

- details:
  - 若原函数中有关键字形参 则形参对应实参外的多余参数被放入关键字收集参数中

栗子:

 1 def func(**kwargs):
 2     print('这是一个有关键字收集参数的函数')
 3     print(type(kwargs))
 4     # 访问字典中的内容格式!!!!!!!!!
 5     for k,v in kwargs.items():
 6         print(k,'=',v)
 7      
 8     
 9 
10 func(a='A',b=2,c=3)

执行结果:

这是一个有关键字收集参数的函数
<class 'dict'> a = A b = 2 c = 3

 

参数混合使用时的调用顺序

这个不好说 📕 啦啦啦 小栗子帮忙解释下(*Φ皿Φ*)

栗子:

 1 # 开学时的自我介绍
 2 # 注意参数的顺序们
 3 def stu(name,age,*args,hobby='none',**kwargs):
 4     print('hello everyone')
 5     print('i am {0}, {1} years old'.format(name,age))
 6     if hobby == 'none':
 7         print('sorry,i am a boring teenager')
 8     else:
 9         print('my hobby is {0}'.format(hobby))
10     print('以下是收集参数')
11     # 又是收集参数的用法!!!
12     for i in args:
13         print(i)
14     print('以下是关键字收集参数')
15     for k,v in kwargs.items():
16         print(k,'is',v)
17         
18         
19 stu(name='lily',age=18)
20 print()
21 stu('lily',18,'i am glad to meet all of you','lalalalala','happy very much!!!',hobby='pianting',hobby2='singing',hobby3='eating')

执行结果:

hello everyone
i am lily, 18 years old
sorry,i am a boring teenager
以下是收集参数
以下是关键字收集参数

hello everyone
i am lily, 18 years old
my hobby is pianting
以下是收集参数
i am glad to meet all of you
lalalalala
happy very much!!!
以下是关键字收集参数
hobby2 is singing
hobby3 is eating


 

 收集参数的解包

(将参数装入list后 把list的值放入收集参数 而非把list放入收集参数)

栗子:

 1 def func(*args):
 2     for i in args:
 3         print(type(i))
 4         print(i)
 5 # 直接调用        
 6 l = [1,2,3,4,5]
 7 func(l)
 8 
 9 print()
10 # 对list进行解包(也用✳)
11 l1 = [5,4,3,2,1]
12 func(*l1)

执行结果:

<class 'list'>
[1, 2, 3, 4, 5]

<class 'int'>
5
<class 'int'>
4
<class 'int'>
3
<class 'int'>
2
<class 'int'>
1

 

 

补充:对字典格式的的访问 

🌰:

1 # 双层列表(嵌套列表)
2 a = [[1,2,3],['q','w','e'],['*','*','*']]
3 # 遍历
4 for x,y,z in a:
5     print(x,'-',y,'-',z)
6 # 看 它们是一一对应的

执行结果:

1 - 2 - 3
q - w - e
* - * - *

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

以太坊智能合约开发常见的10个安全问题

本文介绍CheckMarx安全研究小组通过扫描公开的以太坊智能合约所发现的Solidity智能合约开发中常见的十大安全问题,其中__未检查的外部调用__ 和 高成本循环 分列排行榜前两名。该安全问题排行...

区块链教程
今天
17
0
Android Studio写flutter快捷键

1.stl :代表StatelessWidget 2.stf :StatefulWidget 3.cmd + shift + 减号 :折叠所有代码 4.cmd + 减号 :折叠当前代码块 5.ctrl + r :编译运行 6.cmd + s :hot reload 7.cmd + { :回到...

一代码农码一代
今天
21
0
远程桌面如何修改登录密码

打开运行, C:\Windows\explorer.exe shell:::{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0} 即可 https://www.itexperience.net/10-ways-to-change-password-in-remote-desktop-session/......

ethanleellj
今天
17
0
easyui的menu接收后台集合,并且根据集合利用appendItem动态生成菜单项,判断菜单项的字数大于指定长度,则多余字符以。。。显示,并且悬浮提示

JSP: <a id="bb" href="javascript:void(0);" class="easyui-menubutton" data-options="menu:'#layout_north_stMenu222',iconCls:'icon-cologne-sign-out'" >导出</a><div id="aaa" style......

文文1
今天
31
0
Mysql主从同步

1主从同步 1.1Master 1.1.1配置--编辑 my.cnf #编辑 mysql 的 /etc/my.cnf 配置文件vi /etc/my.cnf#添加如下配置server-id=1 #设置服务 IDlog_bin=mysql-bin #启动 binlog...

风雪满弓刀
今天
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部