[英]Python - Function Return Value
这个例子只是一个基本的程序 - 我是一个新的编码员 - 学习和实验,同时搞砸了......目前正在 Python 3.6 IDE 和 PyCharm 上进行测试 - 为双倍间距代码道歉 - 但没有看起来一团糟。
寻找从函数返回值的指南。
尝试了几十种不同的方法/搜索了论坛,但是这个外行能理解的最接近的答案说我需要使用返回值否则它会被遗忘..所以在不同的位置添加了print(age_verification, "example test value ..") - 但在函数之外没有返回任何东西..
已尝试返回布尔值/整数/字符串值并进行调整 - 每个变体都没有。在函数之前添加了默认的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
希望这比我原来的答案更清楚
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.