[英]Why does Python print this?
有人可以解释为什么此Python代码:
def function(string, i, j):
if (i < j):
i = i+1
string1 = string[i:j] return string1
else:
return string
# main
string = "four score and seven years ago"
i = 5
j = 9
stringslice = function(string, i, j)
print (stringslice)
print (i, j)
打印:
cor
5 9
我认为它应该打印以下内容:
cor
6 9
被递增的i在该函数中是本地的,并且不影响主代码的i。 因此,当您打印我的原稿时
因为i=5
和j=9
是在函数范围之外分配的,所以只能在函数中更改它们,但是在打印它们时,它们在函数范围之外,因此实际上从未更改过
更多关于可变范围
当您在函数内部更改值时,更改不会反映在外部。
以稍微不同的表示方式,在def function(string, i, j):
我们有3个形式参数,其中之一是i
。 我可以使用function("str", 3, j)
进行调用,并且在调用方中没有要更新的i
。
标量/不可变类型(int,float,string)不会在函数本身之外被函数修改。
尽管在有限的意义上修改了复合类型。 EG,如果将字典传递给函数并在函数中对其进行更改,则可以修改字典中的元素,但是如果将不同的字典分配给相同的变量,则更改不会在函数外部看到。 IOW,您可以更改词典包含的内容,而不是词典本身。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.