Skip to main content
 首页 » 编程设计

python之为什么我的代码不打印 `os.path`

2025年05月04日8java哥

对于代码:

def a(x): 
    if x=='s': 
        __import__('os') #I think __import__ == import 
        print os.path 

为什么 print a('os') 不打印 os.path?


我的下一个问题是:为什么下面的代码使用 __import__('some') 而不是像 a = __import__('os') 这样的东西?

def import_module(name, package=None): 
    if name.startswith('.'): 
        if not package: 
            raise TypeError("relative imports require the 'package' argument") 
        level = 0 
        for character in name: 
            if character != '.': 
                break 
            level += 1 
        name = _resolve_name(name[level:], package, level) 
    __import__(name)            #Why does it do this 
    return sys.modules[name]    #Instead of `return __import__(name)` 

请您参考如下方法:

__import__ 返回一个模块。它实际上并没有向当前命名空间添加任何内容。

您可能只想使用import os:

def a(x): 
    if x=='s': 
        import os 
        print os.path 
a('s') 

或者,如果您想将模块作为字符串导入,您可以显式分配它:

def a(x): 
    if x=='s': 
        os = __import__('os') 
        print os.path 
a('s')