Python 手动导入功能

Python 手动导入功能,python,Python,我是python的初学者,我试着从。。。导入…语句。 我惊讶地发现我们可以手动导入函数,我想问您这是否合法。 我的模块: **my_module.py** def func1(): print 10 def func2(): print 20 我的程序: import sys from my_module import func1 func2() ==> ERROR! globals()["func2"] = sys.modules["my_module"].fu

我是python的初学者,我试着从。。。导入…语句。 我惊讶地发现我们可以手动导入函数,我想问您这是否合法。

我的模块:

**my_module.py**

def func1():
    print 10

def func2():
    print 20

我的程序:

import sys
from my_module import func1

func2() ==> ERROR!

globals()["func2"] = sys.modules["my_module"].func2

func2() ==> Printing 20!

不要那样做,一些蟒蛇会咬掉你的腿,如果他们看到的话。这是非常非蟒蛇
import
是一个运行时语句(我的意思是,一切都是),所以根本没有理由使用
sys.modules
version。

如果您询问这一行:

globals()["func2"] = sys.modules["name"].func2
它“合法”吗?当然我是说,巨蟒警察不会来抓你的

这是个好主意吗?不可以。如果只是导入函数,最好使用
func1
的方法。更容易阅读和理解的人谁来看看你的代码后;更好地与静态分析工具兼容;不太可能在Python的未来版本中崩溃;等等


如果您正在制作一个模块,该模块在Python中实现了一些“神奇”的功能,比如包装另一个模块的函数或其他东西,那么您可能希望使用该功能以这种方式动态导入和命名函数。但对于一般的日常编程,请避免使用它。

您需要更多地解释您的问题!你的意思是
sys.modules[“my_module”].func2()
?显然这是合法的,因为你在做,Python也没有抱怨。“我无法想象你为什么要这么做,”帕德雷肯宁汉姆说,“是的。错误。@yuvalhuck,除此之外,它没有任何优势,并且会降低代码的可读性,因此简短的回答是“不,永远不要这样做”。我相信问题是关于使用
sys.modules
导入一个函数,如代码所示(尽管可以更好地描述)。@interjay是的,这让我感到困惑,你是对的,将进行编辑。该行除了抛出错误之外实际上不会执行任何操作