如何在Python中正确引用嵌套函数中的全局变量

2024-04-25 12:35:46 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有以下简单的情况:

import pandas as pd

def multiply(row):
    global results
    results.append(row[0] * row[1])

def main():
    results = []
    df = pd.DataFrame([{'a': 1, 'b': 2}, {'a': 3, 'b': 4}, {'a': 5, 'b': 6}])
    df.apply(multiply, axis=1)
    print(results)

if __name__ == '__main__':
    main()

这将导致以下回溯:

^{pr2}$

我知道我可以将results = []移到if语句中,但是有没有一种方法可以保持我现在的结构并使其正常工作?在


Tags: importdataframepandasdfifmaindefas
2条回答

必须将结果移出函数。我认为没有其他方法可以不把变量去掉。在

一种方法是将结果作为参数传递给multiply方法。在

必须在函数外部声明结果,例如:

import pandas as pd

results = []

def multiply(row):
    # the rest of your code...

更新

还要注意,python中的list是可变的,因此不需要在函数的开头用global指定它。示例

^{pr2}$

相关问题 更多 >