【问题标题】:Confusion about return statements python关于返回语句python的困惑
【发布时间】:2022-01-05 04:47:34
【问题描述】:

刚开始学Python,不明白下面代码中return语句的缩进有什么区别。

def list_1(students, number):
    for i in students: 
        if i == number: 
           return True
    return False

def list_1(students, number):
    for i in students: 
        if i == number: 
           return True
        else: 
           return False

对于第一个代码,如果在学生列表中找到输入的数字,则返回True,但在第二个代码中,即使在学生列表中找到数字,它也返回False。

【问题讨论】:

  • 我知道这是重复的(我以前见过这个 exact 代码),但简短的回答是:后者 always 返回第一项,如果 none 项通过,则前者仅返回 False
  • 为什么函数内的第一行缩进到与函数声明本身相同的级别?
  • @ShadowRanger 感谢您的回复,但我不明白为什么。对于第二个代码,它是一个 if-else 语句,所以当 'if' 语句通过时,输出不应该是 True 吗?为什么它转到'else'语句并输出False。
  • @SamL:如果 first 元素 等于 number,您将立即 return False 因为 else: 执行,并且循环永远没有机会继续。第一个循环仅在找到等于number 的元素时才提前返回,第二个总是根据与students 的第一个元素的比较返回“提前”。

标签: python return


【解决方案1】:

第二个函数只会执行一次循环操作。它测试列表的第一个元素,然后返回第一个比较的结果。你的函数的行为是这样的:

def list_1(students, number):
    if students[0] == number: 
        return True
    else: 
        return False

你有这种行为是因为return 语句返回一个值并中断函数。

【讨论】:

    猜你喜欢
    • 2021-09-23
    • 2016-08-31
    • 1970-01-01
    • 2012-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多