运行相同的代码但使用两个不同的数据集(输入)

我在 JupyterLab 中有一段代码,其中包含分布在多个单元格中的多个函数。第一个函数生成一个数据集,该数据集将在其后的所有其他函数中使用。


我要做的就是运行相同的代码两次,但修改其中一个函数。所以它看起来像这样:


data_generating_function() # this function should only be ran once so it generates the same dataset for both trials 

function_1() # this is the function that is to be modified once, so there are two version of this function

function_2() # this function and all functions below it stay the same but should be ran twice

function_3()

function_4()

function_5()

所以我会运行data_generating_function()一次并生成数据集。然后我会运行一个版本function1()及其下面的所有函数,然后我会运行另一个版本function1()及其下面的所有其他函数。


实施这个的好方法是什么?显然,我可以复制代码并仅更改一些函数名称,我也可以将其全部放入一个单元格中并创建一个 for 循环。然而,是否有更好的方法可以理想地保存多个细胞呢?


谢谢


慕虎7371278
浏览 132回答 3
3回答

繁花如伊

您应该尽可能避免修改或直接迭代函数。在这种情况下,最好的办法是添加一个布尔参数来function1指定要运行的函数版本。它看起来像这样:def function1(isFirstTime):  if isFirstTime:    # do stuff the first time    pass  else:    # do stuff the second time    pass然后您可以迭代这些函数:data_generating_function()for b in (True, False):  function1(b)  function2()  function3()  # ...

隔江千里

只需迭代第一个函数的两个选择:data_generating_function()  for func1 in (function1a, function1b):     func1()     function_2()     function_3()     function_4()     function_5()

哈士奇WWW

如果我误解了这个问题,我深表歉意,但你能不能执行以下操作:单元格 1:# define all functions单元 2:dataset = data_generating_function()单元 3:# Run version 1 of function 1 on datasetresult_1_1 = function_1_v1(dataset)result_2_1 = function_2(result_1_1)result_3_1 = function_3(result_2_1)function_4(result_3_1)单元 4:# Run version 2 of function 1 on datasetresult_1_2 = function_1_v2(dataset)result_2_2 = function_2(result_1_2)result_3_2 = function_3(result_2_2)function_4(result_3_2)该解决方案假设:您定义带有返回值的函数传递结果并不“昂贵”如果不是后者,您也可以将结果保留在文件中。为了减少 function_1 中的代码重复,您可以添加一个在两个版本之间切换的参数。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python