相关疑难解决方法(0)

导入包.*vs import package.SpecificType

是否会在编写导入时将开销加载到一个包中的所有类型(import java.*); 而不只是一个特定的类型(即import java.lang.ClassLoader)?第二个是比另一个更合适的使用方式吗?

java import overhead

93
推荐指数
8
解决办法
6万
查看次数

Python导入编码风格

我发现了一种新的模式.这种模式是众所周知的还是对它的看法是什么?

基本上,我很难刷新源文件以找出可用的模块导入等等,所以现在,而不是

import foo
from bar.baz import quux

def myFunction():
    foo.this.that(quux)
Run Code Online (Sandbox Code Playgroud)

我将所有导入移动到它们实际使用的函数中,如下所示:

def myFunction():
    import foo
    from bar.baz import quux

    foo.this.that(quux)
Run Code Online (Sandbox Code Playgroud)

这做了一些事情.首先,我很少意外地用其他模块的内容污染我的模块.我可以__all__为模块设置变量,但随后我必须在模块发展时更新它,这对于实际存在于模块中的代码无效.

其次,我很少在我的模块顶部进行一连串的进口,其中一半或更多我不再需要,因为我已经重构了它.最后,我发现这个模式更容易阅读,因为每个引用的名称都在函数体中.

python coding-style

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

Python包 - 按类导入,而不是文件导入

说我有以下文件结构:

app/
  app.py
  controllers/
    __init__.py
    project.py
    plugin.py
Run Code Online (Sandbox Code Playgroud)

如果app/controllers/project.py定义了一个类Project,app.py会像这样导入它:

from app.controllers.project import Project
Run Code Online (Sandbox Code Playgroud)

我想能做到:

from app.controllers import Project
Run Code Online (Sandbox Code Playgroud)

怎么做?

python packages

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

你如何使用Fortran 90模块数据

假设您有一个包含大量变量,函数和子例程的Fortran 90模块.在您的USE陈述中,您遵循哪种惯例:

  1. 使用, only :语法显式声明您正在使用哪些变量/函数/子例程,例如 USE [module_name], only : variable1, variable2, ...
  2. 插入毯子USE [module_name]

一方面,该only子句使代码更加冗长.但是,它会强制您在代码中重复自己,如果您的模块包含许多变量/函数/子例程,那么事情就会开始变得难以驾驭.

这是一个例子:

module constants
  implicit none
  real, parameter :: PI=3.14
  real, parameter :: E=2.71828183
  integer, parameter :: answer=42
  real, parameter :: earthRadiusMeters=6.38e6
end module constants

program test
! Option #1:  blanket "use constants"
!  use constants
! Option #2:  Specify EACH variable you wish to use.
  use constants, only : PI,E,answer,earthRadiusMeters
  implicit none …
Run Code Online (Sandbox Code Playgroud)

fortran module conventions fortran90

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

'从X导入'与'导入X; XA"

我已经看到一些Python程序员相当一致地使用以下样式(我们称之为样式1):

import some_module
# Use some_module.some_identifier in various places.
Run Code Online (Sandbox Code Playgroud)

为了支持这种风格,你可以引用"明确胜于隐性"的格言.我见过其他程序员使用这种风格(风格2):

from some_module import some_identifier
# Use some_identifier in various places.
Run Code Online (Sandbox Code Playgroud)

我在样式2中看到的主要好处是可维护性 - 特别是对于duck typing理想我可能想要some_module替换some_other_module.我还觉得"可读性计数"格言的风格2胜.虽然我倾向于不同意,但人们总是认为在使用第一种风格时,搜索和替换是一个很好的选择.

附录:有人指出,你可以使用as从解决开关some_modulesome_other_module在风格1.我忘了提,这也是常见的决定实现some_identifier您在目前的模块,这使得同等的创建some_module容器略显尴尬.

python maintainability duck-typing python-import

9
推荐指数
2
解决办法
2794
查看次数

如何将我的Python代码组织成多个类?

我最近被告知我应该将我的代码保存在单独的文件中; 像main.py,engine.py,settings.py等等.虽然这确实有好处,比如更容易管理,可扩展性等,但对我来说似乎有太多的缺点......

例如,如果我有一个调用的脚本settings.py,其中定义了屏幕对象的大小,模拟的速度和各种对象的颜色,如果在我的engine.py脚本和main.py脚本中都需要这些变量,我该怎么办?我在两个脚本中都导入了两次吗?看起来相当混乱.如果engine.py脚本中的某些类需要代码,该main.py怎么办?

让我告诉你具体情况......

我的main.py脚本本身导入Pygame,初始化它,依此类推.它曾经有一个表示屏幕对象的类,该类有一个方法draw,它只是调用Pygame绘制函数.现在,当我把类放在我的engine.py脚本中时,事情就不再起作用了,因为Pygame在那里不存在!我最后导入了两个settings.py和Pygame engine.py,然后导入引擎main.py,但是它更像是初始化器而不是引擎......有没有办法处理像这样的东西,比如一般的引导线?

python design-patterns class

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

Python:“导入模块”与“导入模块为”

以下两种说法有区别吗?

import os
import os as os
Run Code Online (Sandbox Code Playgroud)

如果是这样,哪一个更优选?

python syntax import module

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