簡體   English   中英

Scope是否與Python中的變量和列表相同?

[英]Is Scope the same of variables and lists in Python?

a = 1.111111
b = ["a", "b"]


def adder(x, y):
    x = x *100000
    y[0] = "Herman"
    return x, y

print a
print b
print ""

adder(a,b)

print a # 1.111111 - has not updated
print b # ['Herman', 'b'] - has updated even if list is in gobal scope

范圍是否與Python中的列表,變量和其他對象相同? 在上面的測試中,當我調用/調用函數加法器時,變量a並未更新,但是列表已更新。 這意味着全局變量不能從函數內部更改,但是列表和其他數據容器對象(如字典)是可以更改的。

那是對的嗎? 有什么簡單的方法可以在腦海中腦海中模擬這個想法?

每當將列表傳遞給函數時,您都將傳遞其地址,因此可以在函數中對其進行更新,而對於變量,則需要通過引用將其傳遞以使其成功更新。

默認情況下,在函數內定義的變量(重新)是局部的。 您的x屬於此類別。 但是y[0] = "Herman"並未重新定義y ,而是通過重新分配其第一個元素來對其進行突變。 因此,它不被認為是本地的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM