【发布时间】:2017-07-20 18:19:42
【问题描述】:
我认为这是基本的,我已经看到了我所问问题的多个版本,尽管它们都不完全是我所面临的。
我目前有一个包含两个函数的脚本,我希望能够只调用第二个函数,但它需要运行第一个函数。我的脚本仍然很乱,所以我使用了一个示例:
def func1(input): # Does something with input data
my_list = []
for i in input:
my_list.append(i)
return my_list # Returns a list
func1_list = func1(x) # Save the result from func1 into a variable
def func2(func1_list):
my_final_list = [] # This function just edits the first list
for val in my_list: # Results from func2 are needed later on
temp = val**3
my_final_list.append(temp)
return my_final_list
有没有办法在导入脚本时执行第二个函数而不必调用第一个函数?我不知道在哪里输入 func2 中的 func1_list 变量,这样任何人都可以直接进入 func2 并运行它(无论如何它都会自动执行 func1)。
编辑: func1 和 func2 都应该能够单独执行 - func2 依赖于 func1。两者都将显示信息(func2 仅显示修改后的信息)。示例:func1 将运行一些输入并显示原始结果,而 func2 将获取该原始结果并对其进行修改。如果需要,我希望能够查看原始结果和修改后的结果。
【问题讨论】:
-
从代码的模块范围中删除
func1_list = func1(x),然后您可以在不调用func1的情况下导入。 -
在调用
func2之前编写一个执行func1_list = func1(x)的包装器? -
函数是闭包,因此您可以简单地从函数中删除
func1_list参数(并将for val in my_list更改为for val in func1_list,或者更好:return [val**3 for val in func1_list]。或者您可以使func2致电func1。 -
我认为你需要退后一步,解释一下你真正想要做什么。这个问题本身并没有多大意义,而且很难理解您要解决的基本问题是什么。
-
可以肯定的是,如果你最终打电话给
func2,my_list会给出一个NameError