python2和python3中的可变参数有什么不同?

查看:180
本文介绍了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 syntax

C:\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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆