python变量作用域和生存期_变量的生存期和作用域
变量的生存期和作用域是个很基础但又很重要的问题,所以我打算写几百字重温一下。
变量的生存期是指变量在什么时间段存在。
变量的作用域是指变量在哪些代码块中能够被访问。
一般来说变量生存期包含作用域。即在变量起作用的代码段,这时变量已经分配了存储空间。
也就是说,变量可能已经分配存储空间,但它不能被访问。
在程序加载到内存中时,有些变量就已经分配存储空间,并且这个存储空间直到整个程序执行完毕,从内存中退出时才会被释放。
这些变量的生存周期就为整个程序的生存周期。如 全局变量和静态局部变量。它们的差别是全部变量的作用域一般为定义处到它所在文件结束。
要在全局变量定义位置之前或其他源文件中引用该全局变量,需要用extern来扩展该全局变量的作用域。
程序中有的变量在程序加载到内存中时并不分配存储空间,而是到定义它的函数被调用执行时才会临时分配存储空间,并且一旦该函数执行完毕返回到被调用处,这些变量的存储空间会被回收。
如 非静态局部或自动变量。
一个局部变量,如果没有用static修饰则自动为auto,即这种情况下生存期为函数调用到函数返回这个时间段。
对于非静态局部变量,生存期和作用域都为其所在定义的函数
对于静态局部变量,它的生存期是整个程序生命周期,但作用域依旧为定义它的函数内部
全局变量与静态局部变量如果未初始化,值为0
非静态局部变量未初始化,值不定。
1. 一般情况下全局变量定义函数外,局部变量定义函数内;全局变量作用范围是全局,局部变量作用范围在函数内;
2. 静态变量定义在函数外,则为静态全局变量,作用范围为当前文件;定义在函数内,则为局部静态变量,作用范围同局部变量;
3. 如果在全局范围要经常用到某个值,则设置为静态变量,否则定义为普通全局变量即可;
4. c、c++和java可以定义静态变量,go和python不能定义静态变量;
python变量作用域和生存期_变量的生存期和作用域相关推荐
- Python中单个下划线“ _”变量的用途是什么?
这段代码中_ after for的含义是什么? if tbh.bag:n = 0for _ in tbh.bag.atom_set():n += 1 #1楼 下划线_在Python中被视为" ...
- Python中单个下划线“_”变量的目的是什么?
在Python中,下划线_被视为" 我不关心 "或" 丢失 "变量 python解释器将最后一个表达式值存储到名为的特殊变量中_. >>> 1 ...
- python自动翻译导学案_变量python学案
●掌握常用的关系和逻辑运算符 ●掌握 Python 中的变量及其赋值 ●数字化学习与...●学生任务二: 阅读学案,计算一下表达式的值,把结果填在学习网站上. 练习算术...... 初中八年级信息技术 ...
- 符号常量和变量有什么区别_“变量”和“常量”,计算机程序中的那个“量”是什么“量”...
石头这个学期上了一门大一的"C语言"课程,这是石头第二次上这门课了,我决定把这门课中学生比较容易混淆的.不好理解的概念用文章的形式记录下来. 无论是什么量,最终归为0 1 01 变 ...
- Python基本语法_变量作用域LEGB
目录 目录 软件系统 变量的作用域 高级语言对数据类型的使用过程 作用域的产生 作用域的类型 Llocal局部作用域 Eenclosing嵌套作用域 Gglobal全局作用域 Bbuilt-in内置作 ...
- Python变量作用域的规则以及如何搜索内置作用域
喜欢编程,热爱分享,希望能结交更多志同道合的朋友,一起在学习Python的道路上走得更远!有不懂的问题可以私聊我哦! **作用域:**是指变量的生效范围,例如本地变量.全局变量描述的就是不同的生效范围 ...
- python变量按其作用域可分为_python变量的作用域一
#6.2变量的作用域,是变量的可访问范围,也称为命名空间.在第一次 #给变量赋值时,python创建变量.第一次给变量赋值的位置决定了变量的作用域. #作用域类型 #一个程序通常包含了变量.函数和其他 ...
- python变量下划线开头_一日一技:python中下划线在不同位置的作用
在Python的变量名和方法名中,单下划线和双下划线都有各自的含义,有的仅仅是作为约定,用于提示开发人员,而有的则对Python解释器有特殊含义. 你可能有些疑惑,在Python中变量名和方法名中的单 ...
- python 变量类型注释_变量类型、命名规则及代码注释
人类在纸上可以写数字,也可以写文字,用数字来计算,用文字来说话,在人类的意识里你写的东西代表不同的含义!同样,在程序里面我们也按照人的习惯来设计,因此就有了变量类型这种说法!任何语言都会涉及到变量类型 ...
最新文章
- pom.xml中spring-boot-starter-test包的使用
- ASP-JSP-NET 清空IE缓存
- linux shell脚本 wget,bash – 在shell脚本中运行wget和其他命令
- leetcode 223. Rectangle Area | 223. 矩形面积(Java)
- 修改date格式 java_如何用Java更改日期格式?
- 成功的秘诀是什么_学习编码的10个成功秘诀
- python性能测试模块_技巧python模块性能测试-阿里云开发者社区
- 解决Windows 10下MySQL 5.7中文乱码问题
- ZOJ3826 Hierarchical Notation(14牡丹江 H) 树套树
- 米家扫地机器人重置网络_谁家扫地机器人悄声打扫更干净,科沃斯DEEBOT N3对比米家1S...
- 完善征信+垂直创新 助力有融网“剩者为王”
- SGX Enable
- 苹果手机怎么保存ins上的图片到本地
- 计算机 就业率低,大学里“最坑人”的4个专业,热门只是假象,实则就业率很低...
- 机器学习算法基础20210504-0529
- Py之h5py:Python库之h5py库的简介、安装、使用方法详细攻略
- oppo手机计算机的隐藏功能介绍,OPPO手机6大隐藏功能,你知道吗
- linux让前台程序脱离终端运行
- android_基础_Edittext的setSelection属性
- 公用IPv6 IPv4 DNS