簡體   English   中英

全局名稱“a”是否與模塊在同一個命名空間中?

[英]Is the global name 'a' in the same namespace as the module?

import math

a = 1

def my_func():
    print('don\'t downvote')

my_func()

我相信 function 調用my_func( )位於為 function my_func( )創建的本地命名空間中 - 准備更正。 名稱a是否包含在為數學模塊創建的同一個全局命名空間中?

不,假設您的文件名為foo.py 導入模塊后,會為foo創建一個新的全局命名空間,它包含(除其他外)三個名稱:

  1. math ,指的是math模塊`
  2. my_func ,指的是您的 function
  3. a ,它指的是 1

調用 function 的位置並不重要。 如果my_func包含任何自由變量,它們將始終引用foo的全局命名空間,而不是調用它的命名空間。

math模塊有自己的全局命名空間。 (“全局”確實不是一個好詞;每個模塊都有自己的模塊級命名空間。)

Python 中唯一的“全局”命名空間是內置命名空間,可從所有模塊訪問。

暫無
暫無

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

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