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