我想使用函数参数在Python中创建数据框和/或对象的动态名称。我有大约40个不同的名字,所以在函数中执行此操作会非常优雅。有没有办法做到这一点,或者我需要通过' dict'?我读过那个' exec'是危险的(不是我可以让这个工作)。 SAS为他们的宏提供了这个功能,这是我来自的地方。以下是我尝试做的一个示例(使用' @'用于说明目的):
def TrainModels (mtype):
model_@mtype = ExtraTreesClassifier()
model_@mtype.fit(X_@mtype, Y_@mtype)
TrainModels ('FirstModel')
TrainModels ('SecondModel')
答案 0 :(得分:1)
您可以使用字典:
models = {}
def TrainModels (mtype):
models[mtype] = ExtraTreesClassifier()
models[mtype].fit()
答案 1 :(得分:0)
首先,您在TrainModels函数中定义的任何名称都是该函数的本地名称,因此无法在程序的其余部分中访问。所以你必须定义一个全局名称。
Python中的所有内容都是字典,包括全局命名空间。您可以动态定义新的全局名称,如下所示:
my_name = 'foo'
globals()[my_name] = 'bar'
这太糟糕了,你永远不应该这样做。它为您的代码添加了太多的间接性。当其他人(或者你自己在3个月内代码不再是新鲜的时候)会阅读代码并查看“foo”。在其他地方使用过,他们很难搞清楚它的来源。代码分析工具无法为您提供帮助。
我会像Milkboat所说的那样使用dict。