簡體   English   中英

如何使用可選參數 python3 創建 function

[英]how to create a function with optional parameter python3

我有一個繪圖 function 到 plot 一些數據。 我想以一種它會自動獲得 y 限制的方式對其進行語法化,除非我手動想要將特定限制傳遞給它。

當我想要使用自己的軸限制時,我通過手動更改變量中的值來做到這一點。 但是我知道這只是一種解決方法,因此歡迎提出任何建議:

def plot_data(dataset, set_own_lim=1, my_ymin, my_ymax):
       ax=plt.subplot(111)
             if set_own_lim=0:
                ax.set_ylim(min(dataset),max(dataset)) #calculating y range from data
             else:
                ax.set_ylim(my_ymin, my_ymax)        # uses my own limits for y range
       ax.plot(dataset)

我想以某種方式定義 function ,我可以將其plot_data(some_data)以從數據中獲取自動限制,我也可以將其稱為plot_data(some_data,my_ymin, my_ymax) ,當我需要定義軸時手動范圍

my_ymin, my_ymax arguments 設置為None並且在 function 內,您可以檢查這些值是否為None然后您可以計算它們,否則使用用戶傳遞的值。 像這樣:

def plot_data(dataset, my_ymin=None, my_ymax=None):
       ax=plt.subplot(111)
             if not my_ymin:
                ax.set_ylim(min(dataset),max(dataset))
             else:
                ax.set_ylim(my_ymin, my_ymax)
       ax.plot(dataset)

更簡單地使用None

def plot_data(dataset, ymin=None, ymax=None):
   # ...
   ymin = min(dataset) if ymin is None else ymin
   ymax = max(dataset) if ymax is None else ymax
   # ...

但是請記住,這將使您無法實際None傳遞給set_XXXlim() 在這種情況下,您可以使用哨兵值:

sentinel = object()

def plot_data(dataset, ymin=sentinel, ymax=sentinel):
   # ...
   ymin = min(dataset) if ymin is sentinel else ymin
   ymax = max(dataset) if ymax is sentinel else ymax
   # ...

這將允許plot_data(data, None, None)

暫無
暫無

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

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