第6 2節 Python特色的動態可執行方法簡介

2021-09-24 02:43:10 字數 1151 閱讀 3157

一、    基本概念

動態可執行,是指在**中通過外部輸入或**嵌入的常量字串包含**的方式提供python**,要求python執行這些**。這樣就可以達到開放式執行的效果,提高程式的能力和靈活性。

動態可執行的方法帶來方便和靈活性的同時,其實還是帶來了安全性威脅。安全性威脅體現在兩個方面:

1、    動態執行的**可能改變原有**的執行環境,導致出現異常的資料和執行結果。這個威脅可以通過名字空間(namespace)解決;

2、    動態執行**本身帶有攻擊性,如檔案的改變等。這個本節的動態可執行方法沒有好的辦法解決,最好的辦法是控制輸入的資料只允許特定的字串出現。後續有可以解決的辦法,等研究學習後再補充。

二、    關於名字空間

名字空間這個概念在函式介紹的章節做了一些介紹,本節再系統的介紹一下。名字空間(namespace)又被稱為命名空間,實際上是乙個**訪問的作用域,該空間內存放著相關的變數,不同名字空間的變數相互之間是隔離的,這種隔離確保同樣名稱的變數對應不同的資料,這樣各個**操作時只能影響自己操作空間的變數,不會影響沒有操作空間的變數。

名字空間在python內部是基於字典實現,鍵為變數名,值是變數對應的值,因此是名稱到物件的對映。具體可見介紹compile方法時的例子。

python的名字空間有三類:

1、local(區域性名字空間):每個函式所擁有的名字空間,記錄了函式中定義的所有變數,包括函式的入參、內部定義的區域性變數。在函式被呼叫時才被建立,但函式返回結果或丟擲異常時被刪除。(每乙個遞迴函式每次遞迴呼叫都擁有自己的區域性名字空間);

2、global(全域性名字空間):在模組被載入時建立,記錄了模組中定義的變數,包括模組中定義的函式、類、其他匯入的模組、模組級的變數與常量。通常一直保留直到python直譯器退出;

3、built-in(內建名字空間):自帶的內建名字空間,任何模組均可以訪問,放著內建的函式和異常。在python直譯器啟動時建立,一直保留直到直譯器退出。

python程式執行期間會有2個以上活動的名字空間。三種名字空間的存續週期及順序如下:

建立順序:python直譯器啟動 ->建立內建名字空間 -> 載入模組 -> 建立全域性名字空間 ->函式被呼叫 ->建立區域性名字空間。

銷毀順序:函式呼叫結束 -> 銷毀函式對應的區域性名字空間 -> python虛擬機器(直譯器)退出 ->銷毀全域性名字空間 ->銷毀內建命名空。

Python的特色語法

大嬸向左不送,新手向右請進。剛剛開始學習python,用博文記錄一下自己學習的程序,如果能夠幫助到同樣想學習python的朋友更好。python 的不同之處 1 python 注釋使用 2 python的整數沒有大小限制 3 python輸出中文時 編輯前加入 coding utf 8 告訴pyth...

leetcode 第62題 不同路徑 動態規劃

我小時候還經常想這一類的問題呢,哈哈。題目 乙個機械人位於乙個 m x n 網格的左上角 起始點在下圖中標記為 start 機械人每次只能向下或者向右移動一步。機械人試圖達到網格的右下角 在下圖中標記為 finish 問總共有多少條不同的路徑?首先想到的是遞迴,但是用的時間太長了。還是用動態規劃比較...

第8 2節 Python類的 init

前面 第8.1節 python類的構造方法 init 深入剖析 語法釋義 一節介紹了構造方法定義的語法,並進行了語法解釋說明,本節將通過案例來說明構造方法引數傳遞及返回值的情況。一 案例說明 本節定義乙個汽車類,它有四個例項變數 wheelcount,power,oilcostperkm,total...