首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >os.environ在哪里初始化?

os.environ在哪里初始化?
EN

Stack Overflow用户
提问于 2010-01-03 01:53:59
回答 2查看 866关注 0票数 0

使用这段代码,可以输出许多键,但我没有期望输出:

代码语言:javascript
复制
import os

for i in os.environ:
    print  i

这是来自os.py的代码:

代码语言:javascript
复制
try:
    environ
except NameError:
    environ = {}

os.environ从哪里得到它的值?在哪里初始化?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-01-03 01:59:26

os模块首先从特定于平台的子模块(如_nt_posix)导入所有名称,然后进行少量规范化。显然,environ名称(代表系统环境)是由平台特定的子模块定义的(通常期望它是!),所以os.py中的except子句没有触发,os.environ只是通常应该是的丰富字典。

票数 7
EN

Stack Overflow用户

发布于 2010-01-03 03:23:21

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

但是environ确实存在,因为它是通过在第58行的更高的位置导入的:

代码语言:javascript
复制
from nt import *

如果您正在运行Windows,以及其他平台的类似平台特定导入。因此,在实践中,environ将始终存在,而空头备份将永远不会使用。

那么,为什么还要提供一个后盾呢?嗯,它在现实世界中的用处令人怀疑,因为据我所见,目前由核心Python发行版支持的所有平台都实现了正确的environ查找。然而,在Python运行没有环境变量的不寻常平台中,可能存在或者曾经有过这样的平台。在开发新平台时,如果还没有编写环境变量之类的系统接口,那么就不会有很多程序无法运行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1993643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档