1. 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頁面的作用范圍內的。
2. python 程序中有多少全局作用域有多少局部作用域
我感覺B是對的。
3. python 函數作用域問題,
類在定義的時候是有作用域的,這個作用域內的變數只能在 class 塊內訪問,而不能在類的方法(函數)中訪問。
4. python中什麼叫局部作用域
1.這個怎麼看,我不能理解;2.全局變數局部變數有什麼區別嗎? 區別肯定有的,不然名字就沒必要區分了。全局的作用域比較大,一般在程序代碼中任何地方都可以調用,局部變數一般只在函數內部使用。3.函數,說白了就是實現不同功能的代碼段,比如MAX(a,b,c,...)函數,求最大值, MIN(a,b,c,...)函數,求最小值等、、、、還有很多。函數一般只知道使用方法(比如所需參數,返回值)和實現功能就行。
5. Python 中作用域與命名空間的問題
i=2這一句是定義了一個局部變數i,並賦值為2;這個時候全局作用域的i會被屏蔽,所以全局變數i是沒有被修改的所以結果是1;
訪問全局變數時可以直接訪問,但是修改全局作用域的時候一定要在賦值之前,進行如下聲明:
deff():
globali
i=2
因為python里賦值語句和聲明變數是一個體的,所以需要global來告訴解釋器i是全局變數,接下來的i=2才能被當作是賦值
------------------追答---------------------
同一個代碼塊(作用域)里, 同一個變數的作用域只能是同一種或者說同一個變數只能來自同一個作用域, 不能是一會是局部變數然後又變成全局變數;
i = i + 1
首先前面的'i='表明了i是一個局部變數(沒有global聲明, 創建局部變數), 然後後面的'i+1'里的i自然也是局部變數(同一個函數下同一個變數,i已經是局部變數了, 不能再當作全局變數去用), 那麼自然會報錯, i在使用前未聲明
i += 1
報錯就更明顯了, 沒有global聲明 那麼再修改變數i的時候, 自然是當作局部變數, 使用前未聲明
變數的查找順序遵循 LEGB 可以自己網路
關於作用域給你再寫個簡單的示例, 你對照著理解一下
6. 初學python,有關函數作用域問題
deffun1():
x=5
deffun2():
returnx
returnfun2()
fun1()
x值不能改變。圖二也是一樣,如y*=y or y+=1,Y值改變也是不行的
7. python global的作用域
golbal s 指定當前作用域裡面的s是全局的,不影響其他的作用域
8. python語言,作用域,這兩有區別嗎,,
當然有,例如一個循環體內的變數,作用域只在循環體內的一次循環中
9. Python語言中作用域怎麼理解
命名空間 是從命名到對象的映射。當前命名空間主要是通過 Python 字典實現的,不過通常不關心具體的實現方式(除非出於性能考慮),以後也有可能會改變其實現方式。以下有一些命名空間的例子:內置命名(像 abs() 這樣的函數,以及內置異常名)集,模塊中的全局命名,函數調用中的局部命名。某種意義上講對象的屬性集也是一個命名空間。關於命名空間需要了解的一件很重要的事就是不同命名空間中的命名沒有任何聯系,例如兩個不同的模塊可能都會定義一個名為 maximize 的函數而不會發生混淆-用戶必須以模塊名為前綴來引用它們。
順便提一句,我稱 Python 中任何一個「.」之後的命名為 屬性 --例如,表達式 z.real 中的 real 是對象 z 的一個屬性。嚴格來講,從模塊中引用命名是引用屬性:表達式 modname.funcname 中,modname 是一個模塊對象,funcname 是它的一個屬性。因此,模塊的屬性和模塊中的全局命名有直接的映射關系:它們共享同一命名空間![1]
屬性可以是只讀過或寫的。後一種情況下,可以對屬性賦值。你可以這樣做: modname.the_answer = 42 。可寫的屬性也可以用 del 語句刪除。例如: del modname.the_answer 會從 modname 對象中刪除 the_answer 屬性。
不同的命名空間在不同的時刻創建,有不同的生存期。包含內置命名的命名空間在 Python 解釋器啟動時創建,會一直保留,不被刪除。模塊的全局命名空間在模塊定義被讀入時創建,通常,模塊命名空間也會一直保存到解釋器退出。由解釋器在最高層調用執行的語句,不管它是從腳本文件中讀入還是來自互動式輸入,都是 __main__ 模塊的一部分,所以它們也擁有自己的命名空間(內置命名也同樣被包含在一個模塊中,它被稱作 builtins )。
當調用函數時,就會為它創建一個局部命名空間,並且在函數返回或拋出一個並沒有在函數內部處理的異常時被刪除。(實際上,用遺忘來形容到底發生了什麼更為貼切。)當然,每個遞歸調用都有自己的局部命名空間。
作用域 就是一個 Python 程序可以直接訪問命名空間的正文區域。這里的直接訪問意思是一個對名稱的錯誤引用會嘗試在命名空間內查找。盡管作用域是靜態定義,在使用時他們都是動態的。每次執行時,至少有三個命名空間可以直接訪問的作用域嵌套在一起: