gux 发表于 2021-1-20 12:57:51

关于收集参数作为元组的长度

考虑以下程序:
def testfun(*var):
    return len(var)
print('testfun(1,2,3)的长度是', testfun(1,2,3))
x = (1,2,3)
print('testfun(x)的长度是', testfun(x))

其运行结果为
testfun(1,2,3)的长度是 3
testfun(x)的长度是 1

由此可见,当函数 testfun() 的参数为一组收集参数时,对于一个元组 x = (1, 2, 3), testfun(x) 会把 x 当作一个变量而不是 len(x) 个变量。

我的问题是:能否在只提到元组x, 而不提到 x 的具体元素的情况下表达出与 testfun(1, 2, 3) 等价的内容?

逃兵 发表于 2021-1-20 13:31:08

x前加个*
def testfun(*var):
    return len(var)
print('testfun(1,2,3)的长度是', testfun(1,2,3))
x = (1,2,3)
print('testfun(x)的长度是', testfun(*x))

gux 发表于 2021-1-20 13:34:26

逃兵 发表于 2021-1-20 13:31
x前加个*

多谢!

qq1151985918 发表于 2021-1-20 13:43:08

def testfun(*var):
    if len(var)==1 and isinstance(var,tuple):
      var = var
    return len(var)
print('testfun(1,2,3)的长度是', testfun(1,2,3))
x = (1,2,3)
print('testfun(x)的长度是', testfun(x))

gux 发表于 2021-1-20 15:36:07

qq1151985918 发表于 2021-1-20 13:43


多谢!

Python初学者8号 发表于 2021-1-20 15:50:11

def testf(*var):
    print("var =", var, type(var))

    # print("a =", a, type(a))

x = (1,2,3)

这样吧,按照你这个testfun(x)传入进入的话,只是传进去一个元组,只有一个元素,这个元素九十var ————(1,2,3)

testf(x)
页: [1]
查看完整版本: 关于收集参数作为元组的长度