使用函数参数构造对象或数据框的名称

时间:2017-11-30 19:55:01

标签: python function parameters

我想使用函数参数在Python中创建数据框和/或对象的动态名称。我有大约40个不同的名字,所以在函数中执行此操作会非常优雅。有没有办法做到这一点,或者我需要通过' dict'?我读过那个' exec'是危险的(不是我可以让这个工作)。 SAS为他们的宏提供了这个功能,这是我来自的地方。以下是我尝试做的一个示例(使用' @'用于说明目的):

def TrainModels (mtype):
    model_@mtype = ExtraTreesClassifier()
    model_@mtype.fit(X_@mtype, Y_@mtype)
TrainModels ('FirstModel')
TrainModels ('SecondModel')

2 个答案:

答案 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。