那年初夏|Python中的global关键字的用法以及如何设置变量?
Python中的global关键字的用法global的英文相比你肯定知道 , 全球的 , 总的 。 那么正Python编程语言中 , 结合global的中文意思你会更加的理解这个关键字的用法 。 我们使用global关键字可以定义Global的变量 。
global 关键字能什么呢global关键字可以定义一个变量 , 被定义的变量可以在变量作用域之外被修改 , 通俗讲就是一个全局的变量 , 这个全局的变量在其被定义后 , 可以在全部上文中修改和使用 。 但是 , global也是随便被使用的 , 它也有一些自己的规则 , 当我们在函数内部创建一个变量的时候 , 如果我们想让他变成一个全局变量 , 我们需要使用关键字global定义它 , 但是如果我们在函数外面定义的变量默认就是global的变量 , 不用在使用global关键字定义 。
如何使用global首先我先尝试一下如下代码 , 我们实现默认移动5步的这样一个函数:
# 当前所处位置cur = 0# 默认往前移动无不def movenext():print(cur)#调用Main函数if __name__ == '__main__':movenext()
运行后 , 控制台输出如下:
0Process finished with exit code 0
那么我刚刚说了 , 这个函数是我想像往前移动5步 , 那么这么一想 , 我就做了如下修改:
# 当前所处位置cur = 0# 默认往前移动无不def movenext():cur=cur+5print(cur)#调用Main函数if __name__ == '__main__':movenext()
运行后 , 控制台输出却变成了如下:
Traceback (most recent call last):File "criss_try.py", line 18, in
上面的错误是因为对于在函数外面定义的global的变量 , 在函数内部只能完成对其访问 , 不能对其修改 , 因此会出现上述报告 , 如果你想在函数对一个global的变量进行修改 , 那么需要显著的声明global变量,作如下修改:
# 当前所处位置cur = 0# 默认往前移动无不def movenext():#显著的声明global变量global curcur=cur+5print(cur)#调用Main函数if __name__ == '__main__':movenext()print(cur)
运行结果如下:
55Process finished with exit code 0
可以看出 , 第一个5是在movenext函数中打印出来的 , 第二个5是在main函数中打印出来的 , 但是都是打印了cur这个变量 。 我们在movenext函数中完成了cur的修改 , 但是我们在movenext函数中或者函数外打印cur都是一样的结果 , 说明在函数中修改的cur就是全局的cur这个变量 。
从上面的内容中我们可以看到Global是在一个py文件内部约束全局变量的关键字 , 在同一个项目中我们是如何约束一个项目的全局变量的呢?
借助Global的思路 , 建立一个全局变量管理的机制 , 这样就可以提供项目级的全局变量了新建global_manager.py
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Time: 2020/8/24 2:54 下午# @Author: CrissChan# @From:# @Site:# @File: global_manager.py# @Intro: 项目级的全局变量管理器 , 通过global定义全局字典 , 完成项目的全局变量的定义#使用方法在对应的文件中:#import global_manager as glob#glob._init()# 先必须在主模块初始化## 定义跨模块全局变量#glob.set_value('sessionid', sessionid)#在使用全局变量的项目内的文件前中:#import global_manager as glob#sessionid=glob.get_value('sessionid')##这就达到了项目将全局变量的目的def _init():'''初始化全局变量管理器:return:'''global _glo_dict_glo_dict = {}def set_value(key, value):'''将全局变量存入全局变量管理器:param key: 全局变量的名字:param value: 全局变量的值:return:'''_global_dict[key] = valuedef get_value(key):''':param key: 全局变量的名字:return:'''try:return _global_dict[key]except KeyError as e:print(e)
- 那年初夏|15.3TB容量的消费级固态硬盘来了,售价和一块CPU差不多
- 那年初夏|一更新就出事的win10!SSD硬盘被坑寿命受损,微软已正视
- 麦小姐|《泰坦尼克号》的露丝原型人物的后半生是怎么度过的?
- 那年初夏|iPhone 12配制36块磁铁,有何奥秘?
- 晓正谈历史|他的生命定格在26岁,英雄故事却激励一代代青少年,那年今日
- 那年初夏|很有可能下周Apple新品发布
- 通天战队|高大上的词云,其实很简单
- 那年初夏|阿里云网盘开始内测了,你参与了吗?详细的申请教程送给你
- 人走茶凉|重磅!堪称史上最强电子版Python入门手册,终于可以下载了
- 那年初夏|外星人为笔记本配备360Hz刷新率屏幕 或近期上市