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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python函数是否忽略传入的参数的数据类型?相关的知识,希望对你有一定的参考价值。

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

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函数忽略传入的参数的数据类型(或不变性?)以允许更多的运算符处理它们?

答案

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

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

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

以上是关于python函数是否忽略传入的参数的数据类型?的主要内容,如果未能解决你的问题,请参考以下文章

Python函数的参数类型

python 函数参数的类型

Python参数类型

Python 函数如何处理你传入的参数类型?

JavaScript中的函数

python-函数可变参数类型