gpt4 book ai didi

python - 应用于三元运算符参数的一元运算符的用法(例如,应用于字符串的 *operator 参数)

转载 作者:行者123 更新时间:2023-11-28 21:53:02 25 4
gpt4 key购买 nike

这是我在做的:

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

- 运算符不适用于整个三元语句,而 * 运算符适用。为什么? * 运算符有什么特别之处?

最佳答案

编辑:我更改了问题,但由于下面的有用评论,我将在此处留下这个答案。修改后的问题的答案可以总结为:

“运算符优先级,假人。”


啊哈!我应该多做一些实验:

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

关于python - 应用于三元运算符参数的一元运算符的用法(例如,应用于字符串的 *operator 参数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27323865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com