python2和python3中的可变参数有什么不同?
本文介绍了python2和python3中的可变参数有什么不同?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
def concat( *args,sep="/" ):
print(sep.join(args))
concat("aaaa","bbbb","cccc")
concat("aaaa","bbbb","cccc",sep=".")
C:\Users\admin>python C:\Users\admin\Desktop\module1.py
File "C:\Users\admin\Desktop\module1.py", line 1
: def concat( *args,sep="/" ):
SyntaxError: invalid syntaxC:\Users\admin>python3 C:\Users\admin\Desktop\module1.py
aaaa/bbbb/cccc
aaaa.bbbb.cccc
如上,在2中语法错误,在3中能运行
解决方案
以python2.7x
说明:
参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
看这个例子:
def f(a, b=0, *args, **kw):
print a,b,args,kw
调用:
In [6]: f(1,2,3,4,c=5,d=6)
1 2 (3, 4) {'c': 5, 'd': 6}
但是有一点,就是在调用的时候, 默认参数后面必须是默认参数,也就是说,默认参数(包括关键字参数)必须在最后。
In [7]: f(1,b=2,3,4,c=5,d=6)
File "<ipython-input-7-12fe2b3ef8e0>", line 1
f(1,b=2,3,4,c=5,d=6)
SyntaxError: non-keyword arg after keyword arg
In [8]: f(1,b=2,c=5,d=6)
1 2 () {'c': 5, 'd': 6}
大概就是这个样子了。
这篇关于python2和python3中的可变参数有什么不同?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文