
正文
python报错函数 python函数调用出错
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python函数不使用nonlocal关键字报错原因怎么写
global
python 函数嵌套和nonlocal关键字
只待风起
原创
关注
3点赞·7531人阅读
python函数可以嵌套使用,使用也比较简单,举个栗子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声明为全局变量python报错函数了,所以报错。
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
相关问答
Q1: python函数内b=b+1为什么报错
python函数内b=b+1报错是因写错代码。在Python中,所有代码都是通过正确的空格排列的。无多出来空格或缺少空格,整个代码都不会运行,仅返回一个错误函数。Python代码遵循PEP8空白规范,每一级缩进使用4个空格,便不会报错。
Q2: python中corr函数错误
python中corr函数错误原因,在Python中,所有代码都是通过正确的空格排列的。所以,无论是多出来空格,还是缺少空格,整个代码都不会运行,并且仅返回一个错误函数。
Q3: Python报错求解答
根据代码的缩进,可能是下面这样的代码,我来解释一下需要修改的地方:
li = []
for i in range(10000, 1000000):
a = str(i)
x = (len(a) + 1) // 2
if a[:x + 1] == a[-1:x + 1]:
li.append(i)
for j in range(len(li)):
print(li[j], end="\n")
修改的地方:
定义空列表 li 的位置应该在循环外面,否则每次循环都会清空列表。
在 if 语句中,应该使用字符串切片来判断回文数,而不是使用整数切片。因为 i 是整数类型,不能使用 i[:x + 1] 这样的切片方式。
在最后一个循环中,应该循环 len(li) 次,而不是 len(li) + 1 次,因为列表的下标是从 0 开始的,所以循环次数应该是列表长度,而不是长度加 1。
print 函数的 end 参数应该是 \n 而不是 /n。
修改后的代码如下:
li = []
for i in range(10000, 1000000):
a = str(i)
x = (len(a) + 1) // 2
if a[:x + 1] == a[-1:x + 1]:
li.append(i)
for j in range(len(li)):
print(li[j], end="\n")
关于python报错函数和python函数调用出错的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








