Python函數之傳回值、範圍和局部變數

來源:互聯網
上載者:User

標籤: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 Falsestu_return = stu_info(‘hope‘,19,‘life‘)print(stu_return) # 輸出:Truedef 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 = 21def func1():    age = 19    print(‘func1輸出:‘,age) # 輸出:19    def func2():        print(‘func2輸出:‘,age) # 輸出:19    return func2  # 返回函數名val = func1()  # 調用func1並將傳回值賦給變數val,val = func2print(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) #輸出:函數裡面-》 poemchange_name()print(‘函數外面-》‘,name) #輸出:函數外面-》 poem

   在函數裡修改了全域變數,當函數有很多個的時候,就會很蒙逼了(再次友情提示)。

 

 

  

 

Python函數之傳回值、範圍和局部變數

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.