python返回无

时间:2018-03-23 19:33:46

标签: python return root

我试图以字典的形式从函数返回对象。它似乎在函数内部工作正常,但返回“无”。

=============================================== ==== 打印结果是::

{'tree1': [<ROOT.TH1D object ("root2_tree_tree1_px_hist") at 0x7fa40eec05b0>, <ROOT.TH1D object ("root2_tree_tree1_py_hist") at 0x7fa40eec0cd0>, <ROOT.TH1D object ("root2_tree_tree1_pz_hist") at 0x7fa40eec13f0>], 'tree2': [<ROOT.TH1D object ("root2_tree_tree2_px_hist") at 0x7fa40eec2620>, <ROOT.TH1D object ("root2_tree_tree2_py_hist") at 0x7fa40eec2f20>, <ROOT.TH1D object ("root2_tree_tree2_pz_hist") at 0x7fa40eeb4850>]}

{'tree1': [None, None, None], 'tree2': [None, None, None]}

所以,现在我很困惑。它在功能上打印正确的值,但没有正确返回。 代码如下所示。

def set_histograms():
    .
    .
    .
    print(DichistList)  # this would correctly print dictionary 
    return DichistList

def main():
    DICHISTLIST = set_histograms()
    print(DICHISTLIST)  # this is printing "None", why?

1 个答案:

答案 0 :(得分:0)

所以,这可能与您正在使用ROOT这一事实有关,并且除非您使用特定的包,否则ROOT和python不会很好。我强烈建议你查看root_numpy,当我在粒子物理学时,我广泛使用它。

示例:读取包含ttree mytree的myfile.root:

from root_numpy import root2array
myarray = root2array( 'myfile.root', 'mytree' ) )

您可以使用以下命令立即将其转换为pandas数据框:

df = pd.DataFrame( myarray )