1. python with語句中的變數有作用域嗎

2. python局部變數的問題

Python 不存在塊級作用域的
if else 屬於塊級作用域

3. PYTHON 的變數作用域與內存分配

原理:python中任何變數都是對象,所以參數只支持引用傳遞方式。即通過名字綁定的機制,把實際參數的值和形式參數的名稱綁定在一起,形式參數和實際參數指向內存中的同一個存儲空間。
回答問題2:
每一次給變數賦值就是把這個名稱的值在一個新內存中存儲 你print (id (a)) 會發現每一次f(x),a的內存地址都是新的。所以你的問題二中L=[4,3] 與之前的L[]不是同一個名稱,所以append上a就是[4,3,3](簡明點就是L=[4,3]與L=[1,2]是兩不同名的玩意)
討論問題1:
在你的程序中a=1,a=2,a=5是int對象的三個實例,所以佔用的是三段不同的內存,自然在程序執行完收回內存的時候才會被清理;而L是通過列表的append方法進行變化時,print (f(1))
print (f(2)) print (f(5))是對對一個實例進行操作的,所以內存地址不變; 同理print (f(3,[4,3]))直接給L賦值時,由於 是一個新的列表實例了,內存位置自然變化。

產生以上的問題的根本原因就是python的精髓:萬物皆對象 (賦值的過程是對象的實例化)

看完自己的回答後:感覺真的很繞,不過我是盡力了,希望你能看懂,不明白的話,在追問里註明吧!

4. python 在函數裡面定義的變數,在外面就不能用了我不是很想用global

嚴格的說,象你這么用是絕對屬於沒有定義的。

不過有時候又可以是因為,如版果你在程序開頭函數前權面定義一些變數,原則上它會自動變成global的。 除非你另外啟線程,或者是有可能有與它重名的變數,否則可以直接在函數體內使用,當然也可以在後面的語句中使用。

函數式編程要記著IPO這個准則。就是每個函數最好都是有輸入input有輸出output。函數體就是處理process。盡量不要使用全局變數,也不要使用默認值。一個正規的做法是這樣:

def example(a):
a=0
return a

a=1
print example(a)

這是一個標准用法,你就不用為global變數頭痛了。

5. 沒看python的基礎,求教python變數的作用域問題,下面附代碼,感謝!

count = 0
def onOpen(self): #文件導入
path = QtGui.QFileDialog.getOpenFileName(self, 'Open file','./')
file = open(path)
data = file.read()
self.newItem = QtGui.QTableWidgetItem(file.name)
self.table.setItem(0,count,self.newItem)
global count
count += 1

這樣就行了,python有點扯,全局標量要申明下。

6. python變數的作用域到底怎麼理解怎麼用呢謝謝!

你可以 在 B頁面 裡面直接 調用 一下 函數
運行一下 ,你可以發現應該和 剛才 執行A 頁面 報的是同樣的錯誤;

這是 因為 在B 頁面裡面 並沒有 s1List 這樣一個數組

在運行A頁面時,因為有了 from b import * ,python解釋器就可以找的getS1和getS2這樣的函數名;可以 在 import 之後 print dir() 來查看 當前作用域下可用的名字 ,可以看到 getS1 和getS2 都在其中

之所以 執行 A頁面錯誤,是A頁面調用 函數 getS1 時,在B頁面中 執行 函數時找不到 s1List這個數組,因為在A 頁面的那個 s1List 是不在 B頁面的作用范圍內的。

7. python 2.7 變數作用域的疑問

在函數中定義和修改全局變數,需要使用global關鍵字。但訪問全局變數(不修改它的值),可以省略global關鍵字。python這樣設計的意義在於,防止python程序員不小心修改了全局變數。使用global關鍵字後,程序員很清楚自己正在做什麼。


在例三中,b()函數並沒有修改全局變數u。u是一個對象的引用,有唯一的對象ID。在修改了變數的引用,導致變數ID改變是,才算是「修改了對象」。例如:

u={}
deffoo():
globalu
u=1
returnu
printfoo()

這是全局變數u被修改,因為它由一個字典變成了一個int對象,它的值發生了變化。


望點贊,謝謝支持!

8. python中lambda對於變數作用域的問題

從使用的地方往外查找。所以才有局部變數覆蓋全局變數的現象。

9. python 函數作用域問題,

類在定義的時候是有作用域的,這個作用域內的變數只能在 class 塊內訪問,而不能在類的方法(函數)中訪問。

10. Python 變數初值突變問題或者叫變數作用域問題

不是不相干,是你把x和i的值修改了 比如這句: x=2 squared = [x ** 2 for x in range(4)] 你在第一句的時候x是2 但是第二句展開的話就變成了 x = 0