if debug之后要縮進(jìn),你的編輯器有點(diǎn)問題,沒有幫你縮進(jìn),具體應(yīng)該如下
成都創(chuàng)新互聯(lián)公司長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為玉田企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè),玉田網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
def?foo(debug=True):
if?debug:
print?'in?debug?model'
這個是說讓你縮進(jìn)的。
Python語言是一款對縮進(jìn)非常敏感的語言,給很多初學(xué)者帶來了困惑,即便是很有經(jīng)驗(yàn)的Python程序員,也可能陷入陷阱當(dāng)中。最常見的情況是tab和空格的混用會導(dǎo)致錯誤,或者縮進(jìn)不對,而這是用肉眼無法分別的。
在編譯時會出現(xiàn)這樣的錯IndentationError:expected
an
indented
block說明此處需要縮進(jìn),你只要在出現(xiàn)錯誤的那一行,按空格或Tab(但不能混用)鍵縮進(jìn)就行。
往往有的人會疑問:我根本就沒縮進(jìn)怎么還是錯,不對,該縮進(jìn)的地方就要縮進(jìn),不縮進(jìn)反而會出錯,,比如:
if
xxxxxx:
(空格)xxxxx
或者
def
xxxxxx:
(空格)xxxxx
還有
for
xxxxxx:
(空格)xxxxx
一句話
有冒號的下一行往往要縮進(jìn),該縮進(jìn)就縮進(jìn)
python函數(shù)內(nèi)b=b+1報(bào)錯是因?qū)戝e代碼。在Python中,所有代碼都是通過正確的空格排列的。無多出來空格或缺少空格,整個代碼都不會運(yùn)行,僅返回一個錯誤函數(shù)。Python代碼遵循PEP8空白規(guī)范,每一級縮進(jìn)使用4個空格,便不會報(bào)錯。
不要只關(guān)注報(bào)錯的那行,它的上一行也要檢查。
比如上一行如果少了閉合括號 ")",同樣也會報(bào)錯這一行
global
python 函數(shù)嵌套和nonlocal關(guān)鍵字
只待風(fēng)起
原創(chuàng)
關(guān)注
3點(diǎn)贊·7531人閱讀
python函數(shù)可以嵌套使用,使用也比較簡單,舉個栗子:
def outer():
print("outer")
def inner():
print("inner")
inner()
outer()
## 運(yùn)行結(jié)果:
outer
inner
復(fù)制
nonlocal關(guān)鍵字:
與global關(guān)鍵字有點(diǎn)相似,可以對比著理解。nonlocal關(guān)鍵字只能作用域局部變量,且始終找離當(dāng)前最近的上層局部作用域中的變量??蠢踝樱?/p>
a = 1
def outer():
nonlocal a
a = 2
outer()
print(a)
復(fù)制
結(jié)果:報(bào)錯? SyntaxError: no binding for nonlocal 'a' found,
原因分析:nonlocal關(guān)鍵字是能作用域局部變量,當(dāng)使用nonlocal聲明變量 a 時,就會往上最近一層局部作用域?qū)ふ揖植孔兞?a ,結(jié)果沒找著,報(bào)錯。
a = 1
def outer():
global a
a = 2
def inner():
nonlocal a
a = 3
inner()
print(a)
outer()
print(a)
復(fù)制
結(jié)果:報(bào)錯? SyntaxError: no binding for nonlocal 'a' found,
原因分析:當(dāng)使用nonlocal聲明變量 a 時,就會往上最近一層局部作用域?qū)ふ揖植孔兞?a ,此時外層局部作用域雖然能找到變量a,但是這找到的 這個a 已經(jīng)被global聲明為全局變量了,所以報(bào)錯。
a = 1
def outer():
a = 2
def inner():
nonlocal a
a = 3
def inner2():
print(a)
inner2()
print(a)
inner()
print(a)
outer()
print(a)
## 運(yùn)行結(jié)果:
3
3
3
1
Python程序開發(fā)中的錯誤通??煞譃槿?語法錯誤、運(yùn)行時錯誤和邏輯錯誤。
1.語法錯誤,語法錯誤是在Python程序開發(fā)中最常見的錯誤,如關(guān)鍵字輸入錯誤、變量未賦值使用、函數(shù)未定義等。在一些Python集成開發(fā)環(huán)境(如PyCharm)中,輸入程序代碼時會自動檢測語法錯誤,并且錯誤位置以紅色波浪線標(biāo)出。因此,此類錯誤比較容易被發(fā)現(xiàn)和改正。
2.運(yùn)行時錯誤,運(yùn)行時錯誤是指Python代碼編譯通過,在運(yùn)行代碼時發(fā)生的錯誤。這類錯誤往往是由指令代碼執(zhí)行了非法操作引起的,如數(shù)組下標(biāo)越界、除數(shù)為0、試圖打開一個不存在的文件、連接數(shù)據(jù)庫錯誤等。當(dāng)程序中出現(xiàn)這種錯誤時,程序會自動中斷,并給出有關(guān)的錯誤信息提示。
3.邏輯錯誤,程序運(yùn)行結(jié)果和預(yù)期結(jié)果不一致,說明程序中存在邏輯錯誤,如運(yùn)算符使用不正確,語句順序不對,循環(huán)語句的起始值、終值或步長設(shè)置不對等。邏輯錯誤通常不會產(chǎn)生錯誤提示,只能根據(jù)運(yùn)行結(jié)果知道程序中出現(xiàn)了錯誤。因此,這種錯誤較難被排除,需要編程人員仔細(xì)閱讀代碼,使用調(diào)試和排錯技巧,在可疑代碼處插入斷點(diǎn)并逐句跟蹤,檢查相關(guān)變量的值等方法,分析錯誤位置和原因。