如何在Python中使用默认参数值和可选参数定义函数?

时间:2013-02-07 16:30:59

标签: python

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

我有这个功能:

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)

我希望make x0y0具有默认值,如果我没有z值,则z可选。

我该怎么做?谢谢。

4 个答案:

答案 0 :(得分:6)

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

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

这使得x0y0的默认值为0z的默认值为None

假设Nonez的实际值没有意义,那么只有当z不是None时,您才可以在函数中添加逻辑以对{{1}}执行某些操作。

答案 1 :(得分:4)

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

检查z是否None,看是否已被省略。

答案 2 :(得分: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)

...

希望这会有所帮助

答案 3 :(得分:2)

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

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

例如,如果您希望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