2010-01-03 73 views
0

使用此代码,多键输出,但我希望没有输出:os.environ初始化在哪里?

import os 

for i in os.environ: 
    print i 

这是os.py代码:哪里os.environ从得到其值

try: 
    environ 
except NameError: 
    environ = {} 

它在哪里初始化?

+1

这个问题似乎很模糊。你可能会添加更多关于你想要做什么的信息以及你遇到的问题是什么? – avpx 2010-01-03 01:55:41

+0

除了包含Python源代码片段(很可能不会被破坏),您可能会考虑包含回溯。 – bernie 2010-01-03 02:06:33

回答

7

os模块开始从一个特定于平台的子模块(如_nt_posix),则确实有点正常化进口的所有名称。显然environ名称(代表系统环境)是由平台特定的子模块定义的(因为它通常预期为!!!),所以os.py中的except子句没有触发,而os.environ只是丰富的字典通常是应该是

3

os.py引用的代码是一个后盾。这就是说,如果没有人定义environ变量,则创建一个空字典作为值。

environ确实存在,因为它已经导入该进一步上涨在线58:

from nt import * 

如果您正在运行Windows,以及类似的特定于平台的导入其他平台。因此在实践中environ将一直存在,并且永远不会使用空字典逆止器。

为什么还要提供一个止退器呢?嗯,在真实世界中它是有用的,因为据我所见,核心Python发行版目前支持的所有平台都实现了适当的environ查找。然而,可能有或者曾经是运行Python的异常平台,它们没有环境变量,并且在开发新平台时可能会有用,而不会让很多程序在系统接口(如环境变量)无法运行时运行书面呢。

相关问题