假設我有一個函式,當你給它一個數字時,它會回傳一個顏色和形狀:
def metadata(number):
"""Define the state FIPS code and state name from a given state abbreviation.
:param number num -> number of object
:return: color: str -> color of object
:return: shape: str -> shape of object
"""
if_number == 1: color = 'red'; shape = 'square'
if number == 2: color = 'blue'; shape = 'triangle'
if number == 3: color = 'yellow'; shape = 'circle'
return color, shape
如何讓函式接受多個引數?所以我可以運行 metadata(1,2,3) 并輸出所有顏色和形狀?我嘗試研究解決方案,但它不是一個 Python 字典,所以我找不到類似的東西。如果您知道這種結構的名稱,將對我的搜索有所幫助!不知道這個 if key = value: key = value; key = value函式有沒有名字
uj5u.com熱心網友回復:
這是看待問題的另一種方式,但我不會像你試圖做的那樣。我會簡單地map(或使用串列理解)將您現有的函式應用于每條資料:
for result in map(metadata, [1, 2, 3]):
print(result)
('red', 'square')
('blue', 'triangle')
('yellow', 'circle')
正如另一個答案所指出的,您可以使用 var-args 執行您要執行的操作:
def metadata(*numbers):
results = []
for number in numbers:
if number == 1: color = 'red'; shape = 'square'
if number == 2: color = 'blue'; shape = 'triangle'
if number == 3: color = 'yellow'; shape = 'circle'
# Or make this a generator function that "yield"s results
results.append(color, shape)
return results
metadata(1, 2, 3)
但我會避免這樣做。為什么您可能想要處理多個專案對這個功能很重要?如果它的主要作業是處理單個專案,它就不應該關心這個。
此外,如果有人輸入了 1、2 或 3 以外的值,您的代碼將有錯誤行為。您應該將這些ifs更改為elifs,并有一個包羅萬象的else案例來處理壞資料。
uj5u.com熱心網友回復:
您可以使用 *args 引數
編輯:您將 *args 作為函式定義中多個引數的占位符。然后你可以遍歷數字。
def metadata(*numbers):
"""Define the state FIPS code and state name from a given state abbreviation.
:param number num -> number of object
:return: color: str -> color of object
:return: shape: str -> shape of object
"""
results = []
color = ""
shape = ""
for number in numbers:
if number == 1:
color = 'red'
shape = 'square'
elif number == 2:
color = 'blue'
shape = 'triangle'
elif number == 3:
color = 'yellow'
shape = 'circle'
results.append([color, shape])
return results
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/347778.html
上一篇:c#將字典值組合成新的鍵值對
下一篇:根據另一個字典值對字典進行排序
