[英]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.