首页 新闻 会员 周边

.isupper()和.islower()不带括号也能运行,为什么

0
[已解决问题] 解决于 2024-04-17 01:39

python初学者,写作业时发现

s = "abc123ABC"
t = ""
 for i in s:
    if i.islower():
        t += i.upper()
    elif i.isupper():
        t += i.lower()
    else:
        t += i
 t += "i"
print(t)

输出结果为ABC123abc
删除i.islower()的括号,输出结果为ABC123ABC
删除i.isupper()的括号,输出结果为ABC123abc
为什么会出现这种情况?以上两处括号有什么作用?还请大佬解惑

Sunshineabc的主页 Sunshineabc | 菜鸟二级 | 园豆:202
提问于:2024-04-15 22:24
< >
分享
最佳答案
1

在Python中,.isupper()和.islower()是字符串对象的方法,用于检查字符串中的字符是否都是大写或小写字母。当你使用这些方法时,不带括号也能正常运行,这是因为Python中的方法可以被视为属性,你可以直接访问它们而不需要使用括号来调用。

所以,你可以这样写:

python
Copy code
if i.islower:
# do something
或者:

python
Copy code
if i.isupper:
# do something
这两种写法都是合法的,并且与带括号的写法效果相同。

至于你的代码中删除了括号之后的现象,是因为你的代码中的if条件在检查.islower或.isupper这些方法是否存在,而不是调用它们。因为这些方法是存在的,所以条件始终为真,导致了不同的输出结果。

换句话说,括号在这里的作用是调用方法,而不是检查方法是否存在。

奖励园豆:5
Technologyforgood | 大侠五级 |园豆:6468 | 2024-04-16 20:35
其他回答(1)
0

删除方法的括号后,将会变成方法是否存在的判断
删除i.islower()的括号
相当于

if True:
elif i.isupper():

删除i.isupper()的括号
相当于

if i.islower():
elif True:
复制粘贴机器人 | 园豆:702 (小虾三级) | 2024-04-16 08:54
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册