Python函数之返回值作用域和局部变量

Posted 暮光微凉

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python函数之返回值作用域和局部变量相关的知识,希望对你有一定的参考价值。

一、函数返回值

  说到返回值,相信大家肯定都认识,没错,就是return。

  所谓返回值可以这样理解:函数外部的代码要想获取函数的执行结果,就可以在函数里用return语句把结果返回。

  那具体怎么用呢?接着往下看: 

#!/usr/bin/env python3
#-*- coding:utf-8 -*-
# write by congcong

# return 表示一个程序的结束,他可以返回任意的元素,列表或字典
def stu_info(name,age,course):
    print(name,age,course)
    if age > 18:
        return True
    else:
        return False

stu_return = stu_info(hope,19,life)
print(stu_return) # 输出:True

def stu_info(name,age,course):
    print(name,age,course)
    return good,work
    return 0 #不执行

stu_return = stu_info(hope,19,life)
print(stu_return) #输出 (‘good‘, ‘work‘) ,中间逗号分隔时返回转为元组,第二个连续return不执行

 注意:

  1、函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束。

  2、如果未在函数中指定return,那这个函数的返回值为None。

 怎么样,这回不敢小看我了吧!

 

二、作用域

  作用域(scope),程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域。

  还可以结合函数这么理解:

      python中函数就是一个作用域,局部变量放置在其作用域中代码完成后,作用域便生成了,作用域链向上查找。

  看代码:

# -*-coding:utf-8-*-

age = 21
def func1():
    age = 19
    print(func1输出:,age) # 输出:19
    def func2():
        print(func2输出:,age) # 输出:19
    return func2  # 返回函数名

val = func1()  # 调用func1并将返回值赋给变量val,val = func2
print(val)  # 输出:<function func1.<locals>.func2 at 0x000002CE667298C8>
val() # 等于调用func2,返回函数定义处执行
print(全局输出:,age)  # 输出:21

 

三、函数局部变量和全局变量

  定义:

    在函数中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。

  区别:

    1、全局变量作用域是整个程序,局部变量作用域是定义该变量的函数。

    2、当全局变量与局部变量同名时,在定义局部变量的函数内,局部变量起作用;在其它地方全局变量起作用。

  注意:

    在函数内部,可以引用全局变量;如果全局和局部都有一个变量,函数查找,由内而外,局部没有,再到全局找

  看实例:

#-*- coding:utf-8 -*-

name_out = daydayup

def change_name():
    # name_in = ‘dayup‘ # 局部变量
    # print(‘内部-》‘,name_in,id(name_in))  #内部定义时,优先调用,此时输出:dayup  1997485691096
    print(name_out) # 内部未定义时,便调用函数外面的

change_name()
print(外部-》,name_out,id(name_out)) #输出:外部-》 daydayup   1997485709552

  那么函数里只能定义局部变量吗?

  当然,但是一般不推荐使用,只能说慎用。看下面的实例:

#-*- coding:utf-8 -*-

name = life
def change_name():
    global name     #定义全局变量
    name = poem
    print(函数里面-》,name) #输出:函数里面-》 poem

change_name()
print(函数外面-》,name) #输出:函数外面-》 poem

   在函数里修改了全局变量,当函数有很多个的时候,就会很蒙逼了(再次友情提示)。

 

 

  

 

以上是关于Python函数之返回值作用域和局部变量的主要内容,如果未能解决你的问题,请参考以下文章

全新Java入门到架构师教程之JavaScript函数作用域和内置对象

python中怎样查看已加载的命名空间中所有变量和函数

python函数(全局变量,局部变量,作用域,递归函数,高阶函数,匿名函数)

C基础作用域和内存管理

python变量作用域和模块

作用域和名称空间