为程序使用不同的 Python 脚本是个好主意吗? [关闭]
Posted
技术标签:
【中文标题】为程序使用不同的 Python 脚本是个好主意吗? [关闭]【英文标题】:Is it a good idea to make use different Python scripts for programs? [closed] 【发布时间】:2014-12-18 20:55:06 【问题描述】:我想知道为 Python 程序的不同部分使用不同的 .py
脚本是否是个好主意。比如一个.py
文件用于计算器,另一个用于类文件等。如果这是个好主意,是否可能?
如果可能,我在哪里可以找到这样做的方法?
我之所以问这个问题是因为我发现在一个文件中包含这么多代码令人困惑,并且必须在需要修复的任何时候找到它。
【问题讨论】:
取决于您的程序的大小和范围。一般来说,如果某些东西可以在其他上下文中重复使用,它就属于它自己的模块:docs.python.org/2/tutorial/modules.html 这是个好主意。当您打开一个包含大系统所有组件的大 .py 文件(模块)时,它会让您的大脑不会爆炸。针对特定功能的单独模块 - 是专业的选择。 可能是programmers.stackexchange.com 的候选人,寻求意见(尽管对于初学者来说这是一个非常常见的问题_ 这个问题似乎离题了,因为它是关于没有阅读最基本的文档。 【参考方案1】:如果你的程序开始假设大尺寸,是的,你可以根据它们的作用拆分你的类或简单地你的函数。通常将执行类似任务或处理相同数据的函数放在一起。
要导入包含您定义的一组函数的文件,如果该文件与您的主脚本位于同一文件夹中,您可以简单地使用此语句,例如,如果包含您的函数的脚本的名称您要导入的称为functions.py
,您可以简单地使用import functions
或from functions import *
,或者更好的是from functions import function_1
。
说一下刚才提到的3种导入文件的方式:
import functions
在这里,为了使用您的某个函数,例如foo
,您必须将模块名称放在函数名称前面,然后是.
:
functions.foo('this is a string')
from functions import *
在这种情况下,您可以直接调用 foo,只需输入 foo('this is a new method of importing files')
。 *
表示您刚刚从模块 functions
导入了所有内容。
from functions import function_1
在最后一种情况下,您从模块 functions
导入了特定函数 function_1
,并且您可以只使用同一模块中的 function_1
:
function_1('I cannot use the function "foo" here, because I did not imported it')
【讨论】:
那么如果我在另一个 .py 文件中有一个菜单,我将如何调用它并在主程序中使用它?我知道我会做导入菜单,但我该怎么做才能使用其中的代码? @AustinHargis 当您使用import menu
语法导入名为 menu.py
的模块时,实际上是从同一个模块导入所有代码,因此您只需从 @ 调用函数或变量987654341@ 就像我在回答中解释的那样。
哦,好吧,我明白了。我最初对您的回答感到有些困惑,但我现在明白了。谢谢 :D 但是当我将我的程序转换为 .exe(我使用 cx_freeze)时,我该怎么做,因为我的程序现在将使用多个 .py 文件?
@AustinHargis 在setup
文件中有一个选项,您还可以对cx_Freeze
说以检查其他模块。查看这篇文章了解更多信息:***.com/questions/2553886/…
好的,谢谢。我有一些问题。我不知道如何使用这种方法从类中提取信息。我有一堂有名字和高分的课。我正在尝试使用以下脚本从不同的脚本访问该信息:game_state['players'][0].highscore & game_state['players'][0].name。如何从课程中提取此信息?对不起,我不太明白。【参考方案2】:
这当然是可能的,而且通常是个好主意。这正是您引用的原因:如果您将所有代码都放在一个大文件中,那么编辑该文件会很烦人。
例如,假设您有一个计算器功能和一些课程。你可以把它们放在两个单独的文件中——第一个在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
的细节,我会确保将它放在一个单独的文件中。另一方面,如果我每次导入calculator
时总是 导入Cleverness
,并且两者的代码都很简单,我可能会将它们粘贴到同一个文件中。如果我再也不会使用其中的代码,我可能只会将它们粘贴在主脚本文件本身中。
【讨论】:
以上是关于为程序使用不同的 Python 脚本是个好主意吗? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章
在 Angular7 应用程序中使用 ComponentFactoryResolver 是个好主意吗?
使用 ionic 构建网站的移动 Web 版本是个好主意吗? [关闭]