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

How can I define a function with default parameter values and optional parameters in Python?

本问题已经有最佳答案,请猛点这里访问。

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

我有这个功能:

1
2
3
4
5
6
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)

我要使x0y0有一个默认值,如果没有z值,则使z可选。

我该怎么做?谢谢您。


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

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

这使得x0y0具有0的默认值,z具有None的默认值。

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


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

检查z是否为None,看是否省略。


将默认值设为X0、Y0,如下所示,如果Z也是可选的:

1
2
3
4
5
6
7
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)

呼叫:

1
nearxy(1,2)

如果只想指定Z:

1
 nearxy(1,2,z=3)

希望这有帮助


若要指定默认值,请使用"="定义参数,然后定义该值。

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

例如,如果希望x0y0z的默认值为1、2、3:

1
2
3
4
5
6
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默认参数值。