python學習筆記

2021-09-28 13:51:49 字數 1484 閱讀 7405

內部函式訪問外部變數搞蒙了 

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 ...