<p>感谢zhqiat的示例代码。让我再详谈一下。在这里,这个问题可以用exec语句来解决。在</p>
<pre><code>import pandas as pd
import numpy as np
tablea1 = pd.DataFrame(np.random.randn(10, 4))
tableb1 = pd.DataFrame(np.random.randn(10, 4))
tablec1 = pd.DataFrame(np.random.randn(10, 4))
tablea2 = pd.DataFrame(np.random.randn(10, 4))
tableb2 = pd.DataFrame(np.random.randn(10, 4))
tablec2 = pd.DataFrame(np.random.randn(10, 4))
list_a = [tablea1, tablea2]
list_b = [tableb1, tableb2]
list_c = [tablec1, tablec2]
for i in range(1, len(list_a)+1):
exec 'tablea' + str(i) + ' = pd.concat([tablea' + str(i) + ', ' + 'tableb' + str(i) + ', ' + 'tablec' + str(i) + '], axis=1)'
print tablea1
</code></pre>
<p>我用这种方法已经有一段时间了。但是在代码变得更复杂之后。执行官开始抱怨了</p>
^{pr2}$
<p>以下是问题代码:</p>
<pre><code>def overall_function():
def dummy_function():
return True
tablea1 = pd.DataFrame(np.random.randn(10, 4))
tableb1 = pd.DataFrame(np.random.randn(10, 4))
tablec1 = pd.DataFrame(np.random.randn(10, 4))
tablea2 = pd.DataFrame(np.random.randn(10, 4))
tableb2 = pd.DataFrame(np.random.randn(10, 4))
tablec2 = pd.DataFrame(np.random.randn(10, 4))
list_a = ['tablea1', 'tablea2']
list_b = ['tableb1', 'tableb2']
list_c = ['tablec1', 'tablec2']
for i, j, k in zip(list_a, list_b, list_c):
exec(i + ' = pd.concat([' + i + ',' + j + ',' + k + '], axis=1)')
print tablea1
overall_function()
</code></pre>
<p>此代码将生成错误消息。有趣的是,在我的实际函数中根本没有其他“def”语句。所以我没有嵌套函数。我很困惑为什么我收到这样的错误信息。我的问题是,有没有一种方法可以让Python告诉我哪个变量是罪魁祸首,也就是导致问题的自由变量?或者,哪一个子函数是导致代码失败的原因。理想情况下,对于这个例子,我希望我可以强迫python告诉我dummy_函数是原因。在</p>