如何在另一个过程中调用一个过程

2024-04-19 20:34:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在创建一个大的.py文件,可以导入并用于求解数学公式。我想将公式存储在一个名为input1\u input2\u input3()的过程中:例如,公式距离=速度*时间称为dis\u spe\u tim()。你知道吗

目前的代码是:

def dis_spe_tim():
    def distance(speed, time):
        result = speed*time
        unit = input("What unit are you measuring the distance in?")
        print(resule,unit)

    def speed():
        print("speed")

我希望用户最好这样使用:

import equations #name of the .py file
from equations import *
dis_spe_tim.distance(1,2)

不幸的是,这是我第一次这样做,所以我完全不知道如何在过程内部调用过程并提供它的参数。你知道吗


Tags: thepyimporttime过程defunit公式
1条回答
网友
1楼 · 发布于 2024-04-19 20:34:35

简而言之:不能这样做。嵌套函数是它们在其中定义的函数的本地函数,只在外部函数执行期间存在(def是一个可执行语句,在运行时创建一个函数对象并将其绑定到封闭命名空间中的名称)。你知道吗

规范的python解决方案是使用模块作为名称空间(python模块主要是名称空间),即每个“公式”都有一个不同的模块,并在模块的顶层定义函数:

# dis_spe_tim.py
def distance(speed, time):
   # code here

def speed():
   # code here

然后将所有这些模块放在equations包中(主要是:包含模块和__init__.py文件的文件夹)。然后你可以做:

from equations import dis_spe_tim
dis_spe_tim.distance(1,2)

您可以在这里查看文档以了解有关模块和包的更多信息:https://docs.python.org/3/tutorial/modules.html#packages

还要注意的是

1/“star imports”(也称为“通配符导入”),即from somemodule import *,是highly discouraged,因为它们会使代码更难阅读和维护,并可能导致意外的(有时甚至很难发现)损坏。你知道吗

2/您不应该将“域”代码(进行有效计算的代码)与UI代码(与用户通信的代码)混合使用,因此对input()print()等的任何调用都应该在“域”代码之外。这是使您的域代码可用于不同ui(命令行、基于文本的(诅咒等)、GUI、web等)的关键,但也非常简单,可以确保您的域代码易于隔离测试(单元测试…)。你知道吗

相关问题 更多 >