簡體   English   中英

在 Python 3 中傳遞可變數量的參數

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

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