【发布时间】:2015-02-04 02:15:19
【问题描述】:
这就是我正在做的事情:
def func(a,b=1,*args):
print('a:',a,'b:',b,'args:',*args if args else 'No args')
func(1,2)
这是我的预期:
#a:1 b: 2 args: No args
这是我实际得到的:
#a:1 b: 2 args: N o a r g s
* 运算符正在解压'No args' 字符串。所以这就是我应该做的:
#Produces expected result:
def func(a,b=1,*args):
print('a:',a,'b:',b,'args:',*args if args else ['No args'])
所以* 运算符被应用于整个三元语句。但是- 运算符似乎不会发生这种情况:
def func(a,b=1,*args):
print('a:',a,'b:',b,'negative args[0]:', -args[0] if args else 1000000)
func(1,2)
#expected result:
#a:1 b: 2 negative args[0]: -1000000
#actual result:
#a:1 b: 2 negative args[0]: 1000000
否定的- 运算符不适用于整个三元语句,而* 运算符则适用。为什么? * 运算符有什么特别之处?
【问题讨论】:
标签: python python-3.x ternary-operator