1

我是 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)

如您所见,传递给函数的参数数量是三个。现在条件args==3True,但该else部分已执行。另一方面,如果if条件为假,则执行并else跳过该部分代码。

你能解释为什么该if语句是在 False 条件下执行的吗?

4

3 回答 3

7

args == 3不是 。你可能的意思是。 Truelen(args) == 3

于 2012-10-23T09:49:04.447 回答
4

我认为您必须这样做len(args)==3而不是args==3

if len(args)==3:

条件args==3永远不会为真,因为它args成为函数内部的元组。

所以即使你通过了myfunc(3),那么你也将匹配(3,)==3,即False

于 2012-10-23T09:48:59.910 回答
0

You have to apply len(args) == 3 instead of args == 3 because if you use args then it is a list of tupple and if you check against it must go to else condition.

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)

This code give you an expected result.

于 2012-10-23T10:02:49.910 回答