Python爬取作用域变量的坑本文基于Python3讲解说说便宜,看代码。变量作用域Python块级作用域概念作用域链把局部变量变成全局变量变量作用域在python中,定义一个函数是通过关键字def来定义的。和大多数语言一样,python也有全局变量和局部变量num=100#globalscopevariablenumdefadd(a,b):#通过def定义一个add函数num=a+b#functioninternalscopelocalVariablenumprint(num)add(1,2)#print3print(num)#print100一般情况下,局部作用域的变量不能在全局作用域访问:defdemo():c=10#函数内部有一个变量cprint(c)#此时在函数外打印c会报错,因为全局范围内没有变量c。块级作用域的概念在python中没有块级作用域的概念。函数内部可以是作用域,但是没有块作用域(比如if/for..的作用域)。与其他语言中的块级作用域类似,python中的这些块级作用域与函数作用域处于同一级别。所以在python中,你可以在for循环外获取for循环内的值defdemo():c=10#functioninternalvariablecforiinrange(0,10):#forloopa='tiger'#insidefor循环变量ac+=1#for循环内部操作forloop外部变量cprint(a)#在python中,for循环内部的变量可以在for循环外直接获取print(c)#此时,函数的内部变量c是相对于for循环内部是全局变量demo()作用域链,和JS一样,python中也有作用域链:c=1deffunc1():c=2#如果有就是这里没有声明变量c,那么会往上一层,请找就是c=1deffunc2():c=3#如果这里没有声明变量c,那么会往上一层下一层,也就是c=2print(c)func2()func1()局部变量变成全局变量我们知道,一般情况下,局部变量是不能在全局范围内访问的。但是可以使用关键字global将局部变量变成全局变量,这样就可以在全局范围内访问局部变量defdemo():globalc#使用global关键字将局部变量变成全局变量c=100demo()print(c)#虽然没有全局定义变量c,但是在函数内部使用global关键字来定义变量c,使c成为全局变量
