我是python的新手。请看这个脚本:
def myfunc(*args):
print len(args)
if args == 3:
for arg in args:
print arg
else:
print "exit"
a, b, c = 1, 2, 3
myfunc(a, b, c)
如您所见,传递给函数的参数数量为3。现在条件args==3
为True
,但else
部分已执行。另一方面,如果if
条件为假,则执行该部分代码并跳过else
。
你能解释为什么在{False条件下执行if
语句吗?
答案 0 :(得分:7)
不,args == 3
不 True
。你可能意味着len(args) == 3
。
答案 1 :(得分:4)
我认为你必须做len(args)==3
而不是args==3
:
if len(args)==3:
条件args==3
永远不会成为真,因为args
成为函数内的元组。
所以,即使您通过myfunc(3)
,您也会匹配(3,)==3
,False
。
答案 2 :(得分:0)
您必须应用len(args) == 3
而不是args == 3
,因为如果您使用args
,那么它就是一个tupple列表,如果您检查它,则必须转到else
条件
def myfunc(*args):
if len(args) == 3:
for arg in args:
print arg
else:
print "exit"
a, b, c = 1, 2, 3
myfunc(a, b, c)
此代码为您提供预期结果。