繁体   English   中英

如何在 Python 中定义具有默认参数值和可选参数的函数?

[英]How can I define a function with default parameter values and optional parameters in 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)

我想补充x0y0有一个默认值,使z可选的,如果我没有z值。

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

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

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

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

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

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

检查z是否为None以查看它是否已被省略。

像这样为 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)

....

希望这可以帮助

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM