Python 为什么在args中使用一个参数时函数的结果不同?

Python 为什么在args中使用一个参数时函数的结果不同?,python,jupyter-notebook,args,Python,Jupyter Notebook,Args,当我在args中传递1个参数时,它返回/打印元组中的参数和逗号。但是为什么不在两个或更多参数后添加逗号呢 def print_args(*args): print(args) #If arguments are more than one or zero: print_args(1,2,3) #Out: (1,2,3) print_args(1,2) #Out: (1,2) print_args() #Out: () #If I pass 1 argurment

当我在args中传递1个参数时,它返回/打印元组中的参数和逗号。但是为什么不在两个或更多参数后添加逗号呢

def print_args(*args):
    print(args)

#If arguments are more than one or zero:

print_args(1,2,3)  #Out: (1,2,3)
print_args(1,2)    #Out: (1,2)
print_args()       #Out: ()

#If I pass 1 argurment:

print_args(1)      #Out: (1,)  ?
print_args("a")    #Out: ('a',)?
print_args([])     #Out: ([],) ?

#Using return statement instead of print():

def return_args(*args):
    return args

return_args(1,2) #Out: (1, 2)
return_args(1) #Out: (1,)

在单个项周围添加括号与冗余分组相同,并且不会将对象创建为元组。从:

一个特殊的问题是构造包含0或1的元组 items:语法有一些额外的怪癖来适应这些。空的 元组由一对空括号构成;具有 一项是通过在值后面加逗号(不是逗号)来构造的 足够将单个值括在括号中)


文章结尾评论说,这种实现确实“丑陋,但有效。”

不是严格的重复,但这与