全局变量是在函数外部定义的变量(没有定义在某一个函数内),所有函数内部都可以使用这个变量。

提示:全局变量是可变的,在其他开发语言中,大多是不推荐使用全局变量的,因为可变范围太大,会导致程序后期不好维护。

一、在函数内部修改全局变量的值

如果在函数中需要修改全局变量,需要使用global关键字进行声明。

global关键字会告诉解释器后面的变量是一个全局变量,再使用赋值语句时,就不会创建局部变量

代码体验:

# 定义一个全局变量
num = 99def demo1():# 希望修改全局变量的值 -- 使用global声明一下变量即可# global关键字会告诉解释器后面的变量是一个全局变量# 再使用赋值语句时,就不会创建局部变量global numnum = 10print('demo1 ===> %d' % num)def demo2():print('demo2 ===> %d' % num)demo1()
demo2()

执行结果:

二、全局变量定义的位置和代码结构

如果在开发中我们使用到了全局变量,应该把全局变量打在代码的什么位置。

为了保证所有的数据都能够正确使用到全局变量,应该将全局变量定义在其他函数的上方。

代码体验1:

# 定义一个全局变量
num = 99def demo1():print(' %d' % num)print('%s' % title)# 再定义一个全局变量
title = 'Python自学网'demo1()

执行结果:

代码体验2:

# 定义一个全局变量
num = 99def demo1():print(' %d' % num)print('%s' % title)print('%s' % name)# 再定义一个全局变量
title = 'Python自学网'demo1()# 再定义一个全局变量
name = 'lily'

执行结果:报错

注意:由于全局变量name是在调用函数之后才定义的,在执行函数时,变量还没有定义,所以程序会报错。

代码体验3:正确位置

# 定义一个全局变量
num = 99
# 再定义一个全局变量
title = 'Python自学网'
# 再定义一个全局变量
name = 'lily'def demo1():print(' %d' % num)print('%s' % title)print('%s' % name)demo1()

执行结果:

代码结构示意图如下:

三、全局变量命名的建议

为了避免局部变量和全局变量出现混淆,在定义全局变量时,有些公司会有一些开发要求:如:

全局变量名前应该增加g_ 或者 gl_ 的前缀

提示:具体的要求格式,各公司要求可能会有些差异

代码体验:

# 定义一个全局变量
gl_num = 99
# 再定义一个全局变量
gl_title = 'Python自学网'
# 再定义一个全局变量
gl_name = 'lily'def demo1():# 如果局部变量的名字和全局变量的名字相同# PyCharm会在局部变量的下方显示一个灰色的虚线,提示我们修改一个名字num = 20print(' %d' % num)print('%s' % gl_title)print('%s' % gl_name)demo1()

小技巧:如何在修改全局变量名时,之前其他地方使用这个变量名同时被修改?

步骤:选中要被修改的名字 ----》 点击鼠标右键出现下图这个界面,鼠标悬浮在Refactor上 ---》点击Rename   ------》在下一个界面上直接修改全局变量名 ------》 点击Refactor即可完成同步修改。

快速调出修改窗口:先须先选中要修改的名字 ----》 按住快捷键 Shift + F6

Python教程文章借鉴来源:http://www.wakey.com.cn/

【Python】全局变量详解二(修改全局变量值、定义位置和代码结构、命名建议)相关推荐

  1. Python 列表详解

    Python 列表详解 什么是列表 列表的定义 列表的操作 访问列表元素 列表的切片 列表的相关运算 列表常用方法 更多内容,可以微信搜索[公][众][号][ 郑大钱呀],关注我们,一起学技术! 什么 ...

  2. 【python】详解multiprocessing多进程-Pool进程池模块(二)

    [python]详解multiprocessing多进程-process模块(一) [python]详解multiprocessing多进程-Pool进程池模块(二) [python]详解multip ...

  3. python英语字典程序修改_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  4. python字典修改键所对应值_详解如何修改python中字典的键和值

    我们知道python中字典是无序的,它们都是通过hash去对应的.一般的如果我们需要修改字典的值,只需要直接覆盖即可,而修改字典的键,则需要使用字典自带的pop函数,示例如下: t = {} t['a ...

  5. python多线程详解 Python 垃圾回收机制

    文章目录 python多线程详解 一.线程介绍 什么是线程 为什么要使用多线程 总结起来,使用多线程编程具有如下几个优点: 二.线程实现 自定义线程 守护线程 主线程等待子线程结束 多线程共享全局变量 ...

  6. Python|SQL详解之DDL|DML|DQL|DCL|索引|视图、函数和过程|JSON类型|窗口函数|接入MySQL|清屏|正则表达式|executemany|语言基础50课:学习(14)

    文章目录 系列目录 原项目地址 第41课:SQL详解之DDL 建库建表 删除表和修改表 第42课:SQL详解之DML insert操作 delete 操作 update 操作 完整的数据 第43课:S ...

  7. 07 Python数据类型详解

    文章目录 一.整数类型(int)详解 1.1 整数的不同进制 1) 十进制形式 2) 二进制形式 3) 八进制形式 4) 十六进制形式 1.2 数字分隔符 1.3 相关方法 二.字符串类型(strin ...

  8. Python数据分析详解

    Python数据分析详解 数据分析概述 python在数据分析方面有哪些优势 Python不受数据规模的约束,能够处理大规模数据. Python的sklearn库提供了丰富的数据挖掘和人工智能方法,为 ...

  9. from mysql partition select_爬虫(九十九)mysql详解二

    **mysql中字段的常见类型: ** 二进制位 bit(长度) tinyint[(长度)] [有无符号unsigned] [位数低于长度时候是否填充零zerofill] 有符号表示范围-128 ~ ...

最新文章

  1. Design Pattern - Bridge(C#)
  2. 部分知名公司的网址 合集
  3. html四个标签,基本的 HTML 标签 - 四个实例
  4. 递归和尾递归的区别和原理
  5. JavaScript二进制、八进制和十六进制数值
  6. php判断ajax传入,利用PHP判断是否为AJAX请求代码
  7. 一张图学会python应用到excel-Python | 编写一个简单的Excel处理脚本
  8. like效率 regexp_Oracle中REGEXP_LIKE与LIKE的区别
  9. 假设检验 python_数据清洗、假设检验
  10. 汇编语言指令是机器指令的符号化
  11. SECS\GEM RMS系统OEE定义
  12. 大型数据库Oracle基础练习
  13. 我在阿里三年的运营经都在这儿了
  14. 一图读懂DV、OV、EV三种SSL证书之间的区别
  15. 身份验证绕过漏洞分析
  16. 微信群如何引流最快?微信群裂变引流工具首选这款
  17. 前端实现搜索关键字高亮功能:
  18. 历代华为Mate系列主要参数对比,更新于2020年11月
  19. SecureCRT 服务器链接信息密码忘记找回
  20. mongrel cluster

热门文章

  1. vscode格式化代码(绝对好用,亲测)
  2. 好听的微信名字,个性微信昵称大全:乂日光倾城¤
  3. 如何在iPad上使用YouTube画中画
  4. Kotlin RecyclerView实现多布局
  5. 历年奥斯卡获奖影片(1927—2009)
  6. C#之清空FileStream内容
  7. 课程设计:模拟全球通计费程序--java(包含源码、思路、结果)
  8. coreldraw带圈字符_CDR怎么做弧形文字或者环形文字?
  9. 项目经理一年能挣多少钱?本文带你了解一下
  10. 这里才是原汁原味的老北京,有时间一定要去逛逛!