IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 关于python中的作用域问题 -> 正文阅读

[Python知识库]关于python中的作用域问题

1.在函数内定义的局部变量只在该函数内可见,当函数运行结束后,在其内部定义的所有局部变量将被自动删除而不可访问。在函数内部使用global定义的全局变量当函数结束以后任然存在并且可以访问
2.如果在函数内部修改一个定义在函数外的变量值,必须使用global明确声明,否则会自动创建新的局部变量。在函数内部通过global关键字类声明或定义全局变量,分为两种情况
方式一的理解
(1)一个变量已在函数外定义,如果在函数内需要修改这个变量的值,并将修改的结果反映到函数之外,可以在函数内用关键字global明确声明要使用已定义的同名全局变量
(2)在函数内部直接使用global关键字将一个变量声明为全局变量,如果在函数外没有定义该全局变量,在调用这个函数之后,会自动创建新的全局变量
方式二的理解
(1)在函数内如果只引用某个变量的值而没有为其赋新值,该变量为(隐式的)全局变量
(2)如果在函数内某条代码有为变量赋值的操作,该变量就被认为是(隐式的)局部变量,除非在函数内赋值操作 之前显示地用关键字global进行声明
例如:局部变量和全局变量

>>> def demo():
    #声明或创建全局变量,必须在使用x之前执行
    global x
    x=3#修改全局变量的值
    y=4#局部变量
    print(x,y)

    
>>> x=5#在函数外部定义了全局变量x
>>> demo()#本次调用修改了全局变量x
3 4
>>> x
3
>>> y#局部变量在函数运行结束之后自动删除,不再存在
Traceback (most recent call last):
  File "<pyshell#9>", line 1, in <module>
    y
NameError: name 'y' is not defined
>>> del x#删除了全局变量
>>> x
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    x
NameError: name 'x' is not defined
>>> demo()#本次调用了全局变量
3 4

注意:如果在某个作用域内有为变量赋值的操作,那么该变量将被认为是该作用域内的局部变量

>>> x=10#全局变量
>>> def demo():
    #以下语句会发生异常,因为x变量现在还不存在
	print(x)
	x=x+1#赋值语句,x将被认为是该作用域内的局部变量
	print(x)

	
>>> demo()
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    demo()
  File "<pyshell#18>", line 2, in demo
    print(x)
UnboundLocalError: local variable 'x' referenced before assignment
>>> 

注意:如果局部变量与全局变量具有相同的名字,那么该局部变量会在自己的作用域内暂时隐藏同名的全局变量

>>> def demo():
	x=3#创建了局部变量,并自动隐藏了同名的全局变量
	print(x)

	
>>> x=5#创建全局变量
>>> x
5
>>> demo()
3
>>> x#函数调用结束之后,不影响全局变量x的值
5
>>> 

以上内容来自《python程序设计基础》

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章           查看所有文章
加:2021-12-11 15:40:40  更:2021-12-11 15:43:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 4:22:18-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码