相关疑难解决方法(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中导入模块而感到困惑.

import X
import X as Y
from A import B
Run Code Online (Sandbox Code Playgroud)

我一直在阅读有关作用域和名称空间的内容,但我想就什么是最佳策略,在哪种情况下以及为什么,提供一些实用的建议.是否应该在模块级别或方法/功能级别进行导入?在__init__.py模块代码本身中?

我的问题并没有真正回答" Python包 - 按类导入,而不是文件 ",尽管它显然是相关的.

python python-import

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

Python中导入的模块/函数的范围

我是新来的,并不是100%肯定如何提出这个问题,所以我只是潜入.我应该在我编写的每个函数的开头使用import语句,导入我需要的所有各种模块/函数该功能的范围?即

def func1()
    import os.path
    print func(2)
    do something with os.path

def func2()
    import os.path
    do something with os.path
Run Code Online (Sandbox Code Playgroud)

这会增加内存开销或其他开销,还是只是将本地名称映射到已加载对象的import语句?有没有更好的方法来做到这一点?(链接到教程等最受欢迎.我一直在寻找一段时间,但无法找到一个好的答案.)

python import scope

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

什么时候Python导入?

如果我import在一个if/else块中嵌套了语句,我是否会提高效率?我知道有些语言会对代码import和语法问题进行"一次通过" .我只是不确定Python是如何深入研究的.

我的假设

由于Python是通过import在else块中嵌套语句来解释而不是编译的,因此在到达该行之前不会导入这些库,因此除非另有需要,否则将节省系统资源.

脚本

我编写了一个脚本,这个脚本将被更多的计算机文化使用,而那些则更少.我的部门非常熟悉从命令行运行带有参数的脚本,所以我已经设置它来获取它需要的参数,如果它没有找到它期望的参数,它将启动带有标题,按钮的GUI,和更详细的说明.但是,这意味着我正在导入仅在未提供参数的情况下使用的库.

附加信息

  • GUI是非常非常基本的(六个文本字段和可能更少的按钮)所以我不关心只是创建和生成一个自定义GUI类,其中将导入必要的库.如果这变得更复杂,我将来会考虑它,甚至推动改变为web界面.
  • 我的脚本完全按照我的预期运行.问题只是资源消耗.

python python-import python-3.x

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

在哪里导入模块

假设我有一个名为device的模块,其中包含一个名为ConfigureDevice的类。还可以说我有一个名为comports的模块,它在名为ComPorts的类(C 中的枚举)中定义了我的 com 端口。

现在,假设ConfigureDevice的构造函数采用一个名为comPorts 的参数。问题是,我应该在设备模块的开头导入comports还是应该创建ConfigureDevice 的代码进行此导入?

因此,导入comports应该发生在这里:

# device module
import serialwriter
import comports

class ConfigureDevice:
    def __init__(self, comPort):
        self.serialWriter = serialwriter.SerialWriter(comPort)
Run Code Online (Sandbox Code Playgroud)

或者我应该将其导入到创建ConfigureDevice的代码中,如下所示:

import device
import comports

...

device.ConfigureDevice(comports.ComPorts.COM_1)
Run Code Online (Sandbox Code Playgroud)

python

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

除非直接从函数导入,否则为什么类不可见的原因可能是什么?

例:

import user

class Thing(object):

    def doSomething(self):

        u = user.User(1)
        print u.name

>>  UnboundLocalError: local variable 'user' referenced before assignment
Run Code Online (Sandbox Code Playgroud)

但这有效:

class Thing(object):

    def doSomething(self):

        import user
        u = user.User(1)
        print u.name
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助!

编辑:

但这有效:

import user as anothername

class Thing(object):

    def doSomething(self):

        u = anothername.User(1)
        print u.name
Run Code Online (Sandbox Code Playgroud)

python

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

是否有一种可接受的方法从全局命名空间导入所有不是"来自模块导入*"的方法

我有一个小应用程序,我想分成模块,以便我的代码更好的结构和可读性.这样做的缺点是我导入的每个模块使用:

import module
Run Code Online (Sandbox Code Playgroud)

然后我必须将module.object用于我想从该模块访问的任何对象.

在这种情况下,我不想污染全局命名空间,我想用适当的模块名称填充它,以便我不必使用

from module import *
Run Code Online (Sandbox Code Playgroud)

为了在没有模块前置的情况下调用对象.

有没有办法做到这一点,不考虑从进口或进口的不良使用?

python python-2.7

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

python import语句的位置是否会影响性能

我想知道python程序中import语句的位置是否对性能有任何影响.例如,如果我有这个

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2
import json
import requests
from flask import render_template, request, Flask, session, Markup, jsonify, send_from_directory
from wit import Wit
from os import urandom
from datetime import datetime
from uuid import uuid1
from random import choice
from FAAWrapper import FAA_API
from bs4 import BeautifulSoup



def function1():
    from OpenSSL import SSL
    from fuzzywuzzy import process
    continue

def function2():
    continue
Run Code Online (Sandbox Code Playgroud)

调用function1()会不会影响性能,因为function1包含import语句?我的所有导入应该放在顶部还是仅在第一次调用函数时才导入导入?

python

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