热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python全局变量含义_如何最简单、通俗地理解Python的局域变量、全局变量?

目录:一、笔记二、我的自学路线三、笔记目录一、笔记①局部变量是在函数内部定义的变量,只能在函数内部使用,在函数外不可调用。②全局变量是在函

目录:

一、笔记

二、我的自学路线

三、笔记目录

一、笔记

① 局部变量是在函数内部定义的变量,只能在函数内部使用,在函数外不可调用。

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

③ 大都不推荐使用全局变量因为其可变范围太大,导致程序不好维护。

④ 对于不可变类型的全局变量来说,如num=,要在函数中修改需要global声明,那么才可以在函数外打印函数中已经修改后的值。

⑤ 对于可变类型的全局变量来说,要在函数中修改可以不使用global声明,可以在函数外直接打印函数内修改后的值。

⑥ 无论是可变类型,还是不可变类型的局域变量,都不可以在函数外调用,需要用global声明局域变量,那么才可以在函数外打印局域变量,并且用global后在函数外还可继续进行修改。

# 可变类型的全局变量b,例如:

def ChangeInt(b):

b.append(6)

print("函数内b:",b) # 打印出来为[1,2,3,4,6]

b = [1,2,3,4]

ChangeInt(b)

print("函数内b:",b) # 打印出来为[1,2,3,4,6]

运行结果:

函数内b: [1, 2, 3, 4, 6]

函数内b: [1, 2, 3, 4, 6]

# 不可变类型的全局变量b,例如:

def ChangeInt(b):

b = 10

print("函数内b:",b) # 打印出来为10

b = 2

ChangeInt(b)

print("函数内b:",b) # 打印出来为2

运行结果:

函数内b: 10

函数内b: 2

# 报错,因为用global,不能用入口参数传入变量,参数为一个值,不是变量

def ChangeInt(b):

global b

b = 10

print("函数内b:",b) # 打印出来为10

b = 2

print("进入函数前b:",b) # 打印出来为2

ChangeInt(b)

print("退出函数后b:",b) # 打印出来为10

运行结果:

File "", line 3

global b

^

SyntaxError: name 'b' is parameter and global

# 不可变类型的全局变量b,例如:

def ChangeInt():

global b

b = 10

print("函数内b:",b) # 打印出来为10

b = 2

print("进入函数前b:",b) # 打印出来为2

ChangeInt()

print("退出函数后b:",b) # 打印出来为10

运行结果:

进入函数前b: 2

函数内b: 10

退出函数后b: 10

# 报错,不可变类型的局域变量a,不可以在函数外调用

def ChangeInt():

a = 10

print("函数内b:",a) # 打印出来为10

ChangeInt()

print("退出函数后b:",a) # 打印出来为10

运行结果:

函数内b: 10

--------------------------------------------------------------------------- NameError Traceback (most recent call last) in 4 print("函数内b:",a) # 打印出来为10 5 ChangeInt() ----> 6 print("退出函数后b:",a) # 打印出来为10 NameError: name 'a' is not defined

# 不可变类型的局域变量d,例如:

def ChangeInt():

d = [1,2]

print("函数内b:",d) # 打印出来为10

ChangeInt()

print("退出函数后b:",d) # 打印出来为10

运行结果:

函数内b: [1, 2]

--------------------------------------------------------------------------- NameError Traceback (most recent call last) in 4 print("函数内b:",d) # 打印出来为10 5 ChangeInt() ----> 6 print("退出函数后b:",d) # 打印出来为10 NameError: name 'd' is not defined

# 不可变类型的局域变量b,例如:

def ChangeInt():

global a

a = 10

print("函数内b:",a) # 打印出来为10

ChangeInt()

print("退出函数后b:",a) # 打印出来为10

b = 11

print("修改后b:",a) # 打印出来为11

运行结果:

函数内b: 10

退出函数后b: 10

修改后b: 11

二、我的自学路线

01 安装Python编辑器 [ 已整理 ]

02 Python编译器快捷键 [ 已整理 ]

03 Python基础 [ 已整理 ]

04 Python难点 [ 已整理 ]

05 Python常用的库 [ 已整理 ]

06 爬虫 [ 整理ing ]

07 NLP [ 看视频ing ]

三、笔记目录

1) Python 编辑器

2) Python 基础

( ……更多笔记,见专栏 )

"♥我的笔记,希望对你有帮助♥"



推荐阅读
  • HTML前端开发:UINavigationController与页面间数据传递详解
    本文详细介绍了如何在HTML前端开发中利用UINavigationController进行页面管理和数据传递,适合初学者和有一定基础的开发者学习。 ... [详细]
  • Bootstrap Paginator 分页插件详解与应用
    本文深入探讨了Bootstrap Paginator这款流行的JavaScript分页插件,提供了详细的使用指南和示例代码,旨在帮助开发者更好地理解和利用该工具进行高效的数据展示。 ... [详细]
  • Requests库的基本使用方法
    本文介绍了Python中Requests库的基础用法,包括如何安装、GET和POST请求的实现、如何处理Cookies和Headers,以及如何解析JSON响应。相比urllib库,Requests库提供了更为简洁高效的接口来处理HTTP请求。 ... [详细]
  • 在OpenCV 3.1.0中实现SIFT与SURF特征检测
    本文介绍如何在OpenCV 3.1.0版本中通过Python 2.7环境使用SIFT和SURF算法进行图像特征点检测。由于这些高级功能在OpenCV 3.0.0及更高版本中被移至额外的contrib模块,因此需要特别处理才能正常使用。 ... [详细]
  • Jupyter Notebook多语言环境搭建指南
    本文详细介绍了如何在Linux环境下为Jupyter Notebook配置Python、Python3、R及Go四种编程语言的环境,包括必要的软件安装和配置步骤。 ... [详细]
  • 本文介绍了一种方法,通过使用Python的ctypes库来调用C++代码。具体实例为实现一个简单的加法器,并详细说明了从编写C++代码到编译及最终在Python中调用的全过程。 ... [详细]
  • protobuf 使用心得:解析与编码陷阱
    本文记录了一次在广告系统中使用protobuf进行数据交换时遇到的问题及其解决过程。通过这次经历,我们将探讨protobuf的特性和编码机制,帮助开发者避免类似的陷阱。 ... [详细]
  • 汇编语言:编程世界的始祖,连C语言都敬畏三分!
    当C语言还在萌芽阶段时,它首次接触到了汇编语言,并对其简洁性感到震惊。尽管汇编语言的指令极其简单,但它却是所有现代编程语言的基础,其重要性不言而喻。 ... [详细]
  • 2023年,Android开发前景如何?25岁还能转行吗?
    近期,关于Android开发行业的讨论在多个平台上热度不减,许多人担忧其未来发展。本文将探讨当前Android开发市场的现状、薪资水平及职业选择建议。 ... [详细]
  • 利用 Calcurse 在 Linux 终端高效管理日程与任务
    对于喜爱使用 Linux 终端进行日常操作的系统管理员来说,Calcurse 提供了一种强大的方式来管理日程安排、待办事项及会议。本文将详细介绍如何在 Linux 上安装和使用 Calcurse,帮助用户更有效地组织工作。 ... [详细]
  • 深入探讨前端代码优化策略
    本文深入讨论了前端开发中代码优化的关键技术,包括JavaScript、HTML和CSS的优化方法,旨在提升网页加载速度和用户体验。 ... [详细]
  • 数据类型--char一、char1.1char占用2个字节char取值范围:【0~65535】char采用unicode编码方式char类型的字面量用单引号括起来char可以存储一 ... [详细]
  • 本文通过分析一个具体的案例,探讨了64位Linux系统对32位应用程序的兼容性问题。案例涉及OpenVPN客户端在64位系统上的异常行为,通过逐步排查和代码测试,最终定位到了与TUN/TAP设备相关的系统调用兼容性问题。 ... [详细]
  • 深入理解Java SE 8新特性:Lambda表达式与函数式编程
    本文作为‘Java SE 8新特性概览’系列的一部分,将详细探讨Lambda表达式。通过多种示例,我们将展示Lambda表达式的不同应用场景,并解释编译器如何处理这些表达式。 ... [详细]
  • c语言二元插值,二维线性插值c语言
    c语言二元插值,二维线性插值c语言 ... [详细]
author-avatar
耿佳霖彦婷淑云
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有