小编Ken*_*chi的帖子

通过具有相同名称的imp.load_source加载模块,从而导致模块的合并

我想知道是否存在以下行为或错误.我正在使用CPython2.7

创建一个x.py文件

def funcA():
    print "funcA of x.py"
def funcB():
    print "funcB of x.py"
Run Code Online (Sandbox Code Playgroud)

创建一个y.py文件

def funcB():
    print "funcB of y.py"
Run Code Online (Sandbox Code Playgroud)

创建一个文件test.py

import sys, imp
# load x.py as fff
m = imp.load_source('fff', 'x.py')
print dir(m)
print sys.modules.get('fff')
# load y.py as fff
m = imp.load_source('fff', 'y.py')
print dir(m)    
print sys.modules.get('fff')

# import and exec func
import fff
fff.funcA()
fff.funcB()
print dir(fff)
Run Code Online (Sandbox Code Playgroud)

结果

['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', 'funcB']
<module 'fff' from 'x.py'>
['__builtins__', '__doc__', '__file__', '__name__', '__package__', 'funcA', …
Run Code Online (Sandbox Code Playgroud)

python

9
推荐指数
1
解决办法
1万
查看次数

标签 统计

python ×1