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

如何打印作为参数传入的函数返回值?C转Python入门疑问

问题原因与解决方法

嘿,我完全懂你现在的困惑——刚从C转Python,很容易在函数传递的细节上踩坑!

问题出在哪?

你调用main_function(stub_function)的时候,其实是把函数本身作为参数传进去了,而不是调用这个函数后得到的返回值。在Python里,函数是一等对象,也就是说函数本身可以像变量一样被传递、赋值,所以main_function里的print(string)打印的是这个函数对象的内存标识,也就是你看到的<function stub_function at 0x7f21f07e0d08>。

两种解决方法

根据你的需求,有两种常见的处理方式:

1. 直接传递函数的返回值

如果你只是想把stub_function的返回值传给main_function,只需要在传递的时候加上()调用函数就行:

main_function(stub_function())

这里的stub_function()会先执行,返回'some random string',再把这个字符串传给main_function,这样就能打印出你想要的内容了。

2. 修改main_function,让它内部调用传入的函数

如果你是想把函数作为“逻辑单元”传递进去(比如以后可能换其他函数传进来),可以修改main_function,让它在内部调用传入的函数:

def main_function(func):
    # 调用传入的函数,拿到返回值再打印
    print(func())
def stub_function():
    return 'some random string'

这时候再调用main_function(stub_function),就会自动执行传入的stub_function,并打印它的返回值了。这种方式类似C里的函数指针用法,适合需要回调函数的场景。

补充:和C的小对比

其实和C里的逻辑有点像——在C里如果你传递了一个函数指针,也需要显式调用它(比如(*func)())才能拿到返回值;Python里的函数对象就相当于C的函数指针,直接传的话是“指针本身”,必须调用才会执行函数逻辑~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:01:01