python返回多個引數

2021-10-08 03:31:44 字數 1111 閱讀 4195

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

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

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 = 

>>> for key in d:

... print(key)

...a

cb

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

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

函式 返回多個引數

返回多個資料,返回的是元組 解包 用變數來接收 info xiaoming beijing haidian name addr,arte info 用三個變數來接受 print name addr,arte 區域性變數 在函式中定義的變數 沒有加global修飾 在函式裡面,除了函式就失效了 例如 ...

sp executesql返回多個輸出引數

參考下面sp executesql單個輸出引數,i變數為動態列名,列名字尾n或是c,為了比較更新前後值是否發生了變化,分別做了兩次select取值,程 冗餘和產生不容忽視效能的問題。set sql n select n convert nvarchar max i n from inserted e...

sp executesql返回多個輸出引數

參考下面sp executesql單個輸出引數,i變數為動態列名,列名字尾n或是c,為了比較更新前後值是否發生了變化,分別做了兩次select取值,程 冗餘和產生不容忽視效能的問題。view code set sql n select n convert nvarchar max i n from ...