python - 关于返回表达式

标签 python return semantics

级别:初级

下面的代码会打印'False'

def function(x):
    if len(x) == 5: return True
    else: return x[0] == x[-1]

print function('annb')

为什么“else: return x[0] == x[-1]”这一行打印出 False? 我确实明白发生了什么,但我很难用简单的英语表达出来...如何描述这种行为?

这是一个常用/经常使用的“技巧”吗?

我第一次遇到这种特殊的语法是在尝试递归地解决回文练习时。似乎使递归工作的唯一方法是使用这种速记方法:

def isPalindrome(s):
 if len(s) <= 1: return True
 else: return s[0] == s[-1] and isPalindrome(s[1:-1])

print isPalindrome('anna')

谢谢 粑粑

最佳答案

抱歉,我不完全确定你的意思,但可以这样想:

return (x[0] == x[-1])

如果您只考虑括号内的内容,您就会意识到,该“语句”等同于一个 bool 值,对吧?这就是为什么你也可以这样做:

if x[0] == x[-1]

基本上,这里返回的是一个 bool 值,表示 x[0] 是否等于 [-1]。

可以更明确地将此声明扩展为如下内容:

if x[0] == x[-1]: # if this is true
    return True # then return true
else:
    return False

但是如您所见,条件和您想要返回的值是相同的值,所以就像您看到的那样简写:

return x[0] == x[-1]

抱歉,如果我误解了你的问题。

编辑:如果您提到负索引 (x[-1]),在 Python 中,负索引基本上是“环绕”,所以 x[0] 可以说是“从左到右”的第一个元素,x[-1] 循环使得它是“右”的第一个元素-向左'。

关于python - 关于返回表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3580228/

相关文章:

python - 将击键发送到特定窗口(在后台),但同时做其他事情

java - 在 if 语句中返回导致无法访问的代码错误

java - 我不明白 Quartz 中的 getNextIncludedTime()

rdf - 使用 SameAS 将 DBpedia 中的本体链接到外部本体

c++ - C/C++ - 计算函数调用中的参数

python - 文件未找到错误 : No such file or Directory Ubuntu Python

python - 如何修复某些 URL 的 Newspaper3k 403 客户端错误?

javascript - 如果使用 vanilla Javascript 触发另一个 EventListener,我如何返回或使所有其他 EventListener 为空

python - 如何在 Python 中解析十六进制或十进制整数

c# - For 循环的返回值