如果没有(),pylow .lower不工作,我好奇为什么

时间:2018-01-04 02:04:54

标签: python

所以我遇到了这个,但并不完全理解为什么会这样:

    count = 0
    Got_one = 0
    while(count<1):
        print('\n')
        response = input("Did you get one?\n:").lower()#<--This part here
        if response == 'yes':
            Got_one += 1
            #...ect

在脚本的某一点上,我输入了 .lower 而没有()。代码运行正常但是当我输入&#34;是&#34;时脚本未能+1,而是打印出值0,很可能是由于&#34; Got_one&#34;变量在一开始就设置为0。但是,只要输入(),代码就会按预期工作,输入&#34;是&#34;后会输入+1值。

那么,为什么会这样呢?是不是自己降低了它之后的一切,或者只是我对Python不了解的东西呢?

5 个答案:

答案 0 :(得分:2)

.lower()是Python中String对象的内置方法。你需要括号的原因是在字符串上执行函数。

没有括号,您只需访问String.lower属性,它是一个函数指针。因此,如果没有括号,则设置response = String.lower,它不会传递if语句。

答案 1 :(得分:1)

不同之处在于,不使用括号调用它只是调用方法而不是该方法的值,并使用括号调用它来调用该方法的值

答案 2 :(得分:0)

原因是因为.lower()是一个类方法,而不是一个类属性(可以写成.lower)。 因此,您必须使用括号表示您正在尝试调用方法。 由于它不带任何参数,你只需在其后面加上空括号。

类方法是属于类对象的函数,在本例中是str对象。 class属性是属于此对象的变量。

答案 3 :(得分:0)

要添加到1313e的答案,.lower()实际上是您在字符串 object 上执行的内置方法(对象类的函数)(因为Python中的所有内容都是一个对象),这就是你调用'this string'.lower()而不是lower('this string')

的原因

答案 4 :(得分:0)

这是因为您只是引用了类对象lower的{​​{1}}类方法(函数)。供参考:

str