繁体   English   中英

为什么Python会打印出来?

[英]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=5j=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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM