![Python 3.7从入门到精通(视频教学版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/212/31476212/b_31476212.jpg)
上QQ阅读APP看书,第一时间看更新
6.7 变量作用域
Python中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。
变量作用域包括全局变量和局部变量。其中,定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
在函数之外定义的变量属于全局变量,用户可以在函数内使用全局变量。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P134_57424.jpg?sign=1739330288-6V1ahisS9JTv8MObGUh7d2LWf7PMPu2L-0-b6a48615aebe77aa7cd02c8b8ecdde07)
运行结果如图6-31所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P134_12960.jpg?sign=1739330288-gz7nF0A8tHB7KgYOhHBOI2MPgFAT2I5s-0-6dcd041af7b04a30197e6ce8af1d8d88)
图6-31 运行结果
在本示例中,x就是一个全局变量。在函数get(y = x+100)中将变量x的值加100后赋给变量y。
当用户在函数内定义的变量名称与全局变量名称相同时,函数内定义的变量不会改变全局变量的值。因为函数内定义的变量属于局部命名空间,而全局变量则属于全局命名空间。
例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P134_57425.jpg?sign=1739330288-KymooBNm2ugl0168mUpCORBvNhZXXu1m-0-078a8a629001d340fd50e2949b647fed)
运行结果如图6-32所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P134_13005.jpg?sign=1739330288-2ci3PWlhdlGV93p0n6O2Kjaxwae6iAAA-0-8229c032b27d37c4f7ed38c760a76ab7)
图6-32 运行结果
在本示例中,第一次调用的x为全局变量,第二次调用的x为局部变量。
如果要在函数内改变全局变量的值,就必须使用global关键字。例如:
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P134_57426.jpg?sign=1739330288-vMsxJtrFxcxgylOSkMedJCcBQwkvW4nd-0-873bdb2d6c4ba3b0e112a8e7b967e141)
运行结果如图6-33所示。
![](https://epubservercos.yuewen.com/5D8A8A/17035792904285406/epubprivate/OEBPS/Images/Figure-P135_13073.jpg?sign=1739330288-1tlwUtyyEq6toMEwnKP97dj2Uj7n2ZBU-0-7e69a0b36cfe7eb4e3b402d74f216e3b)
图6-33 运行结果
在本示例中,首先定义一个全局变量x,然后定义函数changex(),该函数通过使用global关键字,将x的值修改为200。