1. 程式人生 > >python返回多個參數

python返回多個參數

www. span 可能 values 變量 mat ... pos lis

返回多個值

函數可以返回多個值嗎?答案是肯定的。

比如在遊戲中經常需要從一個點移動到另一個點,給出坐標、位移和角度,就可以計算出新的新的坐標:

import math

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

import math語句表示導入math包,並允許後續代碼引用math包裏的sincos等函數。

然後,我們就可以同時獲得返回值:

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

但其實這只是一種假象,Python函數返回的仍然是單一值:

>>> r = move(100, 100, 60, math.pi / 6)
>>> print(r)
(151.96152422706632, 70.0)

原來返回值是一個tuple!但是,在語法上,返回一個tuple可以省略括號,而多個變量可以同時接收一個tuple,按位置賦給對應的值,所以,Python的函數返回多值其實就是返回一個tuple,但寫起來更方便。

再python的叠代語法中也可以看到這種返回tuple的語法

>>> d = {a: 1, b: 2, c: 3}
>>> for key in d:
...     print(key)
...
a
c
b

因為dict的存儲不是按照list的方式順序排列,所以,叠代出的結果順序很可能不一樣。

默認情況下,dict叠代的是key。如果要叠代value,可以用for value in d.values(),如果要同時叠代key和value,可以用for k, v in d.items()

以上內容參考了廖雪峰的網站:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014317793224211f408912d9c04f2eac4d2af0d5d3d7b2000

python返回多個參數