Python Library在實際操作中具有十分強大的功能
以下的文章是通過Python Library: Exec & Compile的相關實際操作代碼的介紹來介紹Python Library在實際操作的相關步驟,以下是文章內容的具體介紹,希望你在瀏覽完下面的文章會有所收獲。
直接運行代碼字符串也是動態(tài)語言的一個重要特征。雖然在 .NET/C# 里也可通過 CodeDom 實現類似的功能,但遠沒 Python 這么方便自由。
- >>> code = """
- def test(s):
- print "test:", s
- a = 123
- """
- >>> exec code
- >>> a
- 123
- >>> test("abc")
- test: abc
內置函數里還有 eval() 和 execfile() 都是用來做類似事情的。exec 關鍵字執(zhí)行多行代碼片段,eval() 函數通常用來執(zhí)行一條包含返回值的表達式,而 execfile 自然是用來執(zhí)行源碼文件了。
- >>> a = 10
- >>> x = eval("a + 3")
- >>> x
- 13
eval() 和 execfile() 都有 "globals, locals" 參數,用于傳遞環(huán)境變量,默認或顯式設置為 None 時都直接使用 globals() 和 locals() 獲取當前作用域的數據。
- >>> x = eval("a + b", {}, {})
傳遞空值,使其無法獲取本地信息
- Traceback (most recent call last):
- File "<pyshell#21>", line 1, in <module>
- x = eval("a + b", {}, {})
- File "<string>", line 1, in <module>
- NameError: name 'a' is not defined
- >>> x = eval("a + b", {}, { "a":123, "b":2})
顯式傳遞環(huán)境信息
- >>> x
- 125
以上文章的內容是對Python Library的實際相關應用操作過程中操作的部分介紹。
【編輯推薦】