python函數(shù)局部變量、全局變量、遞歸知識點(diǎn)總結(jié)
更新時(shí)間:2019年11月15日 08:14:56 投稿:laozhang
在本篇文章里小編給大家整理了關(guān)于python函數(shù)局部變量、全局變量、遞歸知識點(diǎn),有興趣的朋友們學(xué)習(xí)參考下。
函數(shù)局部變量 全局變量 及其作用域
#簡單類型(int str等)變量的局部變量與全局變量及其作用域的關(guān)系
name = "xxx" #第一級頂頭定義的變量都稱為全局變量,其作用域從變量定義的位置開始到此程序結(jié)束
def Print_Name():
print("name before change:", name)
#由于name在此函數(shù)之前已經(jīng)被定義為全局變量,此處函數(shù)讀取變量name是讀取的全局變量name “xxx”,函數(shù)內(nèi)部就不能再定義其同名局部變量,否則無法區(qū)分變量為局部變量還是全局變量
# name = "yyy" #此語句放開以后會報(bào)錯(cuò):IndentationError: unindent does not match any outer indentation level
Print_Name()
def Change_Name():
name = "yyy" #函數(shù)內(nèi)部首先定義全局變量的同名局部變量,則整個(gè)函數(shù)內(nèi)部操作的為局部變量(一個(gè)與全局變量同名的臨時(shí)變量)
print("name after change is", name)
Change_Name() # yyy實(shí)際輸出的是局部變量的值
print("global name is", name) # xxx此處訪問的是全局變量,因?yàn)榇藀rint語句不是在Change_Name內(nèi)部。
#函數(shù)內(nèi)部需要強(qiáng)制對全局變量進(jìn)行修改,使用global關(guān)鍵字
def Change_global_Name():
global name
print("name before change is :", name)
name = "yyy"
Change_global_Name() # xxx 修改前的全局變量
print("global name is :", name) # yyy此處由于函數(shù)內(nèi)強(qiáng)制聲明name為global變量,整個(gè)函數(shù)內(nèi)部可以對global進(jìn)行操作
#復(fù)雜數(shù)據(jù)類型列表 集合 字典等復(fù)雜數(shù)據(jù)結(jié)構(gòu)如果函數(shù)外部定義了函數(shù)里面是可以不用global聲明也操作的是全局變量,沒有局部變量一說了
names = ['111', '222', '333']
def Change_Names():
names[0] = "444"
print("in function names :", names)
Change_Names() #in function names : ['444', '222', '333']
print("global names :", names) #in function names : ['444', '222', '333'] 對于復(fù)雜的數(shù)據(jù)類型,函數(shù)內(nèi)直接操作全局變量,不會再生成局部變量
遞歸
#函數(shù)內(nèi)部可以調(diào)用其它函數(shù),如果函數(shù)在內(nèi)部調(diào)用自己就被稱為遞歸函數(shù)
def Half_fun(n):
print(n)
if n < 2:
return n
Half_fun(n/2)
Half_fun(100)
#遞歸特性:1、必須有一個(gè)明確的結(jié)束條件 2、每次遞歸調(diào)用問題復(fù)雜度需要相比上次簡化 3、遞歸會占用大量內(nèi)存
以上實(shí)例很簡單,大家可以本次測試下,感謝你的閱讀和對腳本之家的支持。
相關(guān)文章
Python使用內(nèi)置json模塊解析json格式數(shù)據(jù)的方法
這篇文章主要介紹了Python使用內(nèi)置json模塊解析json格式數(shù)據(jù)的方法,結(jié)合實(shí)例形式分析了Python使用內(nèi)置的json模塊實(shí)現(xiàn)json格式數(shù)據(jù)的解析、轉(zhuǎn)換相關(guān)操作技巧,需要的朋友可以參考下2017-07-07
Python中多瀏覽器實(shí)例項(xiàng)目的隔離策略與實(shí)現(xiàn)
在 Python 實(shí)現(xiàn)多瀏覽器實(shí)例的 JavaScript 注入時(shí),要確保數(shù)據(jù)隔離,會話隔離,存儲隔離,下面是一些關(guān)鍵的隔離策略和代碼實(shí)現(xiàn),希望對大家有所幫助2025-03-03
python實(shí)現(xiàn)任意位置文件分割的實(shí)例
今天小編就為大家分享一篇python實(shí)現(xiàn)任意位置文件分割的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
在Python IDLE 下調(diào)用anaconda中的庫教程
這篇文章主要介紹了在Python IDLE 下調(diào)用anaconda中的庫教程,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03
Python參數(shù)傳遞中雙星號(**)和單星號(*)是作用
雙星號(**)和單星號(*)在參數(shù)傳遞中扮演著關(guān)鍵角色,本文主要介紹了Python參數(shù)傳遞中雙星號(**)和單星號(*)是作用,具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05

