来自本地范围的变量列表

时间:2017-10-26 06:52:50

标签: python namespaces

在python def interleave(dfs): data = np.transpose(np.array([np.empty(dfs[0].shape[0]*len(dfs), dtype=dt) for dt in dfs[0].dtypes])) out = pd.DataFrame(data, columns=dfs[0].columns) for ix, df in enumerate(dfs): out.iloc[ix::len(dfs),:] = df.values return out 中显示命名空间中定义的所有名称。我检查过,它工作正常。 但是当我使用dir时,它没有显示我在函数内创建的变量。为什么呢?

以下是代码示例:

dir(function_name)

1 个答案:

答案 0 :(得分:0)

至于为什么dir(youfunc)没有列出本地变量,这很简单,因为记录dir(obj)列出了obj属性,而本地变量不是函数对象的属性。

在函数本身之外,您可以使用yourfunc.func_code.co_varnames获取函数的本地变量名称列表(请注意参数是局部变量):

def foo(bar):
    baaz = 42
print(foo.func_code.co_varnames)

但您显然无法从函数外部访问本地变量值,因为这些值仅在函数执行时才存在。

在函数中,您可以使用locals()获取本地变量:

def foo(bar):
    baaz = 42
    print(locals())