【问题标题】:Whitch is better: import every thing into every file or import everything from an other file哪个更好:将所有内容导入每个文件或从其他文件导入所有内容
【发布时间】:2018-01-09 14:36:32
【问题描述】:

我想知道哪种方式最适合导入模块。

我目前正在为我的 Pygame-Game 使用多个文件。有主要文件,还有一个文件,我可以从中导入所有内容。

是这样的:

settings.py:

import pygame,random,os,...

一个主游戏文件:

from settings import pygame

一切正常,但我应该这样做吗?

一个主游戏文件(重写):

import pygame

【问题讨论】:

标签: python python-import


【解决方案1】:

导入模块的第一种方法意味着您从设置而不是直接导入 pygame 是有原因的。

您可能在settings.py中修改了pygame中的一些变量、函数或对象,因此从settings.pygame导入的东西与直接从pygame导入的行为不同。

只是为了一个例子(我会说如何不这样做):
假设您的 pygame.py 具有如下功能:

enemy_action( In_1, ... , In_n, DIFFICULTY )

在您的 settings.py 中,您现在可能已经存储了难度设置,因此您可以通过为函数创建装饰器来重新定义已设置的 DIFFICULTY 函数:

pygame.DIFFICULTY = DIFFICULTY

def pygame.difficulty_setter(f):
    def inner(*x, DIFFICULTY = pygame.DIFFICULTY):
        return f(*x,DIFFICULTY = pygame.DIFFICULTY)
    return inner

如果你现在设置

enemy_action = pygame.difficulty_setter(enemy_action)

enemy_action 函数不再需要传递 DIFFICULTY 参数。

【讨论】:

  • 因此,如果我每次都导入所有模块(即使我需要在第一个文件中说 pygame.mixer 而不是第二个文件中的 pygame.image 和 pygame.image 但不是我的 settings.py 中的 pygame.mixer;这两个文件都是游戏的一部分)?
  • 本例中性能部分多为理论值。要真正影响您的程序,您需要大量的功能。我刚刚对其进行了测试:一个脚本有 1 个函数,另一个脚本有 1000 个函数。添加了 999 个额外的函数...每个函数调用 9 ns。
【解决方案2】:

正如下面的链接所说,在另一个模块中导入必要的模块,是一个很好看的代码。对于大型项目,这是一项必要的工作,因为每件事都会变得疯狂。
Python import modules in another file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-02-28
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多