首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CPython如何实现os.environ?

CPython如何实现os.environ?
EN

Stack Overflow用户
提问于 2022-03-28 01:41:56
回答 1查看 93关注 0票数 7

我在浏览来源时注意到,在定义变量environ之前,它引用了方法中的变量:

代码语言:javascript
复制
def _createenviron():
    if name == 'nt':
        # Where Env Var Names Must Be UPPERCASE
        def check_str(value):
            if not isinstance(value, str):
                raise TypeError("str expected, not %s" % type(value).__name__)
            return value
        encode = check_str
        decode = str
        def encodekey(key):
            return encode(key).upper()
        data = {}
        for key, value in environ.items():
            data[encodekey(key)] = value
    else:
        # Where Env Var Names Can Be Mixed Case
        encoding = sys.getfilesystemencoding()
        def encode(value):
            if not isinstance(value, str):
                raise TypeError("str expected, not %s" % type(value).__name__)
            return value.encode(encoding, 'surrogateescape')
        def decode(value):
            return value.decode(encoding, 'surrogateescape')
        encodekey = encode
        data = environ
    return _Environ(data,
        encodekey, decode,
        encode, decode)

# unicode environ
environ = _createenviron()
del _createenviron

那么environ是如何设置的呢?我似乎无法推理它的初始化和声明的位置,以便_createenviron可以使用它?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-30 18:51:49

搜索from posix import *模块内容中的os

os模块从posix (Unix)或nt ( os.py )低级模块导入os.py开头的所有公共符号。

posixenviron公开为普通的Python dictos将其封装在类似于_Environ的对象中,以更新_Environ项上的环境变量。

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

https://stackoverflow.com/questions/71641609

复制
相关文章

相似问题

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