簡體   English   中英

Python-查找函數內傳遞的參數數量

[英]Python - find number of passed arguments inside a function

想象一下,我想用所有具有默認值的參數來定義一個函數:

def fun(a=2, b=1):
    ...

該函數內部的邏輯是:如果未傳遞任何內容,則使用默認值;否則,使用默認值。 如果僅通過a,則b始終等於a / 2; 如果同時傳遞了a和b,則使用傳遞的值。

完成此功能的問題在於,似乎很難分辨(例如) fun(4)fun(4,1)之間的區別,因為我不知道b = 1是在外部提供還是默認提供的值。

解決這個問題的一種明顯方法是使用* args,但是在我的情況下,我想保留默認值和名稱。 因此,似乎唯一的出路是在fun()內部知道調用它時傳遞了多少個參數。 我猜可能會有一些系統功能要使用,但是我沒有成功找到它們。 任何想法如何這項工作將是非常有益的。

謝謝! :)

例如,您可以將b的默認值設置為None ,然后在函數內部計算b值。

def fun(a=2, b=None):
    if b is None:
        b = a/2
    ...

這將為您提供:

f()    : a=2, b=1
f(4)   : a=4, b=2
f(4,1) : a=4, b=1

暫無
暫無

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

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