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

2017-12-15  本文已影响0人  舒小贱

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

参考:定义函数

上一篇 下一篇

猜你喜欢

热点阅读