Python:在主程序开始时导入&;政治公众人物8

Python:在主程序开始时导入&;政治公众人物8,python,import,main,pep8,pep,Python,Import,Main,Pep8,Pep,建议在程序开始时导入模块 现在,我觉得在主程序开始时(即,如果uuu name uuuu=='uuu main uu')导入其中一些代码是有意义的。例如,如果主程序从命令行读取参数,我倾向于在主程序开始时导入sys:这样,当代码用作模块时,就不必导入sys,因为在这种情况下,不需要访问命令行参数 这种侵权行为对政治公众人物8有多严重?我应该避免这样做吗?或者修改PEP 8是否合理?我真的无法告诉你这有多糟糕 但是,我通过仅在第一次使用时导入某些库,极大地提高了web应用程序的性能(响应时间、负载

建议在程序开始时导入模块

现在,我觉得在主程序开始时(即,如果uuu name uuuu=='uuu main uu')导入其中一些代码是有意义的。例如,如果主程序从命令行读取参数,我倾向于在主程序开始时导入sys:这样,当代码用作模块时,就不必导入sys,因为在这种情况下,不需要访问命令行参数


这种侵权行为对政治公众人物8有多严重?我应该避免这样做吗?或者修改PEP 8是否合理?

我真的无法告诉你这有多糟糕

但是,我通过仅在第一次使用时导入某些库,极大地提高了web应用程序的性能(响应时间、负载)

顺便说一句,以下内容也来自政治公众人物8:

但最重要的是:知道什么时候该做 不一致——有时是风格 指南根本不适用。当在 怀疑,用你最好的判断。看 在其他例子中,决定 看起来最好。不要犹豫 问


我建议您在政治公众人物(PEP)中没有您担心的问题时,做您认为最合适的事情。

导入系统不会花费我担心的那么长时间。然而,有些模块确实需要更长的时间。 我不认为sys真的会阻塞名称空间。不管怎样,我都不会使用名为sys的变量或类


如果你认为把它放在顶端弊大于利,那就想尽一切办法随心所欲地去做。PEP 8只是一条指导方针,您看到的许多代码都不符合它。

总的来说,我不认为后期导入可能不需要的模块有多大危害


但是
sys
我肯定会在顶部尽早导入。这是一个非常常见的模块,您很可能在脚本中的其他地方使用sys,但没有注意到它并不总是导入的
sys也是Python本身总是加载的模块之一,因此避免导入并不会节省任何模块启动时间(无论如何,sys的启动并不多)。

问题不在于性能

问题是清晰度

你的“主”程序今天只是一个主程序。明天,它可能是一个包含在某个更高级别主程序中的库。稍后,它将只是一个更大包中的一个模块

因为你的“主”程序的生命可能会改变,你有两种反应

  • 如果
  • ,则隔离
    中的“主要”内容。这并不是违反政治公众人物第八条的荒唐行为。这是一种合理的包装方式

  • 尽量限制“主”程序脚本中的功能数量。试着把它们放在
    import
    s和
    if\uuuuu name\uuuu==“\uuuuu main\uuuu”
    stuff上。如果主脚本很小,那么导入问题就不存在了


  • 如果你真的担心这个问题,你可能想看看demandimport:我看不出它对响应时间有什么帮助。启动时间sure@gnibbler:它的作用与仅在第一次使用时进行导入相同,因此,如果它有助于Prody的响应时间,demandimport将以相同的方式提供帮助。OptPass可用于命令行解析,比使用sys.argv和自己进行解析更好。相关:@monkut:optparse在不使用命令行选项(即,当您只需要处理没有选项的命令行参数时)的情况下并不特别有用。您不能“违反”PEP8,因为它不是规则。这只是给你一个好的起点的建议。例如,我经常编写Python代码,每个缩进级别有两个空格。它不是非法的,不会混合标签和空格,而且还是很清晰的。但这不是政治公众人物8的建议。