簡體   English   中英

如果沒有在Python中導入,全局命名空間中的內置模塊的內容如何可用?

[英]How are the contents of the builtins module available in the global namespace without import in Python?

我一直在使用Python很長一段時間。 我從來沒有發現內置函數是如何工作的。 換句話說,如果沒有導入任何模塊來使用它們,它們是如何被包含的? 如果我想添加(本地)怎么辦?

這可能看起來很幼稚。 但是,我還沒有真正找到任何答案,全面解釋我們在開發腳本時如何使用內置函數,全局變量等。

簡而言之,我們在哪里包含內置模塊?

我遇到過這個問題 但它給出了我的問題的部分答案。

答案的非實現細節部分是builtins模塊,或Python 2中的__builtin__ ,提供對內置命名空間的訪問。 如果你想修改內置插件(你通常不應該這樣做),在builtins設置上設置屬性是你如何去做的。

實現細節部分答案是Python以多種方式跟蹤內置函數。 例如,每個框架對象都會跟蹤它正在使用的內置命名空間,這可能與其他框架的內置命名空間不同。 您可以通過框架的f_builtins屬性訪問它。 LOAD_GLOBAL指令無法在框架的全局變量中找到名稱時,它會查看框架的內部結構。 在大多數全局命名空間中還有一個__builtins__全局變量,但它並不直接用於內置變量查找; 相反,它用於在幀對象創建期間在某些情況下初始化f_builtins 全局PyInterpreterState還有一個builtins引用,如果沒有當前幀對象,它將用作默認內置函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM