1. 程式人生 > >Python函數之返回值、作用域和局部變量

Python函數之返回值、作用域和局部變量

16px 未定義 過程 gpo mil 列表 scope 如果 info

一、函數返回值

  說到返回值,相信大家肯定都認識,沒錯,就是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函數之返回值、作用域和局部變量