【发布时间】:2020-05-17 03:46:35
【问题描述】:
我有两个脚本 main1 和 main2 需要分开。他们都调用中间脚本(例如连接到数据库和查询)。查询本身来自 main1 的 sub1.py 和 main2 的 sub2.py。
目前,我用参数表示原点调用中间。这可以简化吗?
#main1.py
import middle
middle.myfunction(arg_i, 'main1')
#main2.py
import middle
middle.myfunction(arg_i, 'main2')
#middle.py
import sub1, sub2
def myfunction(arg1, arg2):
if arg2 == 'main1':
...
sub1.anotherfunction
elif arg2 == 'main2':
...
sub2.yetanotherfunction
一个可能的解决方案是在 middle.py 中复制 myfunction,即创建 myfunction_main1 和 myfunction_main2。但这似乎并不优雅。
奖励:middle.py 中有额外的函数,这些函数只与 main1 相关,与 main2 无关。由于我通过循环调用 main1 中的所有函数,因此我还需要在它们中建立 arg2,否则我会在缺少参数时出错。
funs = [middle.fun1, middle.fun2, middle.myfunction]
for i in range(3):
funs[i](arg_i, 'main1')
【问题讨论】:
-
你能不能只将
myfunction传递为arg2而不是一个字符串? -
这个问题可以帮到你:stackoverflow.com/questions/3955790/…
-
版本控制背后有什么逻辑吗?只有文件名?
myfunction是某种发射器吗?那么它似乎没问题 -arg2有点像启动器的配置。这就是函数的工作方式。给arg2一些默认值,例如arg2='main1'。
标签: python function parameter-passing