【问题标题】:Why do you have to 'import' Python Standard Library functions? [closed]为什么必须“导入” Python 标准库函数? [关闭]
【发布时间】:2013-11-30 22:29:16
【问题描述】:

我是 Python 编码的新手,我来自 PHP 背景。我很好奇为什么你必须在 python 脚本的顶部“导入”函数。在 PHP 中,您可以简单地使用如下函数:

sleep(10);

以上内容会导致脚本休眠 10 秒。但是,要在 python 中做同样的事情,似乎我必须导入“时间”功能:

import time
time.sleep(10)

我的问题是:为什么这是必要的?如果这些额外的函数已经是 python 的一部分,为什么 python 必须专门加载它们?在 PHP 中,如果缺少模块,则脚本将失败。我必须全局安装模块,然后才能正常使用。

python的方法有优势吗?

【问题讨论】:

  • 想象一下,如果每个名字都同时出现,会是多么有趣。
  • 推论:PHP 的方法有缺点吗?
  • 这可能是一个非常有趣的问题,并且写得清晰而巧妙,但我认为它超出了 StackOverflow 的范围;您不是在寻求解决问题的帮助,也不是在寻求有关语言功能如何工作的客观事实细节,而是在询问有关他人语言设计的部分主观问题。但是,我认为这对于programmers.stackexchange.com 来说是一个很好的主题问题。我将标记这个以引起 mod 的注意,并要求将其迁移到那里。
  • 更新:模组拒绝了我的标记。没有给出任何理由。
  • @MarkAmery:程序员的版主很可能认为这个问题也不适合那里。

标签: python language-design python-import


【解决方案1】:

是的,有几个。这意味着默认情况下编译和运行的内容更少。您的程序将加载得更快,因为它只知道它实际需要的 Python 部分。

它保持全局命名空间干净,并允许将功能按逻辑分组到模块中。不同的模块可以具有相同名称的函数而不会发生冲突(例如,文件和套接字类可能同时具有打开和关闭函数)。

【讨论】:

  • 啊,所以它使 Python 整体上不那么臃肿,因为它不会每次都加载所有模块。这是有道理的,而且听起来确实是一个优势。谢谢!
  • 我如何知道给定函数是标准库的一部分还是外部包?
  • 并确保多个库可以同时实现相似但不兼容的功能,但名称相似但不兼容。
【解决方案2】:

好吧,如果你想同时使用库A 和库B 和一个名为f 的函数怎么办?在 Python 中,这非常简单:导入这两个模块,然后用它的模块限定正确的 fs 名称,例如A.f()

这带来了第一个优势:命名空间(作为名称冲突问题的解决方案)和无污染的全局范围。

第二个优势是更灵活的模块系统。

【讨论】:

    【解决方案3】:

    但您不需要导入诸如“print()”或“input()”之类的函数。 这些功能已经为您提供。其他的不一定需要 所以它们位于其他地方,这就是为什么您导入包含以下功能的模块的原因 默认不提供

    【讨论】:

    • 小添加:printbuilt-in,因此即使您之前覆盖了 print,您也可以使用 __builtins__.print 访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 1970-01-01
    • 2020-06-28
    • 1970-01-01
    相关资源
    最近更新 更多