我已在模块中保存了已定义的函数,然后将其导入到新脚本中。
在此函数中,查询变量master
(一个pandas数据帧)。但是,master
不是函数中的参数之一,而是我希望访问的数据帧,无论脚本如何。
尝试在我的新脚本中使用上述功能时,出现以下错误:
NameError: name 'master' is not defined
但是当我将master
输入控制台时,它会打印出没有问题或错误。
我认为这与本地和全局变量有关,但我是Python的新手,并且正在努力理解如何修复错误。
答案 0 :(得分:1)
在此函数中,查询变量master(一个pandas数据帧)。但是,master不是函数
中的参数之一
然后更新您的函数以将其作为参数。你不能在这里使用全局,因为(如果我理解的话),你的“master”变量在脚本中定义,而函数在脚本导入的模块中定义。在这种情况下,明确地将“master”传递给你的函数是使它可用的唯一方法,因为Python没有真正的“全局”命名空间(Python中的“global”实际上意味着“模块级别”)。
这实际上是一个GoodThing,因为它是构建程序的唯一理智方式。作为一般规则,全局变量(可变全局变量)是邪恶的,它们使您的代码变得脆弱,不可测试,不可维护且不可预测。