python函数动态参数详解
2024-10-19 02:23:14
Python的动态参数:
1,参数前一个“*”:在函数中会把传的参数转成一个元组。
def func (*args):
print(args) func(123,1,2,'a') result:(123, 1, 2, 'a')
2,“**args”的参数:函数中被转成一个字典。
如果这样传参的话会报错,因为没有指定key或value:
def func (**args):
print(args) func(123,1,2,'a') result:TypeError: func() takes 0 positional arguments but 4 were given def func (**args):
print(args) func (a=1,b=2) result:{'a': 1, 'b': 2}
3,混合动态参数的情况:
def func (*args,**kwargs):
print("%s----%s" %(args,kwargs)) func (1,2,a=1,b=2) Result:(1, 2)----{'b': 2, 'a': 1} 也是没问题的,需要注意的是必须*args在前**kwargs在后,参数也是一样。
4,变量当动态参数的情况:
这种情况如果我们直接把一个list传到前面,一个dict传到后面: def func (*args,**kwargs):
print("%s----%s" %(args,kwargs)) list=[1,2]
dic={'a':1,'b':2} func (list,dic) Result:([1, 2], {'b': 2, 'a': 1})----{} 后面的字典竟然是空的- -! So,我们需要叫函数知道那个变量是*args的参数,哪个是**args的参数,正确传参写法: func(*list,**dic Result:(1, 2)----{'a': 1, 'b': 2}
最新文章
- jmeter(六)元件的作用域与执行顺序
- 微博开放平台开发(一)获取access_token
- oracle启动脚本 .
- Java中的try,catch,finally
- 【GOF23设计模式】代理模式
- Mysql limit offset
- NoSuchMethodError: resolveTypeArguments
- spring WebServiceTemplate 调用 axis1.4 发布的webservice
- Js 变量的作用域
- 【转】HttpServlet详解
- Java之Map
- 禁止select下拉框的其中某个选择项不能被选择
- zoj 1083 Frame Stacking
- Spring注入
- pwn入门题x2
- 架构-架构风格:REST
- TCP/UDP client/server library for Java, 最好的java语言tcp udp 服务器客户端实现库
- MS sql 无法进行事务日志备份
- unix:/tmp/php-cgi.sock
- soapUI-DataSource Loop