我是一名Python初學者,我面臨一個需要可選參數的函數的問題。 該函數獲取可變數量的文件路徑的參數,可以是2到n個參數。此後,可以將一定數量的可選參數傳遞給此函數。 我試圖做這樣的事情:如何在python中使用可選參數正確調用函數
def compareNfilesParameters(*args):
start_time = time.time()
listFiles = []
listParameters = []
for argument in args:
if str(argument).endswith(".vcf"):
listFiles.append(str(argument))
else:
listParameters.append(argument)
因此,如果參數文件的擴展名爲它被認爲是文件路徑參數之一,其他被視爲可選參數。
我想要做的就是讓用戶調用的功能等:
function('a.vcf', 'b.vcf', 'c.vcf')
或
function('a.vcf', 'b.vcf', 'c.vcf', 0, 1)
或
function('a.vcf', 'b.vcf', 'c.vcf', 0, 1, 4,...,3)
我嘗試不同的方法,但他們沒有滿足我。
第一種方法是在聲明函數爲:
def compareNfilesParameters(*args)
但這樣一來,如果我得到例如3個參數,2肯定會有的文件路徑,最後一個我不知道的它指的是哪個變量。所以我需要指定每個值併爲我想要使用默認值的參數傳遞'-1'。
的第二個方法是:
def compareNfilesParameters(*args, par1 = 10, par2 = 15 ..)
但這種方式我需要調用的功能等:
compareNfilesParameters(path1, path2, path3, par1 = 10)
,而不是像
compareNfilesParameters(path1, path2, path3, 10)
或10將在參數輸入中被考慮,對吧?我不想使用這種方法,因爲它調用該函數變得非常冗長。
你會如何做到這一點?
如果你提供一個默認值,如果你不想改變默認值,你不需要傳遞任何東西給函數。例如,如果你做了'def foo(a,b,c = 10)',如果你不想改變'c'的值,你可以用'foo(a,b)'調用函數。 – IanAuld
如何簡單地使用一個將所有路徑作爲列表或元組並且所有其他參數都是可選的參數?像''compareNfilesParameters(files,* args)'' – SmCaterpillar