知識回顧:
拆解傳參。
1.字典傳參。使用**
2.列表傳參。使用*
實際上我們在定義函數的時候,如果省略了星號,那么在調用函數的時候必須要省略星號,除非我們拆解后的參數個數剛好相等。
視頻內容
本節知識視頻教程
文字講解開始:
一、作用域
作用域:可以被影響的范圍。
全局變量:在最外層聲明的變量。
局部變量:在某些代碼塊聲明的變量。
全局變量舉例
xxx=100 #最外層的變量,全局變量
def P():
print(xxx)
P()
說明:外面一層的變量,能夠被代碼塊內部一層的變量調用。
局部變量的注意事項
1.在函數體內部聲明的變量,不能再函數體外部去調用,會直接報錯。
2.在函數體內部同名的局部變量,即使重新賦值了,也不會影響函數體外部的那個同名全局變量。如果真的想要改變外部同名的全局變量,那么我們必須要在函數體內部使用global關鍵字聲明變量。
3.在函數體內部,如果先調用外部的全局變量后,是不能再次修改的,因為在函數體內部寫了同名的變量后,會使得編譯器無法識別局部變量還是全局變量,使得程序異常。
二、函數的嵌套
在python中是運行函數嵌套定義使用的。注意:函數體內部定義的函數也必須要手工調用才能使得有函數中的效果,否則默認是不被調用執行的。
舉例:
#函數的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的結果=",fff+eee)
P4()
P3()
函數嵌套的作用范圍
在函數體內部定義的函數需要在函數體內部調用,默認不能在全局的作用范圍的最頂層調用這個函數的。
函數的復雜嵌套調用
#函數的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的結果=",fff)
return P4
P3()()
注意:如果使用雙括號,在調用內存函數的時候,外層函數將會被自動調用。
函數的指針賦值調用
#函數的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的結果=",fff)
return P4 #這里返回的是指針類型的變量
K1=P3()
K1()
結論:在調用內存函數的時候,外層函數也將會被自動調用。
三、解決問題的思路
1.帶有紅色下劃線的報錯,它是一種語法報錯
2.異常報錯,先調試,實在不行,可以將報錯去直接搜索引擎直接搜索報錯
3.搜索問題的知識點。
四、總結強調
1.作用域。全局變量區別于局部變量。
2.函數的嵌套。注意點,在內部定義的函數被調用時候會自動調用其父級函數。函數也有作用范圍。
3.解決問題的思路。
4.一定要主動多測試代碼。
本節源代碼(已被#注釋):# xxx=100 #最外層的變量,全局變量
#
# def P():
# ddd=300 #在函數體內部,是局部變量
# # global xxx
# xxx=200 #這個是與全部變量同名的局部變量
# # print(xxx)
#
# P()
# print(xxx)
# yyy=200
#
# def P2():
# print(yyy)
# # yyy=100
#函數的嵌套
# eee=10
# def P3():
# eee=20
# print("P3中eee=",eee)
# def P4():
# fff=5
# print("P4中的結果=",fff+eee)
# return P4 #這里返回的是指針類型的變量
#
# K1=P3
# K1()()
#
# ttt=10
# while(True):
# ttt=20
# break
# print(ttt)