search
HomeBackend DevelopmentPython Tutorial为什么大多数编程语言被设计成函数只有一个返回值,而不是多个?

程序语言的发展很大的部分受人类正常思维方式的影响,在生活中,给一个输入,有两个输出很常见,而大多数编程语言为什么不这么设计?

—————————————————————
不同编程语言因设计的不同支持1个或多个返回值,故于2016—02—06更改问题。

回复内容:

python允许你干多个返回值的事情。然并卵,其实会包裹成一个tuple,加之tuple本来就可以原素绑定… 其实这个问题也不是一句「返回一个数据结构」就可以清楚解决的。既然返回值可以是一个数据结构,那么参数其实也可以。为什么从C、Pascal这些古老的语言开始,参数就可以是多个,而返回值却是一个呢?这个问题值得探讨一下。

假设我们设计了一个语言叫C-,函数的参数和返回值都只能是一个,那么在C-里,一个多参数多返回值的函数的定义和使用过程就是这样的:

struct Para...;//define a parameter struct
struct Ret...;//define a return struct
Ret func(Para p){
    ...
}

Para para = XXX;
Ret ret;
ret = func(para);
在runtime允许多值return并不是很有用,虽然看上去好像非常有用,如果这是一个必要的语言机制,那现在大多数语言就应该已经都支持了。如果你用过有这个功能的语言,比如Go,也多用来方便错误处理,它不一定要这么用,但实际的代码里通常就是这样
result, err := func()
result, _   := func()
fork被你吃了?(ー`´ー) C里调一个指针或者结构体指针,你想返回多少都行,只要内存够。 请看Lua,函数参数可多可少,返回值可多可少,接收返回值也是可多可少。 流行得比较早的语言,比如pascal和c,都只有一个返回比较简单类型的返回值,这可能是为了把返回值放到某寄存器中返回,这样调用者可以直接用,有利于提高程序的速度。过去cpu是很慢的,这种优化很有价值。

c++大概是继承了c,所以只有一个i返回值。java从语法上模仿c++,所以也只有一个返回值。

设计一个多个返回值的语言,并不困难。golang就是一个。 个人理解,多返回值的函数一定可以通过多个单返回值的函数来实现。对于早起的语言设计者而言,这应该是一个锦上添花而不是必须的功能,优先级不高。
当然,后来的语言,很多已经实现了这个功能,因为毕竟不难
ps,说通过指针在参数里传递的,可以退散了,不是一个问题好吧。 现代编程语言中「函数」概念多来自 ALGOL 和 Fortran
ALGOL 和 Fotrean 的概念借自数学
数学函数有多元之说,然而你见过几个「多返回值」的? 这是一个好问题。为什么函数只返回一个值。这是存储和计算的一种统一。一个没有副作用的函数,返回一个值,那他在使用上其实是可以看做一个变量,一个有条件的变量,可以很好的简化程序。
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
How to Use Python to Find the Zipf Distribution of a Text FileHow to Use Python to Find the Zipf Distribution of a Text FileMar 05, 2025 am 09:58 AM

This tutorial demonstrates how to use Python to process the statistical concept of Zipf's law and demonstrates the efficiency of Python's reading and sorting large text files when processing the law. You may be wondering what the term Zipf distribution means. To understand this term, we first need to define Zipf's law. Don't worry, I'll try to simplify the instructions. Zipf's Law Zipf's law simply means: in a large natural language corpus, the most frequently occurring words appear about twice as frequently as the second frequent words, three times as the third frequent words, four times as the fourth frequent words, and so on. Let's look at an example. If you look at the Brown corpus in American English, you will notice that the most frequent word is "th

How Do I Use Beautiful Soup to Parse HTML?How Do I Use Beautiful Soup to Parse HTML?Mar 10, 2025 pm 06:54 PM

This article explains how to use Beautiful Soup, a Python library, to parse HTML. It details common methods like find(), find_all(), select(), and get_text() for data extraction, handling of diverse HTML structures and errors, and alternatives (Sel

Image Filtering in PythonImage Filtering in PythonMar 03, 2025 am 09:44 AM

Dealing with noisy images is a common problem, especially with mobile phone or low-resolution camera photos. This tutorial explores image filtering techniques in Python using OpenCV to tackle this issue. Image Filtering: A Powerful Tool Image filter

How to Perform Deep Learning with TensorFlow or PyTorch?How to Perform Deep Learning with TensorFlow or PyTorch?Mar 10, 2025 pm 06:52 PM

This article compares TensorFlow and PyTorch for deep learning. It details the steps involved: data preparation, model building, training, evaluation, and deployment. Key differences between the frameworks, particularly regarding computational grap

Introduction to Parallel and Concurrent Programming in PythonIntroduction to Parallel and Concurrent Programming in PythonMar 03, 2025 am 10:32 AM

Python, a favorite for data science and processing, offers a rich ecosystem for high-performance computing. However, parallel programming in Python presents unique challenges. This tutorial explores these challenges, focusing on the Global Interprete

How to Implement Your Own Data Structure in PythonHow to Implement Your Own Data Structure in PythonMar 03, 2025 am 09:28 AM

This tutorial demonstrates creating a custom pipeline data structure in Python 3, leveraging classes and operator overloading for enhanced functionality. The pipeline's flexibility lies in its ability to apply a series of functions to a data set, ge

Serialization and Deserialization of Python Objects: Part 1Serialization and Deserialization of Python Objects: Part 1Mar 08, 2025 am 09:39 AM

Serialization and deserialization of Python objects are key aspects of any non-trivial program. If you save something to a Python file, you do object serialization and deserialization if you read the configuration file, or if you respond to an HTTP request. In a sense, serialization and deserialization are the most boring things in the world. Who cares about all these formats and protocols? You want to persist or stream some Python objects and retrieve them in full at a later time. This is a great way to see the world on a conceptual level. However, on a practical level, the serialization scheme, format or protocol you choose may determine the speed, security, freedom of maintenance status, and other aspects of the program

Mathematical Modules in Python: StatisticsMathematical Modules in Python: StatisticsMar 09, 2025 am 11:40 AM

Python's statistics module provides powerful data statistical analysis capabilities to help us quickly understand the overall characteristics of data, such as biostatistics and business analysis. Instead of looking at data points one by one, just look at statistics such as mean or variance to discover trends and features in the original data that may be ignored, and compare large datasets more easily and effectively. This tutorial will explain how to calculate the mean and measure the degree of dispersion of the dataset. Unless otherwise stated, all functions in this module support the calculation of the mean() function instead of simply summing the average. Floating point numbers can also be used. import random import statistics from fracti

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
2 weeks agoBy尊渡假赌尊渡假赌尊渡假赌
Repo: How To Revive Teammates
1 months agoBy尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: How To Get Giant Seeds
4 weeks agoBy尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser is a secure browser environment for taking online exams securely. This software turns any computer into a secure workstation. It controls access to any utility and prevents students from using unauthorized resources.

SublimeText3 Linux new version

SublimeText3 Linux new version

SublimeText3 Linux latest version

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)