python的作用域分别有几种_python中作用域与函数嵌套
知識(shí)回顧:
拆解傳參。
1.字典傳參。使用**
2.列表傳參。使用*
實(shí)際上我們?cè)诙x函數(shù)的時(shí)候,如果省略了星號(hào),那么在調(diào)用函數(shù)的時(shí)候必須要省略星號(hào),除非我們拆解后的參數(shù)個(gè)數(shù)剛好相等。
視頻內(nèi)容
本節(jié)知識(shí)視頻教程
文字講解開(kāi)始:
一、作用域
作用域:可以被影響的范圍。
全局變量:在最外層聲明的變量。
局部變量:在某些代碼塊聲明的變量。
全局變量舉例
xxx=100 #最外層的變量,全局變量
def P():
print(xxx)
P()
說(shuō)明:外面一層的變量,能夠被代碼塊內(nèi)部一層的變量調(diào)用。
局部變量的注意事項(xiàng)
1.在函數(shù)體內(nèi)部聲明的變量,不能再函數(shù)體外部去調(diào)用,會(huì)直接報(bào)錯(cuò)。
2.在函數(shù)體內(nèi)部同名的局部變量,即使重新賦值了,也不會(huì)影響函數(shù)體外部的那個(gè)同名全局變量。如果真的想要改變外部同名的全局變量,那么我們必須要在函數(shù)體內(nèi)部使用global關(guān)鍵字聲明變量。
3.在函數(shù)體內(nèi)部,如果先調(diào)用外部的全局變量后,是不能再次修改的,因?yàn)樵诤瘮?shù)體內(nèi)部寫(xiě)了同名的變量后,會(huì)使得編譯器無(wú)法識(shí)別局部變量還是全局變量,使得程序異常。
二、函數(shù)的嵌套
在python中是運(yùn)行函數(shù)嵌套定義使用的。注意:函數(shù)體內(nèi)部定義的函數(shù)也必須要手工調(diào)用才能使得有函數(shù)中的效果,否則默認(rèn)是不被調(diào)用執(zhí)行的。
舉例:
#函數(shù)的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的結(jié)果=",fff+eee)
P4()
P3()
函數(shù)嵌套的作用范圍
在函數(shù)體內(nèi)部定義的函數(shù)需要在函數(shù)體內(nèi)部調(diào)用,默認(rèn)不能在全局的作用范圍的最頂層調(diào)用這個(gè)函數(shù)的。
函數(shù)的復(fù)雜嵌套調(diào)用
#函數(shù)的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的結(jié)果=",fff)
return P4
P3()()
注意:如果使用雙括號(hào),在調(diào)用內(nèi)存函數(shù)的時(shí)候,外層函數(shù)將會(huì)被自動(dòng)調(diào)用。
函數(shù)的指針賦值調(diào)用
#函數(shù)的嵌套
eee=10
def P3():
eee=20
print("P3中eee=",eee)
def P4():
fff=5
print("P4中的結(jié)果=",fff)
return P4 #這里返回的是指針類型的變量
K1=P3()
K1()
結(jié)論:在調(diào)用內(nèi)存函數(shù)的時(shí)候,外層函數(shù)也將會(huì)被自動(dòng)調(diào)用。
三、解決問(wèn)題的思路
1.帶有紅色下劃線的報(bào)錯(cuò),它是一種語(yǔ)法報(bào)錯(cuò)
2.異常報(bào)錯(cuò),先調(diào)試,實(shí)在不行,可以將報(bào)錯(cuò)去直接搜索引擎直接搜索報(bào)錯(cuò)
3.搜索問(wèn)題的知識(shí)點(diǎn)。
四、總結(jié)強(qiáng)調(diào)
1.作用域。全局變量區(qū)別于局部變量。
2.函數(shù)的嵌套。注意點(diǎn),在內(nèi)部定義的函數(shù)被調(diào)用時(shí)候會(huì)自動(dòng)調(diào)用其父級(jí)函數(shù)。函數(shù)也有作用范圍。
3.解決問(wèn)題的思路。
4.一定要主動(dòng)多測(cè)試代碼。
本節(jié)源代碼(已被#注釋):# xxx=100 #最外層的變量,全局變量
#
# def P():
# ddd=300 #在函數(shù)體內(nèi)部,是局部變量
# # global xxx
# xxx=200 #這個(gè)是與全部變量同名的局部變量
# # print(xxx)
#
# P()
# print(xxx)
# yyy=200
#
# def P2():
# print(yyy)
# # yyy=100
#函數(shù)的嵌套
# eee=10
# def P3():
# eee=20
# print("P3中eee=",eee)
# def P4():
# fff=5
# print("P4中的結(jié)果=",fff+eee)
# return P4 #這里返回的是指針類型的變量
#
# K1=P3
# K1()()
#
# ttt=10
# while(True):
# ttt=20
# break
# print(ttt)
總結(jié)
以上是生活随笔為你收集整理的python的作用域分别有几种_python中作用域与函数嵌套的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 关于Java之IO流音乐拼接小项目
- 下一篇: python将一行作为字段_关于pyth