首页 技术 正文
技术 2022年11月6日
0 收藏 658 点赞 946 浏览 1361 个字

在python开发中,变量也是有生命周期的,一旦周期结束,程序会自动清理暂用的空间,释放内存,变量分为两者,一种是局部变量,一种是全局变量,两者具体有什么区别呢……

python局部变量和全局变量(6)

一.局部变量

一般而言在函数内部或者类中声明的变量默认都是局部变量。一旦函数结束,变量的生命周期也会结束,占用的空间会被自动释放。

def func1():
# 在函数内部定义的变量默认都是局部变量
a =
print(a)
# 函数结束,局部变量a的生命周期结束# 由于a是局部变量,并且a的生命周期已经结束,外部再次调用局部变量a,程序会产生异常,崩溃
print(a)

程序报错:NameError: name ‘a’ is not defined ,原因:函数内部定义的局部变量只能在函数内部使用。

二.全局变量

全局变量和局部变量相反,在函数外部或者类外部声明的变量默认为全局变量。全局变量的生命周期直到程序结束才会结束,比局部变量生命周期更长。

a =
def func1():
print(a)
# 函数结束,局部变量的生命周期结束
# 全局变量直到程序结束,生命周期才结束func1()
# 输出全局变量a
print(a)

输出结果:


三.局部变量和全局变量的区别

1.全局变量的生命周期是直到程序结束,而局部变量生命周期是函数结束;

2.如果需要在函数内部修改全局变量的值,需要在函数内部为该全局变量前面加上 global 关键字, 否则该变量默认为函数内部定义的局部变量,示例代码如下:

# !usr/bin/env python
# -*- coding:utf- _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com@File:python_global.py
@Time:// :@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
"""
# 在函数内部定义的变量默认都是局部变量
a =
def func1():
# global a # 声明 a 是全局变量,在该函数内部对a的操作就是对全局变量a的操作
a = # 如果没有上一行代码,默认a就是函数内部的局部变量,函数结束,生命周期结束
print(a)
# 函数结束,局部变量的生命周期结束func1()
# 输出全局变量a
print(a)

输出结果:


是不上觉得很奇怪:为什么最后一个值是2,应该是1才对?

因为没有第17行代码的话,默认a只是函数内部的一个普通局部变量,所以函数内部的print函数输出到控制台是1;函数结束,函数内部的局部变量a值生命周期结束,执行fun1函数之后的print函数输出的是全局变量a的值2.

也就是说函数内部对a值得修改并没有成功,只有在函数内部,为全局变量加上关键字global声明为全局变量,才能修改成功,取消第17行得注释,控制台输出:


python局部变量和全局变量(6)

四.重点总结

1.注意局部变量和全局变量的生命周期;

2.如果想在函数内部修改全局变量的值,需要加上关键字global;

猜你喜欢:

1.python变量

2.pycharm设置头文件模板

转载请注明:猿说Python » python局部变量和全局变量

技术交流、商务合作请直接联系博主扫码或搜索:猿说pythonpython局部变量和全局变量(6)猿说python微信公众号 扫一扫关注

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,085
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,560
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,409
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,182
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,819
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,902