【问题标题】:Are variable scopes different for strings and lists? Lists can be changed in a funtion without specifying a global variable, strings can not字符串和列表的变量范围不同吗?列表可以在函数中更改而无需指定全局变量,字符串不能
【发布时间】:2019-10-26 01:13:53
【问题描述】:

如果我在函数中更改字符串,更改不会在函数外部持续存在

def f():  
    s="Me too."

    print( s )

s="I love Geeksforgeeks" 
f() 
print(s)

>Me too. 
>I love Geeksforgeeks

但如果我对列表执行此操作,更改确实会持续存在

s=[]
def f():  
    s.append("Me too.")

    print( s )

s.append("I love Geeksforgeeks" )
f() 
print(s)

>['I love Geeksforgeeks', 'Me too.']
>['I love Geeksforgeeks', 'Me too.']

不同类型的变量的变量范围是否不同?

【问题讨论】:

    标签: python string list scope


    【解决方案1】:

    您在全局范围内定义列表,从不覆盖该定义。

    你在函数内部定义字符串,所以它在全局范围内是不可见的。

    【讨论】:

      【解决方案2】:

      这些情况是不等价的:在第一种情况下,您声明 s 并在函数范围内为其分配一个值(从全局范围内“隐藏”s),而在第二种情况下你在函数之前声明s,在函数内部你不会再次声明它(这将在函数范围内“覆盖”它)而是通过调用.append来开始使用它,而不是创建一个本地变量 s 指向一个新列表 - 您正在使用全局范围内的 s

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-01-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-21
        • 2020-12-13
        • 2023-04-05
        • 2020-10-23
        相关资源
        最近更新 更多