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由于是强类型语言,函数调用的接收个数和函数返回值个数必须一致,所以不存在这个现象。

参考:定义函数

你可能感兴趣的:(python的函数多返回值的假象及与golang的函数多返回值的区别)