Python-函数返回值 [英] Python - Function Return Value

查看:67
本文介绍了Python-函数返回值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这个示例只是一个基本程序-我是一个新的Coder-正在学习和尝试,却一团糟..目前正在Python 3.6 IDE和PyCharm上进行测试-道歉两次间距代码-但看起来一团糟.

This example is just a basic program - I'm a new Coder - learning and experimenting whilst messing about .. Currently testing on Python 3.6 IDE and PyCharm - apologies for double spacing code - but looks a mess without.

正在寻找有关从函数返回值的指导.

Looking for guidance for returning a value from a function.

已经尝试了数十种不同的方法/在论坛上进行了搜索,但是该外行可以理解的最接近答案表明,我需要使用返回值,否则它将被遗忘..因此添加了 print(age_verification,示例测试值..)在各个位置-但是在函数之外什么也不会返回..

Have tried dozens of different methods / searched the forum, but closest answer this layman could understand stated I needed to use the return value otherwise it will be forgotten .. So added print(age_verification, " example test value .. ") at various locations - but nothing gets returned outside the function ..

尝试返回布尔值/整数/字符串值,并且不对每个变体进行任何调整...在函数//或//第一次在函数内引用之前添加了默认的 age_verification = False 变量..不会影响返回值,除非IDE不会声明未解析的引用"

Have tried returning Boolean / integer / string values and adapting - nothing with each variant .. Added a default age_verification = False variable before the function // or // referenced within function for 1st time .. Doesn't effect the return value except IDE doesn't state "unresolved reference"

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

Tried a line-by-line python visualizer - but again - age_verification value disappears instantly after exiting the function . :-(

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

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

使用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)

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

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

任何建议都值得赞赏-今天大部分时间都在浪费我的脑筋..和事先的道歉..知道这将是非常基本的东西-但似乎使用的格式与其他格式相同:-)

Any advice is appreciated - wasted most of today hitting my head against the wall .. And apologies in advance .. Know it'll be something really basic - but appear to be using same formatting as others :-)

谢谢

推荐答案

print 不返回值,它只会将值显示给 stdout 或控制台.如果要返回带条件的值,则了解范围会很有帮助.您对返回变量的评论是正确的,否则它们将被遗忘".函数执行时定义的变量和 not 返回的函数将消失:

print doesn't return values, it will just display the value to stdout or the console. If you want to return a value with conditions, understanding scope is helpful. Your comment regarding returning variables otherwise they will be "forgotten" is correct. Variables defined and not returned by the function will go away when the function executes:

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

print(my_func(1), var2)

print 语句将引发 NameError ,因为 var2 不在函数外部定义,也不返回.对于您的示例,您想要这样的东西:

The print statement will throw a NameError because var2 isn't defined outside of the function, nor is it returned. For your example, you'd want something like this:

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

This way you are saving the returned value as the variable age_verification

要进一步扩展作用域概念,请对 my_func 使用相同的定义:

To further expand on the scope concept, using the same definition for my_func:

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

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

We assign the returned var3 to a variable like so:

myvar = my_func(5)

如上所述,实际上未返回名称 var3 ,而只是返回了值.如果我要跑步

As noted, the name var3 isn't actually returned, just the value. If I were to run

myvar = my_func(5)
print(var3)

我会收到一个 NameError .解决该问题的方法是:

I would get a NameError. The way to get around that would be to do:

var3 = my_func(5)

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

because now var3 is defined in global scope. Otherwise, I would have to edit my function to make var3 global:

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

希望这比我原来的答案要清楚

Hopefully this is a bit clearer than my original answer

这篇关于Python-函数返回值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆