Jim*_*ies 36 python import coding-style
我从模块中导入了很多函数
使用起来更好吗?
from my_module import function1, function2, function3, function4, function5, function6, function7
Run Code Online (Sandbox Code Playgroud)
这有点乱,但避免使用该模块或其他所有内容充斥当前命名空间
from my_module import *
Run Code Online (Sandbox Code Playgroud)
这看起来很整洁,但会用该模块中的所有内容填充命名空间.
在PEP8中找不到关于您应该按名称导入多少的限制的任何内容.哪个更好?为什么?
Kug*_*gel 43
如果您确实需要这么多功能,那么您已经在污染您的命名空间.
我会建议:
import my_module
Run Code Online (Sandbox Code Playgroud)
或者,如果my_module具有长名称,则使用别名:
import my_long_module as m
Run Code Online (Sandbox Code Playgroud)
agf*_*agf 21
如果它在一个或另一个之间,请使用
from my_module import function1, function2, function3, function4, function5, function6, function7
Run Code Online (Sandbox Code Playgroud)
请参阅"显式优于隐式".在import this.
如果你只想要一个更短的名字my_module.function1,总会有import my_module as mod.
对于少数几次使用的函数(要么输入很多次,所以你想要一个简短的名字或循环,所以访问速度很重要),有
func1 = my_module.function1
Run Code Online (Sandbox Code Playgroud)
通过一些管理,您可以控制导入*导入.假设你的my_module有function1..function8,但你只想使函数1到6可用.在my_module中,重新分配__all__属性:
my_module.py:
__all__ = ['function1', 'function2', 'function3' ...]
def function1():
...
# etc...
Run Code Online (Sandbox Code Playgroud)
现在,如果您使用from my_module import *,您将只导入__all__my_module.py 中属性中定义的那些函数和变量.
小智 9
不确定这是否是新的,但现在你可以这样做:
from my_module import (
function1,
function2,
function3,
function4
)
Run Code Online (Sandbox Code Playgroud)
至少这不会脱离页面,而且在我看来更容易阅读。