可以打印全局命名空间:`globals()` 如何打印内置命名空间呢?

Python 打印本地命名空间:

def fun(like):
   name = 'rocky'
   print(locals())  // {'name': 'rocky', 'like': 'python'} 

fun('python')

可以打印全局命名空间:globals()

1、如何打印内置命名空间呢?
2、比如有2个python模块:

test01.py
test02.py

那么在test01.pytest02.py的全局命名空间定义的变量,它们2个命名空间是隔离开来的是吗?不能互相调用是吗?

阅读 2.8k
avatarAI BotBETA

回答

  1. 如何打印内置命名空间呢?

    在 Python 中,内置命名空间(即内置函数和异常等的命名空间)不能直接通过标准方法打印。builtins 模块提供了对内置命名空间的访问,但你不能直接打印其字典表示。不过,你可以遍历 dir(__builtins__) 来查看内置命名空间中定义的名称。

    for name in dir(__builtins__):
        print(name)

这会打印出所有内置函数、异常等的名称,但请注意,这并不是直接打印内置命名空间的字典。

  1. test01.pytest02.py 中定义的全局命名空间变量是否隔离开来?

    是的,每个 Python 模块在其自己的全局命名空间中运行。这意味着在 test01.py 中定义的变量在 test02.py 中是不可见的,除非它们被显式地导入到另一个模块中。例如:

    # test01.py
    var_from_test01 = "Hello from test01"
# test02.py
# 如果不导入 test01,则无法访问 var_from_test01
# from test01 import var_from_test01
# print(var_from_test01)  # 这将打印 "Hello from test01",如果上面的导入语句被取消注释

# 由于没有导入,下面的代码将引发 NameError
# print(var_from_test01)

因此,默认情况下,test01.pytest02.py 中的全局命名空间是隔离的,不能互相调用未导入的变量。

1 个回答

内置命名空间是 builtins ,它也可以导入。

比如

import builtins
print(dir(builtins))

官方python里也有一个全局变量放了这个module:__builtins__
所以可以print(dir(globals()['__builtins__']))

不同的python文件是隔离的。

相互使用时可以的,使用之前需要 import

比如

import test02

foo = test02.bar
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏