gpt4 book ai didi

language-agnostic - 被调用的 fn 被忽略时的返回值去哪里了?

转载 作者:行者123 更新时间:2023-12-04 10:56:36 25 4
gpt4 key购买 nike

我刚刚在 Dive into Python 中看到了一个代码片段其中一个函数正在调用另一个函数(实际上返回的不是 None )并且调用函数仍然没有将返回的值分配给变量。

我被它吓到了,赶紧去试试:

>>> def foo(): return "hello_world!"
...
>>> def bar(): foo()
...

我实现了 python中的每一个功能返回( None 或其他)

令我惊讶的是,当我在以前学习的语言中尝试相同的逻辑时,它们似乎表现出类似的行为:
C:
#include<stdio.h>

char* foo(){return "hello_world!";}

int main(void){
foo(); // works!
return 0;
}
C++
#include<iostream>
#include<string>
using namespace std;

string foo(){return "hello_world!";}

int main(){
foo(); // works!
return 0;
}
Java:
public class Test{

public static String foo(){return "hello_world!";}

public static void main(String args[]){
foo(); // works!
System.exit(0);
}
}

一直以来我都在假设一个函数是否真的返回了一些东西,它应该被设置为某个变量,否则返回的值会去哪里?!

最佳答案

它消失了。

对于返回需要垃圾收集的对象的语言和运行时,只要函数返回,调用该函数的结果就有资格进行收集。

如果语言和运行时返回引用计数或类似保护的对象,以在不再需要该对象时强制立即清除,则该清除将在函数返回时发生。

否则,无论出于何种意图和目的,值(value)都会丢失。没有任何伤害,应该是完全安全的。

关于language-agnostic - 被调用的 fn 被忽略时的返回值去哪里了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6886140/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com