繁体   English   中英

TypeError:描述符“ upper”需要一个“ str”对象,但收到一个“ function”(初学者)

[英]TypeError: descriptor 'upper' requires a 'str' object but received a 'function' (beginner)

我试图将两个函数作为参数传递,但是函数str.upperstr.strip出现错误。 我不知道我在做什么错?

def normalize_text(func1, func2):
    return func2(func1)


def my_strip(s):
    return str.strip(s)


def my_upper(s):
    return str.upper(s)


def test():
    if(normalize_text(my_strip, my_upper)(' foo ') == 'FOO'):
        print('Success')


test()

运行像这样的代码python main.py

...然后我遇到一个错误:

TypeError: descriptor 'upper' requires a 'str' object but received a 'function'

您的功能应遵循以下原则:

def normalize_text(func1, func2):
    def func3(s):
        return func2(func1(s))
    return func3

func1func2将字符串作为输入并返回一个字符串。 因此,当链接在一起时,一个函数应处理另一个函数的输出,而不是函数本身。

您正在将func2传递给func1 ,但是func1需要一个字符串作为其参数,因此您需要传递对某个东西调用func2的结果。

normalize_text可以返回一个lambda,该lambda调用输入参数上的两个函数。

def normalize_text(func1, func2):
    return lambda s: func1(func2(s))

暂无
暂无

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

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