如何在不将数据集作为参数传递给Python函数的情况下将数据集传递给函数

时间:2020-05-13 13:58:17

标签: python class global-variables

我正在编写一个稍后将进行优化的函数,因此无法将数据作为参数传递给该函数。我对该函数的参数仅限于进行优化的参数。

我需要在函数中的某个地方传递数据,我想知道如何使用Global变量或类来做到这一点。当前,我正在读取函数中的“数据”,这是不正确的,因为每次数据更新时,我都必须更新该函数。

如果我在脚本中编写该函数,则该函数将正常运行。但我将其编写为模块,稍后将导入到脚本中。

这是我的功能:


def f (args):

    data = pd.read_csv('/path.to.train.data')

    do something....
    return something

2 个答案:

答案 0 :(得分:0)

也许将您的函数分开了,所以您将有一个函数返回xgbparams,然后有一个函数返回dtrain,然后有一个函数需要xgbparamsdtrain来完成计算。

def1():
    return xgbparams

def2():
    return dtrain

def3(xgbparams, dtrain);
    run the thing...

此外,通过将其拆分,您将有更好的机会弄清有效的方法。

否则,如果要创建一个类,则可以使用selfself.dtrain来传递数据。

class myclass(object):
    import xgboost as xgb
    def __init__(self, data):
        self.dtrain = xgb.DMatrix(data)

    etc..

初始化类时,只需将其定义为输入并导入即可:

myclass('/train.buffer')

答案 1 :(得分:0)

我最终写了一个嵌套函数,将数据传递给内部函数。

def f (args, data):
   "some operations on the data"
   def g(args):
       return something
    other operations 
    return something