day10 Python 命名空間和作用域

2022-09-05 20:12:12 字數 1079 閱讀 1449

1、命名空間

在python直譯器開始執⾏之後, 就會在記憶體中開闢⼀個空間, 每當遇到⼀個變數量的時候, 就把變量名和值之間的關係記錄下來, 但是當遇到函式定義的時候, 直譯器只是把函式名讀入記憶體, 表⽰這個函式存在了, 至於函式內部的變量和邏輯, 直譯器是不關心的. 也就是說一開始 的時候函式只是載入進來, 僅此而已, 只有當函式被呼叫和訪問的時候, 直譯器才會根據函式 內部宣告的變量來進行開闢變量的內部空間. 隨著函式執行完畢, 這些函式內部變數佔⽤的空 間也會隨著函式執行完畢⽽被清空.

我們給存放名字和值的關係的空間起⼀個名字叫: 命名空間. 我們的變數在儲存的時候就 是儲存在這片空間中的.

命名空間分類:

1. 全域性命名空間--> 我們直接在py⽂檔案中, 函式外宣告的變數都屬於全域性命名空間

2. 區域性命名空間--> 在函式中宣告的變量會放在區域性命名空間

3. 內建命名空間--> 存放python直譯器為我們提供的名字, list, tuple, str, int這些都是內建命名空間

載入順序:

1. 內建命名空間

2. 全域性命名空間

3. 區域性命名空間(函式被執行的時候)

取值順序:

1. 區域性命名空間

2. 全域性命名空間

3. 內建命名空間

2、作用域

作用域: 作⽤域就是作用範圍, 按照⽣效範圍來看分為全域性作⽤域和區域性作用域

全域性作用域: 包含內建命名空間和全域性命名空間. 在整個⽂件的任何位置都可以使用(遵循從上到下逐行執行). 區域性作用域: 在函式內部可以使用.

作⽤域命名空間:

1. 全域性作⽤域: 全域性命名空間 + 內建命名空間

2. 區域性作用域: 區域性命名空間

我們可以通過globals()函式來檢視全域性作用域中的內容, 也可以通過locals()來檢視區域性作用域中的變數和函式資訊

3、global和nonloca

global表示. 不再使用區域性作用域中的內容了. ⽽改⽤全域性作用域中的變數

nonlocal 表示在區域性作用域中, 調⽤父級命名空間中的變量.

day 10 python字元編碼

python 字元編碼 編碼 從人類認識的字元通過 編碼表一一對應轉換為編碼表上面的機器碼,這種方式稱為編碼 解碼 把通過編碼表轉換為的0101的機器碼再通過編碼表,一一對應,把機器碼再轉化為人類能識別的字元這個過程叫做解碼 python 中存在的幾種編碼方式 1 ascii python2直譯器預...

Python 命名空間

本文介紹python中命名空間中的legb原則。legb含 釋 l local function 函式內的名字空間,包括區域性變數和形參 e enclosing function locals 外部巢狀函式的名字空間 例如closure g global module 函式定義所在模組 檔案 的名字...

python 命名空間

作用域 第五章說過,將輸入字元作為命令放在作用域字典裡 作用域,每個函式都有乙個作用域,就是 字典,字典名字為函式名,鍵為變數,鍵值為變數對應的賦值。函式的作用域為區域性作用域 在函式內部訪問全域性變數,且只是讀取變數的值不重新繫結變數。這樣引用易出錯誤。慎重使用全域性變數 defcombine p...