相关疑难解决方法(0)

import语句应该始终位于模块的顶部吗?

PEP 08指出:

导入总是放在文件的顶部,就在任何模块注释和文档字符串之后,以及模块全局变量和常量之前.

但是,如果我导入的类/方法/功能仅在极少数情况下使用,那么在需要时进行导入肯定会更有效率吗?

不是这个:

class SomeClass(object):

    def not_often_called(self)
        from datetime import datetime
        self.datetime = datetime.now()
Run Code Online (Sandbox Code Playgroud)

比这更有效率?

from datetime import datetime

class SomeClass(object):

    def not_often_called(self)
        self.datetime = datetime.now()
Run Code Online (Sandbox Code Playgroud)

python optimization coding-style

373
推荐指数
14
解决办法
10万
查看次数

在Python中,当您在函数内部导入时会发生什么?

在速度和内存效率方面,在函数内导入Python模块和/或函数的优缺点是什么?

是否每次运行该函数时重新导入,或者可能只在开始时重新导入一次,无论函数是否运行?

python python-import

142
推荐指数
5
解决办法
8万
查看次数

在类/函数定义中导入语句 - 这是一个好主意吗?

我创建了一个名为的模块util,它提供了我经常在Python中使用的类和函数.其中一些需要导入功能.在类/函数定义中导入所需内容的优点和缺点是什么?它比import模块文件的开头更好吗?这是个好主意吗?

python import class function

44
推荐指数
2
解决办法
4万
查看次数

模块导入两次会发生什么?

我怀疑我想要清理.

考虑以下名为的模块ex_1.py:

print("Hello, I'm ex_1")
def greet(name):
 print("Hello, "+name+" nice to meet you! ")
Run Code Online (Sandbox Code Playgroud)

现在考虑调用另一个1_client_ex_1.py将导入ex_1.py模块的文件.

import ex_1.py
Run Code Online (Sandbox Code Playgroud)

现在,当我执行此文件时,我得到的输出为:

Hello, I'm ex_1
Run Code Online (Sandbox Code Playgroud)

正如所料.

但是当我1_client_ex_1.py改为:

import ex_1.py
import ex_1.py
Run Code Online (Sandbox Code Playgroud)

并执行它,它仍然只打印Hello, I'm ex_1一次.不应该打印两次吗?

python module

36
推荐指数
3
解决办法
2万
查看次数

Python:在主程序和PEP 8的开头导入

PEP 8建议模块在节目开始进口.

现在,我觉得在主程序开始时(即之后if __name__ == '__main__')导入其中一些是有道理的.例如,如果主程序从命令行读取参数,我倾向于import sys主程序的开头执行:这样,sys当代码用作模块时不必导入,因为没有必要,在这种情况下,用于命令行参数访问.

这对PEP 8的侵权有多严重?我应该避免这样做吗?或者修改PEP 8是否合理?

python import program-entry-point pep8 pep

5
推荐指数
2
解决办法
1451
查看次数

导入应该在 Python 类内部还是外部?

概述

假设我正在构建一个用于一般用途的类:我可能需要在任何地方导入它,在其他几个文件中使用它等等。导入应该在类之前进行,如:

import foo

class Bar():

    def __init__(self):
        foo.spam()
Run Code Online (Sandbox Code Playgroud)

或者在__init__方法内部,如:

class Bar():

    def __init__(self):

        import foo

        foo.spam()
Run Code Online (Sandbox Code Playgroud)

我的分析

外部

+ 将foo引入全局命名空间以供自始至终使用Bar

- 导入Bar还需要您手动导入foo(@MartijnPieters等人

里面

+ 避免foo在您真正需要之前加载

+fooBar实例化导入(和使用)时加载(@BrenBarn)

-foo其他地方不可用

python

5
推荐指数
1
解决办法
2348
查看次数

Python:在模块或函数中导入库

我创建了一个包含多个小型用户定义函数的模块。其中许多函数需要不同的库函数。现在,我想知道什么是更好的做法 - 导入模块中的所有库,还是导入函数内的库?在性能方面有什么区别吗?

示例代码

my_module.py

from math import exp
from numpy import mean,random

def logit(x):
    return exp(x)/(1+exp(x))

def sample_mean(mu,sigma,size):
    return mean(random.normal(mu,sigma,size))
Run Code Online (Sandbox Code Playgroud)

或者

def logit(x):
    from math import exp
    return exp(x)/(1+exp(x))

def sample_mean(mu,sigma,size):
    from numpy import mean,random
    return mean(random.normal(mu,sigma,size))
Run Code Online (Sandbox Code Playgroud)

聚苯乙烯

这只是一个示例代码来解释我的困境。不要告诉我有现成的函数可以代替这些用户定义的函数。我已经知道了

python import function

5
推荐指数
1
解决办法
8345
查看次数

将所有进口产品置于最高位置或根据需求,是否更"pythonic"?

可能重复:
Python中的好或坏做法:在文件中间导入

我已经习惯了Java这样的语言,它要求所有import语句都出现在类/文件的顶部.

哪个被认为是更加pythonic /"美丽" - 将它们全部放在顶部,或根据需要,因为它们是需要的?

python import

4
推荐指数
1
解决办法
1521
查看次数

在函数内导入库的好处?

所以我正在用Python编写一个小程序.这不是非常苛刻,而且是为了好玩,所以不一定需要针对速度或资源或其中任何一个进行优化而且我远非专业人士,所以如果这是一个荒谬的问题抱歉,但我很好奇:

我定义的几个小功能(如5号线),将需要的库导入(urllib,xml.etree,等).是否有理由在函数之外执行它们,比如在代码的开头,而不是作为函数的第一行?我认为在函数中使用它会使将来更容易有效地窃取这些函数,但我也认为这有点慢.这里有任何硬性规定或经验法则吗?如果没有,有没有人有任何意见?

python module python-import python-3.x

1
推荐指数
1
解决办法
399
查看次数