python的函数多返回值的假象及与golang的函数多返回值的区别

golang中函数可以有多个返回值,python可以吗,答案是肯定的。

import math
def move(x, y, step, angle=0):
    nx = x + step*math.cos(angle)
    ny = y - step*math.sin(angle)
    return nx, ny
    

x, y = move(100, 100, 60, math.pi/6)
print(x, y)

运行结果:

E:\python_study>python 1.py
(151.96152422706632, 70.0)

但其实这是一种假象,函数返回的仍然是单一值:

import math
def move(x, y, step, angle=0):
    nx = x + step*math.cos(angle)
    ny = y - step*math.sin(angle)
    return nx, ny
    

x, y = move(100, 100, 60, math.pi/6)
print(x, y)

val = move(100, 100, 60, math.pi/6)
print(val)

运行结果:

E:\python_study>python 1.py
(151.96152422706632, 70.0)
(151.96152422706632, 70.0)

原来:函数返回值是单个tuple,只是多个变量可以同时接收一个tuple,并按位置赋值。所以python的函数多返回值其实是假的
而golang由于是强类型语言,函数调用的接收个数和函数返回值个数必须一致,所以不存在这个现象。

参考:定义函数

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。