python,数据分析,有相关问题欢迎留言交流。
一、问题引入
在写爬虫进行批量命名时,比如说常用的解析网页时 url这个变量就是跨函数的。涉及到全局变量和局部变量的设置。
二、全局变量与局部变量的区别
局部变量需要通过函数去访问,而全局变量则可以直接访问。具体请看下面例子说明。
三、函数间的全局变量
①全局变量与局部变量的设定
跨函数不设定为全局变量则无法调用。以url这个变量为例。
def init():
#global url
url = '/page='
def get_jiegou(url):
#global i
for i in range(1,5,1):
#批量生成翻页网址
print(str(url) + str(i))
if __name__ == '__main__':
init()
get_jiegou(url)
在这一步,get_jiegou(url)函数想调用init()函数的url这个变量失败。
# 去掉#global url前的#
def init():
global url
url = '/page='
def get_jiegou(url):
#global i
for i in range(1,5,1):
#批量生成翻页网址
print(str(url) + str(i))
if __name__ == '__main__':
init()
get_jiegou(url)
正常生成我们需要的网址。
②变量更改
局部变量不能改变全局变量。需在函数中设定全局变量。但主函数则可以直接更改。
def a():
global i
i = 1
print(i)
def b():
i = i + 1
print(i)
if __name__ == '__main__':
a()
i = i + 3
print(i)
b()
四、类的全局变量和局部变量
class variable:
a = '我是类变量'
def showvarible(self):
b = '我是函数变量'
print(a)
print(b)
variable().showvarible()
a变量无法调用
class variable:
a = '我是类变量'
def showvarible(self):
b = '我是函数变量'
print(self.a)
print(b)
variable().showvarible()
class variable:
def __init__(self,a):
self.a = '我是类变量'
def showvarible(self):
b = '我是函数变量'
print(self.a)
print(b)
variable(1).showvarible()