全局名称'a'与模块位于同一命名空间中吗?

问题描述 投票:1回答:1
import math

a = 1

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

my_func()

我相信函数调用my_func()位于为函数my_func()创建的本地名称空间中-已准备好进行更正。名称[[a是否包含在为math模块创建的同一全局命名空间中?

python module namespaces global
1个回答
0
投票
没有假设您的文件名为foo.py。导入模块时,将为foo创建一个新的全局名称空间,该名称空间包含(其中包括)三个名称:

    [math,指的是math模块`
  1. my_func,指的是您的功能
  2. a,指的是1
  • 调用函数的位置并不重要。如果my_func包含任何自由变量,它们将

    always引用foo的全局名称空间,而不是引用它的名称空间。

    math模块具有其自己的全局名称空间。 (“全局”确实不是一个好术语;每个模块都有其自己的模块级名称空间。)

    Python中唯一的“全局”名称空间是内置名称空间,可从所有模块访问。

  • © www.soinside.com 2019 - 2024. All rights reserved.