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函数是否忽略传入的参数的数据类型?的主要内容,如果未能解决你的问题,请参考以下文章