孰优孰劣:将每件东西导入每个文件或从其他文件导入所有内容

问题描述:

我想知道哪种方式最适合导入模块。孰优孰劣:将每件东西导入每个文件或从其他文件导入所有内容

我目前对我的Pygame游戏使用多个文件。有主要文件,还有一个文件,我从中导入所有内容。

是这样的:

settings.py:

import pygame,random,os,... 

主要游戏文件:

from settings import pygame 

一切工作正常,但我应该做它,而不是这样吗?

主游戏文件(rewriten):

import pygame 
+0

查看https://*.com/q/18792145/2301450 – vaultah

+0

尽管我已阅读其他帖子,但我并没有明白这一点。 –

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

您可能已经在settings.py中的pygame中修改了一些变量,函数或对象,以便从settings.pygame导入的内容具有与直接从pygame导入的内容不同的行为。

只是一个例子的缘故(怎么不这样做我会说):
假设你pygame.py具有类似的功能:

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

在你,你现在settings.py可能已经难度设置存储,所以你可以重新定义已经通过创建功能的装饰设置难度功能:

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将不需要再被通过的难度参数。

+0

因此,如果我每次都导入所有模块(即使我需要在第一个文件中声明pygame.mixer,但在第二个文件中不包含pygame.image和pygame.image,而不是在我的设置中包含pygame.mixer .py;这两个文件都是游戏的一部分)? –

+0

在这种情况下,性能部分大多是一个理论值。要真正影响你的程序,你需要一个荒谬的功能。我只是测试了它:一个脚本有1个功能,另一个有1000个功能。增加了999个额外功能,每个功能调用增加9 ns。 – Sanitiy

作为链接波纹管说,在另一个模块中输入必要的模块,是良好的形状看代码。对于大型项目来说,这是一项必要的工作,因为每件事情都会变得疯狂。
Python import modules in another file