我想定义一个可以省略输入参数或具有默认值的函数。
我有这个功能:
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 x0
和y0
具有默认值,如果我没有z
值,则z
可选。
我该怎么做?谢谢。
答案 0 :(得分:6)
你不能在Python中使函数参数可选,但你可以给它们默认值。所以:
def nearxy(x, y, x0=0, y0=0, z=None):
...
这使得x0
和y0
的默认值为0
,z
的默认值为None
。
假设None
对z
的实际值没有意义,那么只有当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>定义参数
指定默认值的参数 是可选参数。
例如,如果您希望x0
,y0
和z
的默认值为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。