Python - 函数返回值

标签 python python-3.x return boolean

<分区>

这个例子只是一个基本的程序——我是一个新的编码员——学习和试验,同时搞砸了..目前正在 Python 3.6 IDE 和 PyCharm 上测试——为双倍间距代码道歉——但没有它看起来一团糟。

寻找有关从函数返回值的指南。

已经尝试了几十种不同的方法/搜索了论坛,但这个外行人可以理解的最接近的答案是我需要使用返回值,否则它会被遗忘。所以添加了 print(age_verification, "example test value 。 .") 在不同的位置 - 但在函数之外没有任何返回..

已尝试返回 boolean 值/整数/字符串值并进行调整 - 每个变体都没有。在函数之前添加默认 age_verification = False 变量//或//第一次在函数中引用。 . 不影响返回值,除非 IDE 不声明“未解析的引用”

尝试了逐行 python 可视化工具 - 但再次 - age_verification 值在退出函数后立即消失。 :-(

============================================= ===================

使用 1 个单一函数

def age_veri(age, age_verification) :

  if age < 18 :

    age_verification = False

    print(age_verification, " is false .. Printed to test variable ..")

    return age_verification

  elif age >= 18:

    age_verification = True

    print(age_verification, " is True.. Printed to test variable ..")

    return age_verification

  return age_verification # ( -- have tested with/without this single-indent line & with/without previous double-indent return age_verification line.)

age=int(input("Enter Your Age : ")

age_verification = False # ( -- have tried with / without this default value)

age_veri(age, False)

if age_verification is False:

  print("You failed Verification - Age is Below 18 .. ")

elif age_verification is True:

  print("Enter Website - Over 18yrs")

else:

  print(" Account not Verified .. ")

============================================= ===================

同一示例 - 使用 2 个函数

def age_variable(age):

   if age < 18:

      age_verification = False

      print (age_verification, " printing here to use value and help test function..")

      return age_verification

   elif age >= 18:

      age_verification = True

      print (age verification, " printing here to use value and help test function..")

      return age_verification

   return age_verification (tried with and without this line - single indent - same level as if / elif) 

def are_verified(age_verification):

   if age_verification is False:

      print("Age Verification Failed .. ")

   elif age_verification is True:

      print("Visit Website .. ")

   else:

      print("Verification Incomplete .. ")

age = int(input("Enter Your Age : ")

age_variable(age)

are_verified(age_verification)

============================================= ===============

感谢任何建议 - 今天大部分时间都浪费了我的头撞墙..提前道歉..知道这将是非常基本的东西 - 但似乎使用与其他人相同的格式:-)

谢谢

最佳答案

print 不返回值,它只会将值显示到 stdout 或控制台。如果你想返回一个有条件的值,理解范围是有帮助的。您关于返回变量的评论,否则它们将被“遗忘”是正确的。当函数执行时,函数定义但返回的变量将消失:

def my_func(var1):
    var2 = var1
    var3 = 5
    return var3

print(my_func(1), var2)

print 语句将抛出 NameError,因为 var2 未在函数外定义,也未返回。对于您的示例,您需要这样的东西:

def age_verify(age):
    if age < 18:
        print("Failed Verification")
        return False
    else:
        print("Verification Complete")
        return True

# Call and assign to var
age = int(input("Enter Your Age : ")
age_verification = age_verify(age)

这样您就可以将返回值保存为变量 age_verification

编辑:

为了进一步扩展范围概念,对 my_func 使用相同的定义:

def my_func(var1):
    var2 = var1
    var3 = 5
    return var3

我们将返回的 var3 分配给一个变量,如下所示:

myvar = my_func(5)

如前所述,实际上并未返回名称 var3,仅返回值。如果我要跑

myvar = my_func(5)
print(var3)

我会得到一个NameError。解决这个问题的方法是:

var3 = my_func(5)

因为现在 var3 是在全局范围内定义的。否则,我将不得不编辑我的函数,使 var3 成为全局的:

def my_func(var1):
    global var3
    var2 = var1
    var3 = 5
    # The return statement is then a bit redundant

my_func(5)

print(var3)
# prints 5 in global scope

希望这比我原来的回答更清楚一些

关于Python - 函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52209825/

相关文章:

python - 如何在 python 中检查我的图像是 RGB 格式还是 BGR 格式?我如何转换它们,反之亦然?

python - 旋转 - TransformOriginPoint - PyQt4

python - 从同一模型中的其他类获取模型属性

Java:如何返回一个数组?

php - 访问返回数组

php - 比较大量相似文本的最简单方法是什么?

python - 套接字断开连接时退出 Python While 循环

python - Bokeh 多选小部件回调不起作用

Python请求: missing content-length response

javascript - 等待 javascript 函数返回