所以我遇到了这个,但并不完全理解为什么会这样:
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不了解的东西呢?
答案 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