【问题标题】:Jupyter Notebook: multiple function calls only prints return for the most recently called functionJupyter Notebook:多个函数调用仅打印最近调用函数的返回
【发布时间】:2022-01-18 15:35:12
【问题描述】:

我正在尝试创建一个类,以便在 Jupyter Notebook 中快速简单地查看我的数据。

import color
import h5py

class h5view:
    tempf = h5py.File('juliadata\jul20160102_150km.001.hdf5', 'r')

    def data():
        print(color.YELLOW + 'Data' + color.END)
        templist = []
        for name in h5view.tempf['/Data']:
            templist.append(name)
        return templist
    def metadata():
        print(color.YELLOW + 'Metadata' + color.END)
        templist = []
        for name in h5view.tempf['/Metadata']:
            templist.append(name)
        return templist

这运行没有任何错误。在下一个 Jupyter Notebook Cell 中输入

h5view.data()
h5view.metadata()

输出

Data
Metadata
['Data Parameters',
 'Experiment Notes',
 'Experiment Parameters',
 'Independent Spatial Parameters',
 '_record_layout']

但在元数据之前应该有另一个返回列表。我尝试使用类中的其他函数(上面未列出),它总是返回最近调用的函数,但不返回任何其他函数。

如果我只是运行h5view.data() 那么输出将是

Data
['Array Layout', 'Table Layout']

如何阻止此处的列表在我调用另一个函数时消失?

我尝试将函数调用分配给变量,如下所示:

a = h5view.data()
b = h5view.metadata()
print(a, b)

给出一个新的输出:

Data
Metadata
['Array Layout', 'Table Layout'] ['Data Parameters', 'Experiment Notes', 'Experiment Parameters', 'Independent Spatial Parameters', '_record_layout']

现在我想要的列表在这里,但它在元数据之后。我想要的是看起来像这样的东西:

Data
['Array Layout',
 'Table Layout']
Metadata
['Data Parameters',
 'Experiment Notes',
 'Experiment Parameters',
 'Independent Spatial Parameters',
 '_record_layout']

有没有一种简单的方法可以做到这一点,或者我应该采取另一种方法?

【问题讨论】:

  • 因为笔记本总是只显示最后一个表达式的返回值。 (当然,无论是明确打印的内容。)
  • 打印 any 返回值的事实是您正在使用的交互式解释器的工件,而不是您的代码。如果您想查看这两个函数的输出,请为第一个调用 print(h5view.data())。 (如果您将其作为脚本运行,您将不会看到 either 返回值而不显式打印它们。)

标签: python function class jupyter-notebook h5py


【解决方案1】:

只有在单元格中没有代码的情况下,Python 笔记本才会打印一个值,这就是 h5view.data() 不打印的原因。要获得所需的结果,只需分别对它们中的每一个使用 print:

print(h5view.data())
print(h5view.metadata())

【讨论】:

    猜你喜欢
    • 2021-03-08
    • 1970-01-01
    • 2022-01-24
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多