python函数是否忽略传入的参数的数据类型?

问题描述 投票:-1回答:1

我编写了一些代码,允许在函数内的元组上使用+ =运算符,但不会让相同的+ =运算符在函数外部的元组上运行。

def append_to_sequence (myseq):
    myseq += (9, 9, 9)
    return myseq

tuple1 = (1, 2, 3)
tuple2 = append_to_sequence(tuple1)

print (tuple1) # prints (1, 2, 3)
print (tuple2) # prints (1, 2, 3, 9, 9, 9)

但是下面的代码返回了无效的语法错误:

>>> tuple1 = (1, 2, 3)
>>> tuple2 = tuple1 += (9, 9, 9)
  File "<stdin>", line 1
    tuple2 = tuple1 += (9, 9, 9)
                     ^
SyntaxError: invalid syntax

我必须写这个以获得与上面的append_to_sequence函数相同的效果。

tuple1 = (1, 2, 3)
tuple2 = tuple1 + (9, 9, 9)

因此,当它传递给函数时,似乎+ =运算符正在处理元组,即使它不能在函数外部的不可变对象上工作。我只是好奇如果python函数忽略传入的参数的数据类型(或不变性?)以允许更多的运算符处理它们?

python tuples immutability
1个回答
1
投票

tuple1 += (9, 9, 9)不是有效的左值。它与类型无关:此代码示例也因语法无效而失败:

a = 0
b = 1
c = a += b

如果你在python shell中运行它,你会看到a + b评估为打印的值,但a += b没有。

© www.soinside.com 2019 - 2024. All rights reserved.