簡體   English   中英

Python - 在 Function 中輸入未指定數量的 Arguments

[英]Python - Entering an Unspecified Amount of Arguments in a Function

我基本上有這個輸入,我想使用 function 將其拆分為不同的變量,但問題是有些我想拆分為 2 個變量,有些是 3 個等。例如:

day, month, year = input("Birthday: ").split(",")

在這段代碼中,您將輸入類似“1, January, 2000”的內容,它將日、月和年排序為不同的變量,即“日”、“月”和“年”。 但是,我希望有一個選項可以在字符串為空時不發生“拆分”。 所以,我決定做一個 function 這樣做。

對於 function 部分,我有如下內容。

def splitText(input, thing1, thing2, thing3):
if input != "":
    thing1, thing2, thing3 = input.split(",")


bDay = input("Birthday: ")
splitText(bDay, day, month, year)

但是這段代碼有一個問題,只有 3 個“東西”可以輸入到 arguments 中。 我希望它是可變的,您可以將 2、3、4、任意數量的 arguments 放入 function。 我嘗試過使用“*args”,但我只是不太確定如何使它適用於我的代碼的 rest 等等。

任何幫助將不勝感激,無論是解決這個問題還是只是以更有效的方式完成目標:D

PEP 3132 -- 擴展的可迭代解包

使用它,您可以解壓縮包含 n 個單詞的字符串。

bDay = input("Birthday: ")
*a_lst, = bDay.split(',')

#Birthday: 15,july,2000
#['15', 'july', '2000']

我不會使用變量,而是使用可以動態為其分配鍵和值的字典。

def splitText(a_lst):
    lst  = ['day','month','year']
    d = {}
    for i in range(len(a_lst)):

        for j in range(len(lst)):
            if i == j :
                d[lst[j]] = a_lst[i]
    return d

print(splitText(a_lst))



   #Birthday: 15,july,2000
    #{'day': '15', 'month': 'july', 'year': '2000'}

    #Birthday: 28
    #{'day': '28'}

您可以使用 *args 來獲取多個參數

def my_func(parameter1, parameter2, parameter3, *args):  # *args takes infinite parameters
    print("Parameter1:", parameter1) # Printing parameter 1-3
    print("Parameter2:", parameter2)
    print("Parameter3:", parameter3)
    for argument in args: # For ever argument in our *args
        print('Argument:', argument) # Print the argument


my_func('a', 'b', 'c', 'd', 'e', 'f')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM