[英]Passing a variable number of parameters in Python 3
我想定義一個函數,該函數使用另一個具有可變數量的參數作為參數傳遞的函數。 問題是獲取(1)中的參數並將它們傳遞給(2)中的調用:
def f1(x):
return x
def f2(x,a):
return x+a
def f3(x,a,b):
return b*x+a
def genStr(x0,x1, n, f, *params): # <----------------- (1)
out = ''
dx = (x1-x0)/(n-1)
x = x0
out += r'\draw[thick] '
for k in range(0,n):
if k!=0:
out += r' -- '
out += '({:.4f},{:.4f})'.format(x,f(x,params)) # <------- (2)
x += dx
out += r';'
return out
print(genStr(0, 2, 3, f1))
print(genStr(0, 2, 3, f2, 0.1))
print(genStr(0, 2, 3, f3, 2, 0.3))
您需要解壓 params 列表:
out += '({:.4f},{:.4f})'.format(x,f(x, *params )) # * == splat operator, unpacks list
要得到
\draw[thick] (0.0000,0.0000) -- (1.0000,1.0000) -- (2.0000,2.0000);
\draw[thick] (0.0000,0.1000) -- (1.0000,1.1000) -- (2.0000,2.1000);
\draw[thick] (0.0000,2.0000) -- (1.0000,2.3000) -- (2.0000,2.6000);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.