为程序使用不同的Python脚本是一个好主意吗?

时间:2014-12-18 20:55:06

标签: python class

我想知道为Python程序的不同部分使用不同的.py脚本是否是个好主意。就像一个.py文件用于计算器而另一个用于类文件等。如果这是一个好主意,是否可能?

如果可能,我在哪里可以找到该怎么做?

我问这个是因为我发现在一个文件中包含如此多的代码会让人感到困惑,并且必须在需要修复的时候找到它。

2 个答案:

答案 0 :(得分:1)

如果您的程序开始假设大尺寸,是的,您可以根据他们的工作分割您的课程或仅仅是您的功能。通常,执行类似任务或处理相同数据的函数会组合在一起。

要导入包含您定义的一组函数的文件,如果该文件位于主脚本所在的文件夹中,则只需使用此语句,例如,如果包含您的函数的脚本的名称您要导入的内容名为functions.py,您只需import functionsfrom functions import *,或者更好,from functions import function_1

让我们谈谈我刚才提到的导入文件的3种方式:

import functions

在这里,为了使用您的某个函数,例如foo,您必须将模块的名称放在函数名称前面,后跟.

functions.foo('this is a string')

from functions import *

在这种情况下,您只需键入foo('this is a new method of importing files')即可直接调用foo。 *表示您刚刚从模块functions导入了所有内容。

from functions import function_1

在最后一种情况下,您已从模块function_1导入特定函数functions,并且您只能使用同一模块中的function_1

function_1('I cannot use the function "foo" here, because I did not imported it')

答案 1 :(得分:0)

这当然是可能的,而且经常是一个好主意。这正是您引用的原因:如果您将所有代码放在一个大文件中,编辑该文件会很烦人。

所以,例如,让我们说你有一个计算器功能和一些课程。您可以将它们放在两个单独的文件中 - 第一个放在calc.py

# calc.py
def calculator(a,b):
    return a.do_something_clever(b)

和其他文件中的第二个

# cleverness.py
class Cleverness(object):
    def do_something_clever(self, c):
        return 3.14159+c

要从其他脚本中使用它们,您只需要import它们:

# cool_script.py
from calc import calculator
from cleverness import Cleverness

c = Cleverness()
print(calculator(c, 2.717))

您可以使用from x import y,然后使用import x,而不是x.y。例如,以下内容是等效的:

# cool_script2.py
import calc
import cleverness

c = cleverness.Cleverness()
print(calc.calculator(c, 2.717))

在制作太多单独的文件和制作太少的文件之间始终存在平衡。基本上,它取决于你。推动我做出决定的主要因素通常是不同事物的密切关系,以及不同组件在分离时的可重用性。例如,如果我的calculator函数做了一些复杂的事情,但根本不依赖于Cleverness的详细信息,我会确保将它放在一个单独的文件中。另一方面,如果我导入Cleverness总是导入calculator,并且两者的代码都很简单,我可能只是将它们粘在同一个文件。如果我再也不会在其中使用代码,我可能只是将它们粘贴在主脚本的文件中。