內部函式訪問外部變數搞蒙了
1.內部函式,不修改全域性變數可以訪問全域性變數
a = 10
def test():
b = a + 2 #僅僅訪問全域性變數 a
print(b)
test()
輸出結果為:
12
2.內部函式,修改同名全域性變數,則python會認為它是乙個區域性變數(同教程最後乙個例子)
#!/usr/bin/python3
a = 10
def test():
a = a + 1 #修改同名的全域性變數,則認為是乙個區域性變數
print(a)
test()
3.在內部函式修改同名全域性變數之前呼叫變數名稱(如print sum),則引發unbound-localerror
參考4.import a.b as b1
import b as b2
from a.b import var1
b模組包含var1 全域性變數 三種方式獲得的var1變數不同!注意匯入方式
但 import a.b as b1 與 from a import b as b4 兩種var1 相同
新增模組搜尋路徑
為了解決上述問題,需要新增模組搜尋路徑,可以使用以下幾種方式:
1.動態增加路徑
臨時生效,對於不經常使用的模組,這通常是最好的方式,因為不必用所有次要模組的路徑來汙染 pythonpath。
2.修改 pythonpath 變數
永久生效,對於在許多程式中都使用的模組,可以採用這種方式。這將改變所有 python 應用的搜尋路徑,因為啟動 python 時,它會讀取這個變數,甚至不同版本的 python 都會受影響。
3.增加 .pth 檔案
永久生效,這是最簡單的、也是推薦的方式。python 在遍歷已知的__特定目錄__過程中,如果遇到 .pth 檔案,便會將其中的路徑加入到 sys.path 中,於是 .pth 中所指定的路徑就可以被 python 執行環境找到了。
上面提到的__特定目錄__是通過site
模組下的getsitepackages
方法獲得的,該方法返回乙個路徑組成的list:
import site
site.getsitepackages()
4. 關於幾個路徑
參看參考:
4.配置類構造以及單例模式
參考
這裡討論如何判斷 key(鍵) 或者 value(值)是否在列舉中
from enum import enum
class testenum(enum):
key1 = 0
key2 = 1
"key1" in testenum.__members__
0 in testenum._value2member_map_
python教學筆記 python學習筆記(一)
1.eval 函式 eval是單詞evaluate的縮寫,就是 求.的值的意思。eval 函式的作用是把str轉換成list,dict,tuple.li 1 1,2,3 print eval li 1 di 1 print eval di 1 tu 1 2,4,6 print eval tu 1 執...
python學習筆記
coding utf 8 coding utf 8 應該像八股文一樣在每個指令碼的頭部宣告,這是個忠告 為了解決中文相容問題,同時你應該選擇支援 unicode 編碼的編輯器環境,保證在執行指令碼中的每個漢字都是使用 utf 8 編碼過的。cdays 5 exercise 3.py 求0 100之間...
Python 學習筆記
python 學習筆記 def run print running.def execute method method execute run result running.condition false test yes,is true if condition else no,is false ...