为了账号安全,请及时绑定邮箱和手机立即绑定

想自己定义一个专属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'))

提示以下的错误,怎么解决,求大神解救。

https://img1.sycdn.imooc.com//5c474c5300013b8404860094.jpg

正在回答

2 回答

朋友你好,

  1. 你的代码中,def new_fn(n)函数没有return语句,所以没有直接的返回值。所以会返回None。

  2. 代码中3个def,2个return,所以有个函数没有返回值。

  3. 你定义了3层函数,是不需要的。两层就可以了,第一层限定base=2,第二层传入str后,直接int()来计算就可以了。

  4. 在函数定义阶段,并没有base从外到内传入的过程,只传了m和n,这也是报错的直接原因。你在倒数第二行中写的base,函数是无法识别的。

  5. 设置默认参数值,类似(base = x) 这种形式,只能出现在定义函数的过程中,倒数第二行,都开始调用了,是不能这么写。

参考以下改进代码:

def one(base):

    def new_fn(n):

        return int(n,base)

    return new_fn


int1 = one(2)


print int1('100')


1 回复 有任何疑惑可以回复我~

import functools

def one(m):

    return functools.partial(int, base=m)

int1 = one(2)

print (int1('100'))

你用的是装饰器的方式吗,试试上面的

0 回复 有任何疑惑可以回复我~
#1

Cradiao小太阳 提问者

不是这样的,就是完全不需要functools.partial写一个出来
2019-01-23 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

想自己定义一个专属int的functools.partial,求大神帮忙看一下

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信