gpt4 book ai didi

python:除了 namespace 冲突之外, from package import * 是否有缺点

转载 作者:行者123 更新时间:2023-11-28 20:28:45 28 4
gpt4 key购买 nike

我正在创建一个类来扩展一个包,在类实例化之前我不知道我需要包的命名空间的哪个子集。我一直小心避免在我的 代码中发生 namespace 冲突,

也是如此
from package import * 

除了名称冲突之外还会产生问题吗?

__init__ 中检查类的输入并仅导入我需要的名称(在运行时)是否更好??

python 可以从集合 [] 导入吗?

for name in [namespace,namespace]:
from package import name

有什么意义吗?

我希望这个问题看起来不像是不必要的问候,我只是 python 的 super 新手并且不想做一件事每个“初学者指南”都说不要do (from pkg import * ) 除非我确定别无选择。

欢迎提出想法和建议。

最佳答案

按顺序:

  • 它不会产生其他问题 - 但是,名称冲突的问题可能比您预期的要严重得多。

  • 如果可以,绝对推迟进口。尽管 Python 变量作用域非常简单,但如果永远不会调用需要它的功能,您也可以获得不必导入模块的好处。

  • 我不明白你的意思。方括号用于制作列表,而不是集合。您可以在一行中从模块导入多个名称 - 只需使用逗号分隔的列表:

    from awesome_module import spam, ham, eggs, baked_beans
    # awesome_module defines lots of other names, but they aren't pulled in.
  • 不,那不会做你想要的 - name 是一个标识符,因此,每次循环代码都会尝试导入名称 name ,而不是与 name 变量引用的字符串相对应的名称。

但是,您可以使用__import__ 函数获得这种“动态导入”效果。请查阅文档以获取更多信息,并确保您有真正的理由首先使用它。我们在这里很快就了解了该语言的一些非常高级的用法,而且它通常并不像第一次出现时那么必要。不要太聪明了。我们讨厌他们狡猾的霍比特人。

关于python:除了 namespace 冲突之外, from package import * 是否有缺点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4313124/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com