python 函数递归一次增加一次变量_python函数局部变量、全局变量、递归知识点总结...
函數局部變量 全局變量 及其作用域 #簡單類型(int str等)變量的局部變量與全局變量及其作用域的關系
name = "xxx" #第一級頂頭定義的變量都稱為全局變量,其作用域從變量定義的位置開始到此程序結束
def Print_Name():
print("name before change:", name)
#由于name在此函數之前已經被定義為全局變量,此處函數讀取變量name是讀取的全局變量name “xxx”,函數內部就不能再定義其同名局部變量,否則無法區分變量為局部變量還是全局變量
# name = "yyy" #此語句放開以后會報錯:IndentationError: unindent does not match any outer indentation level
Print_Name()
def Change_Name():
name = "yyy" #函數內部首先定義全局變量的同名局部變量,則整個函數內部操作的為局部變量(一個與全局變量同名的臨時變量)
print("name after change is", name)
Change_Name() # yyy實際輸出的是局部變量的值
print("global name is", name) # xxx此處訪問的是全局變量,因為此print語句不是在Change_Name內部。
#函數內部需要強制對全局變量進行修改,使用global關鍵字
def Change_global_Name():
global name
print("name before change is :", name)
name = "yyy"
Change_global_Name() # xxx 修改前的全局變量
print("global name is :", name) # yyy此處由于函數內強制聲明name為global變量,整個函數內部可以對global進行操作
#復雜數據類型列表 集合 字典等復雜數據結構如果函數外部定義了函數里面是可以不用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'] 對于復雜的數據類型,函數內直接操作全局變量,不會再生成局部變量
遞歸 #函數內部可以調用其它函數,如果函數在內部調用自己就被稱為遞歸函數
def Half_fun(n):
print(n)
if n < 2:
return n
Half_fun(n/2)
Half_fun(100)
#遞歸特性:1、必須有一個明確的結束條件 2、每次遞歸調用問題復雜度需要相比上次簡化 3、遞歸會占用大量內存
以上實例很簡單,大家可以本次測試下,感謝你的閱讀和對聚米學院的支持。
總結
以上是生活随笔為你收集整理的python 函数递归一次增加一次变量_python函数局部变量、全局变量、递归知识点总结...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql与mssql中datetime
- 下一篇: python定义区间[-5、5_有一个数