if debug之后要缩进,你的编辑器有点问题,没有帮你缩进,具体应该如下
成都创新互联公司长期为上千家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为玉田企业提供专业的成都网站设计、成都网站建设,玉田网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。
def foo(debug=True):
if debug:
print 'in debug model'
这个是说让你缩进的。
Python语言是一款对缩进非常敏感的语言,给很多初学者带来了困惑,即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,或者缩进不对,而这是用肉眼无法分别的。
在编译时会出现这样的错IndentationError:expected
an
indented
block说明此处需要缩进,你只要在出现错误的那一行,按空格或Tab(但不能混用)键缩进就行。
往往有的人会疑问:我根本就没缩进怎么还是错,不对,该缩进的地方就要缩进,不缩进反而会出错,,比如:
if
xxxxxx:
(空格)xxxxx
或者
def
xxxxxx:
(空格)xxxxx
还有
for
xxxxxx:
(空格)xxxxx
一句话
有冒号的下一行往往要缩进,该缩进就缩进
python函数内b=b+1报错是因写错代码。在Python中,所有代码都是通过正确的空格排列的。无多出来空格或缺少空格,整个代码都不会运行,仅返回一个错误函数。Python代码遵循PEP8空白规范,每一级缩进使用4个空格,便不会报错。
不要只关注报错的那行,它的上一行也要检查。
比如上一行如果少了闭合括号 ")",同样也会报错这一行
global
python 函数嵌套和nonlocal关键字
只待风起
原创
关注
3点赞·7531人阅读
python函数可以嵌套使用,使用也比较简单,举个栗子:
def outer():
print("outer")
def inner():
print("inner")
inner()
outer()
## 运行结果:
outer
inner
复制
nonlocal关键字:
与global关键字有点相似,可以对比着理解。nonlocal关键字只能作用域局部变量,且始终找离当前最近的上层局部作用域中的变量。看栗子:
a = 1
def outer():
nonlocal a
a = 2
outer()
print(a)
复制
结果:报错 SyntaxError: no binding for nonlocal 'a' found,
原因分析:nonlocal关键字是能作用域局部变量,当使用nonlocal声明变量 a 时,就会往上最近一层局部作用域寻找局部变量 a ,结果没找着,报错。
a = 1
def outer():
global a
a = 2
def inner():
nonlocal a
a = 3
inner()
print(a)
outer()
print(a)
复制
结果:报错 SyntaxError: no binding for nonlocal 'a' found,
原因分析:当使用nonlocal声明变量 a 时,就会往上最近一层局部作用域寻找局部变量 a ,此时外层局部作用域虽然能找到变量a,但是这找到的 这个a 已经被global声明为全局变量了,所以报错。
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)
## 运行结果:
3
3
3
1
Python程序开发中的错误通常可分为三类:语法错误、运行时错误和逻辑错误。
1.语法错误,语法错误是在Python程序开发中最常见的错误,如关键字输入错误、变量未赋值使用、函数未定义等。在一些Python集成开发环境(如PyCharm)中,输入程序代码时会自动检测语法错误,并且错误位置以红色波浪线标出。因此,此类错误比较容易被发现和改正。
2.运行时错误,运行时错误是指Python代码编译通过,在运行代码时发生的错误。这类错误往往是由指令代码执行了非法操作引起的,如数组下标越界、除数为0、试图打开一个不存在的文件、连接数据库错误等。当程序中出现这种错误时,程序会自动中断,并给出有关的错误信息提示。
3.逻辑错误,程序运行结果和预期结果不一致,说明程序中存在逻辑错误,如运算符使用不正确,语句顺序不对,循环语句的起始值、终值或步长设置不对等。逻辑错误通常不会产生错误提示,只能根据运行结果知道程序中出现了错误。因此,这种错误较难被排除,需要编程人员仔细阅读代码,使用调试和排错技巧,在可疑代码处插入断点并逐句跟踪,检查相关变量的值等方法,分析错误位置和原因。