You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jupyter Notebook无print却打印采样结果,Py文件无此问题求解

问题:Jupyter Notebook自动打印采样结果,.py文件运行无此情况

我在实现一个采样概率密度函数,代码里没有写print函数,但在Jupyter Notebook(.ipynb文件)中运行时会自动输出采样结果;复制到.py文件中运行则不会出现这个情况。

我的代码如下:

import numpy as np

def gen_b():
    
    samples = []
    num_samples = 10000
    
    while len(samples) < num_samples:
        b = np.random.random() * 6
        y = np.random.random()
        if y <= pdf_b(b):
            samples.append(b)
    
    return samples

gen_b()

其中pdf_b(x)是一个简单的f(x) = y函数,内部没有打印逻辑。我不希望出现的输出类似:

[2.140133171853366,
3.782237422460611,
4.252458824774285,
1.9767482772032179,
...]
Output is truncated. View as a scrollable element or open in a text editor. Adjust cell output settings...

原因

Jupyter Notebook的单元格默认会打印最后一行表达式的返回值。你代码的最后一行直接调用了gen_b(),这个函数返回的列表就是单元格最后一个没有被赋值的表达式结果,所以被自动输出了。而.py文件中如果没有显式调用print,函数返回值不会被自动打印。

解决方法

  • 方法1:将函数调用的结果赋值给变量,避免它成为单元格最后一个无赋值的表达式:
samples = gen_b()

返回值会被存储到samples变量中,Jupyter就不会自动打印结果了。

  • 方法2:在函数调用末尾添加分号;,抑制自动输出:
gen_b();

Jupyter遇到末尾的分号时会跳过对返回值的自动打印操作。

  • 方法3:如果后续不需要使用采样结果,可以用下划线变量接收返回值:
_ = gen_b()

下划线变量是Python中常用的接收不需要使用的返回值的惯例,这样既不会占用有用的变量名,也能抑制自动输出。

内容的提问来源于stack exchange,提问作者Emirkan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 15:50:14