我可以编写在执行过程中修改自身的python代码吗?

我可以编写在执行过程中修改自身的python代码吗?,python,self-modifying,Python,Self Modifying,我是说 四行代码的每个块彼此非常相似,只是有几个字符 我是否可以编写一个函数、一个类或其他一些代码,这样我就可以将一个包含四行代码的模板封装到其中,并让它在运行时修改自己,让代码完成上述代码的工作 顺便说一句,我使用的是python 3.6。如果您发现自己存储了很多这样的变量,特别是如果它们是相关的,那么几乎肯定有更好的方法。动态修改源永远不是解决方案。一种方法是使用函数保留重复的逻辑,并使用namedtuple存储结果数据: target_ZCR_mean = sample_dataframe

我是说

四行代码的每个块彼此非常相似,只是有几个字符

我是否可以编写一个函数、一个类或其他一些代码,这样我就可以将一个包含四行代码的模板封装到其中,并让它在运行时修改自己,让代码完成上述代码的工作


顺便说一句,我使用的是python 3.6。

如果您发现自己存储了很多这样的变量,特别是如果它们是相关的,那么几乎肯定有更好的方法。动态修改源永远不是解决方案。一种方法是使用函数保留重复的逻辑,并使用
namedtuple
存储结果数据:

target_ZCR_mean = sample_dataframe_summary['ZCR'][1]
target_ZCR_std = sample_dataframe_summary['ZCR'][2]
lower_ZCR_lim = target_ZCR_mean - target_ZCR_std
upper_ZCR_lim = target_ZCR_mean + target_ZCR_std

target_RMS_mean = sample_dataframe_summary['RMS'][1]
target_RMS_std = sample_dataframe_summary['RMS'][2]
lower_RMS_lim = target_RMS_mean - target_RMS_std
upper_RMS_lim = target_RMS_mean + target_RMS_std

target_TEMPO_mean = sample_dataframe_summary['Tempo'][1]
target_TEMPO_std = sample_dataframe_summary['Tempo'][2]
lower_TEMPO_lim = target_TEMPO_mean - target_TEMPO_std
upper_TEMPO_lim = target_TEMPO_mean + target_TEMPO_std

target_BEAT_SPACING_mean = sample_dataframe_summary['Beat Spacing'][1]
target_BEAT_SPACING_std = sample_dataframe_summary['Beat Spacing'][2]
lower_BEAT_SPACING_lim = target_BEAT_SPACING_mean - target_BEAT_SPACING_std
upper_BEAT_SPACING_lim = target_BEAT_SPACING_mean + target_BEAT_SPACING_std

然后,您可以使用
符号访问数据,如
zcr.mean
tempo.upper_lim

如果您发现自己存储了大量这样的变量,特别是如果它们是相关的,几乎肯定有更好的方法。动态修改源永远不是解决方案。一种方法是使用函数保留重复的逻辑,并使用
namedtuple
存储结果数据:

target_ZCR_mean = sample_dataframe_summary['ZCR'][1]
target_ZCR_std = sample_dataframe_summary['ZCR'][2]
lower_ZCR_lim = target_ZCR_mean - target_ZCR_std
upper_ZCR_lim = target_ZCR_mean + target_ZCR_std

target_RMS_mean = sample_dataframe_summary['RMS'][1]
target_RMS_std = sample_dataframe_summary['RMS'][2]
lower_RMS_lim = target_RMS_mean - target_RMS_std
upper_RMS_lim = target_RMS_mean + target_RMS_std

target_TEMPO_mean = sample_dataframe_summary['Tempo'][1]
target_TEMPO_std = sample_dataframe_summary['Tempo'][2]
lower_TEMPO_lim = target_TEMPO_mean - target_TEMPO_std
upper_TEMPO_lim = target_TEMPO_mean + target_TEMPO_std

target_BEAT_SPACING_mean = sample_dataframe_summary['Beat Spacing'][1]
target_BEAT_SPACING_std = sample_dataframe_summary['Beat Spacing'][2]
lower_BEAT_SPACING_lim = target_BEAT_SPACING_mean - target_BEAT_SPACING_std
upper_BEAT_SPACING_lim = target_BEAT_SPACING_mean + target_BEAT_SPACING_std

然后您可以使用
符号访问数据,如
zcr.mean
tempo.upper_lim

您能解释一下您试图用这段代码实现什么吗?您只需要存储这些值吗?请尝试decorators,不,您不能编写在执行期间修改自身的Python代码。但无论如何,这是错误的做法。使用数据结构来捕获规则性,而不是尝试动态编写代码。正如FHTMitchell的解决方案。你能解释一下你想用这段代码实现什么吗?您只需要存储这些值吗?请尝试decorators,不,您不能编写在执行期间修改自身的Python代码。但无论如何,这是错误的做法。使用数据结构来捕获规则性,而不是尝试动态编写代码。就像FHTMitchell的解决方案一样。