码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2018-02-05 02:59:57      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:glob   hang   work   global   未定义   function   函数返回   span   就会   

一、函数返回值

  说到返回值,相信大家肯定都认识,没错,就是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函数之返回值、作用域和局部变量

标签:glob   hang   work   global   未定义   function   函数返回   span   就会   

原文地址:https://www.cnblogs.com/schut/p/8415453.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!