2

我想定义一个可以省略输入参数或具有默认值的函数。

我有这个功能:

def nearxy(x,y,x0,y0,z):
   distance=[]
   for i in range(0,len(x)):   
   distance.append(abs(math.sqrt((x[i]-x0)**2+(y[i]-y0)**2)))
   ...
   return min(distance)

我想要 makex0y0有一个默认值,z如果我没有一个z值,则让它成为可选的。

我怎样才能做到这一点?谢谢你。

4

4 回答 4

6

你不能在 Python 中使函数参数成为可选的,但你可以给它们默认值。所以:

def nearxy(x, y, x0=0, y0=0, z=None):
    ...

这使得x0y0具有默认值0,并且z具有默认值None

假设None作为 的实际值没有意义z,那么您可以在函数中添加逻辑以z仅在它不是时才执行某些操作None

于 2013-02-07T16:34:17.677 回答
4
def nearxy(x, y, x0 = 0, y0 = 0, z = None):
   ...

检查 if zisNone看它是否被省略了。

于 2013-02-07T16:34:52.597 回答
3

像这样给 x0,y0 提供默认值,如果 z 也是可选的:

def nearxy(x,y,x0=0,y0=0,z=None):
   distance=[]
   for i in range(0,len(x)):   
   distance.append(abs(math.sqrt((x[i]-x0)**2+(y[i]-y0)**2)))
   if z is not None:
        blah blah
   return min(distance)

称呼 :

nearxy(1,2)

如果您只想分配 z :

 nearxy(1,2,z=3)

……

希望这可以帮助

于 2013-02-07T16:36:56.583 回答
2

要指定默认值,请使用“=”定义参数,然后定义值。

指定默认值的参数可选参数。

例如,如果您希望x0y0z具有默认值 1、2、3:

def nearxy(x,y,x0=1,y0=2,z=3):
   distance=[]
   for i in range(0,len(x)):   
       distance.append(abs(math.sqrt((x[i]-x0)**2+(y[i]-y0)**2)))
   ...
   return min(distance)

有关更多信息,请参阅http://docs.python.org/2/tutorial/controlflow.html#default-argument-values

于 2013-02-07T16:35:10.503 回答