想自己定义一个专属int的functools.partial,求大神帮忙看一下
def one(m):
def new_fn(n):
def two(n,m):
return int(n,base)
return new_fn
int1 = one(base=2)
print (int1('100'))
提示以下的错误,怎么解决,求大神解救。
def one(m):
def new_fn(n):
def two(n,m):
return int(n,base)
return new_fn
int1 = one(base=2)
print (int1('100'))
提示以下的错误,怎么解决,求大神解救。
2019-01-23
朋友你好,
你的代码中,def new_fn(n)函数没有return语句,所以没有直接的返回值。所以会返回None。
代码中3个def,2个return,所以有个函数没有返回值。
你定义了3层函数,是不需要的。两层就可以了,第一层限定base=2,第二层传入str后,直接int()来计算就可以了。
在函数定义阶段,并没有base从外到内传入的过程,只传了m和n,这也是报错的直接原因。你在倒数第二行中写的base,函数是无法识别的。
设置默认参数值,类似(base = x) 这种形式,只能出现在定义函数的过程中,倒数第二行,都开始调用了,是不能这么写。
参考以下改进代码:
def one(base):
def new_fn(n):
return int(n,base)
return new_fn
int1 = one(2)
print int1('100')
举报