the*_*olf 5 python function python-3.x
假设我想编写一个类似于范围的函数
回想一下,range有一个参数和2/3参数形式:
class range(object)
| range(stop) -> range object
| range(start, stop[, step]) -> range object
Run Code Online (Sandbox Code Playgroud)
如果我希望方法或函数具有相同的接口,是否有比这更优雅的方式:
def range_like(*args):
start,stop,step=[None]*3
if len(args)==1:
stop=args[0]
elif len(args)==2:
start,stop=args
elif len(args)==3:
start,stop,step=args
else:
raise ValueError
print(start,stop,step)
Run Code Online (Sandbox Code Playgroud)
这里没有太多建议,但是一个替代方案可能是使用可选参数并交换前两个,如果只提供了一个:
def range_like(start, stop=None, step=1):
if stop is None:
start, stop = 0, start
...
Run Code Online (Sandbox Code Playgroud)