Python中的global关键字的用法以及如何设置变量?

Python中的global关键字的用法以及如何设置变量?Python中的global关键字的用法global的英文相比你肯定知道,全球的,总的。那么正Python编程语言中,结合global的中文意思

欢迎大家来到IT世界,在知识的湖畔探索吧!

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()

欢迎大家来到IT世界,在知识的湖畔探索吧!

运行后,控制台输出如下:

欢迎大家来到IT世界,在知识的湖畔探索吧!0
Process finished with exit code 0

那么我刚刚说了,这个函数是我想像往前移动5步,那么这么一想,我就做了如下修改:

# 当前所处位置
cur = 0
# 默认往前移动无不
def movenext():
    cur=cur+5
    print(cur)
#调用Main函数
if __name__ == '__main__':
    movenext()

运行后,控制台输出却变成了如下:

欢迎大家来到IT世界,在知识的湖畔探索吧!Traceback (most recent call last):
File "criss_try.py", line 18, in <module>
    movenext()
File “criss_try.py", line 14, in movenext
    cur=cur+5
UnboundLocalError: local variable 'cur' referenced before assignment

上面的错误是因为对于在函数外面定义的global的变量,在函数内部只能完成对其访问,不能对其修改,因此会出现上述报告,如果你想在函数对一个global的变量进行修改,那么需要显著的声明global变量,作如下修改:

# 当前所处位置
cur = 0
# 默认往前移动无不
def movenext():
    #显著的声明global变量
    global cur
    cur=cur+5
    print(cur)
#调用Main函数
if __name__ == '__main__':
    movenext()
    print(cur)

运行结果如下:

5
5
Process 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    :https://github.com/crisschan/
    # @Site    : https://blog.csdn.net/crisschan
    # @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] = value
    def get_value(key):
        '''
        :param key: 全局变量的名字
        :return:
        '''
        try:
            return _global_dict[key]
        except KeyError as e:
            print(e)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/37564.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信