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

一.局部变量

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

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行得注释,控制台输出:


四.重点总结

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

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

猜你喜欢:

1.python变量

2.pycharm设置头文件模板

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

技术交流、商务合作请直接联系博主
扫码或搜索:猿说python
猿说python
微信公众号 扫一扫关注

python局部变量和全局变量(6)的更多相关文章

  1. 详解python 局部变量与全局变量

    本文将详细分析python的全局变量与局部变量,学过php的人都知道,php里面的全局变量是无法在function里面去使用的,只有超全局变量才可以,那么python会怎么处理全局变量与局部变量呢?下 ...

  2. Python 局部变量与全局变量

    本来以为 局部变量就是在函数/def/class/lambda内部的变量,全局变量就是在之前这些之外的变量.但是,再一次学习Python atm 中应用时发现了一次特例(意外) 字典中 在函数内部改变 ...

  3. python 局部变量和全局变量 global

    当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开 ...

  4. Python局部变量和全局变量global

    当你在函数定义声明变量的时候,它们与函数外具有相同名称的其它变量没有任何关系,即变量名称对于函数来说是 局部  的.这称为变量的 作用域 .所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开 ...

  5. python局部变量与全局变量

    name = "head first python"def what_happens_here():    print(name)  1    name = "pytho ...

  6. Python 局部变量转为全局变量

  7. python的局部变量,全局变量,类变量,实例变量

    定义: a.全局变量:在模块内.在所有函数外面.在class外面,这就是全局变量. b.局部变量:在函数内.在class的方法内(未加self修饰的),这就是局部变量. c. 静态变量:在class内 ...

  8. python变量进阶(可变不可变,局部变量和全局变量)

    变量进阶(理解) 目标 变量的引用 可变和不可变类型 局部变量和全局变量 01. 变量的引用 变量 和 数据 都是保存在 内存 中的 在 Python 中 函数 的 参数传递 以及 返回值 都是靠 引 ...

  9. Python基础笔记系列九:变量、自定义函数以及局部变量和全局变量

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 变量在前面的系列中也许就可以发现,python中的变量和C中的变量有些许不 ...

随机推荐

  1. MySql数据封装操作类

    1.先引用MySQL的DLL文件 using System; using System.Collections.Generic; using System.Linq; using System.Tex ...

  2. learning java Charset 查看支持的字符集类型

    import java.nio.charset.Charset; import java.util.SortedMap; public class CharsetTest { public stati ...

  3. WinDbg常用命令系列---检查符号X

    x (Examine Symbols) x命令在所有与指定模式匹配的上下文中显示符号. x [Options] Module!Symbol x [Options] * 参数: Options特定符号搜 ...

  4. Lightning Web Components html_templates(三)

    Lightning Web Components 强大之处在于模版系统,使用了虚拟dom 进行智能高效的组件渲染. 使用简单语法以声明方式将组件的模板绑定到组件的JavaScript类中的数据 数据绑 ...

  5. Python 09 安装torch、torchvision

    这个也是弄了我很久,百度了好多文章,其实像下面那样挺简单的,没那么复杂 1.进入torch的官网的下载页面,选择一下参数信息 地址:https://pytorch.org/get-started/lo ...

  6. THUPC&CTS 2019 游记

    day ? 去THU报了个到. day? THUPC比赛日,三个人都没有智商,各种签到题不会做,被各路神仙吊着打.G题还猜了个假结论,做了好久都不对.最后顺利打铁了. 还顺便去看一下THUAC. da ...

  7. 特征的非线性变换(Feature Non-linear Transformation)

    有时候特征x和目标y不呈线性关系,线性模型y=wx+b不能很好地反映事物的规律或者无法对事物进行有效分类,因此此时我们需要使用非线性模型. (x=([x1,x2,...,xn])T,w=([w1,w2 ...

  8. session使用方法

    每次客户端检索网页时,都要单独打开一个服务器连接,因此服务器不会记录下先前客户端请求的任何信息. 如何维持客户端与服务器的会话?方法之一: servlet中写入: //新建一个session保存用户名 ...

  9. var a = function(){}和var a = function(){}();的区别

    var a = function(){ ... ... ... } 声明方法. var a = function(){ ... ... ... }(); 声明方法并执行 demo: var u = f ...

  10. 2015-2016-2《Java程序设计》团队博客4

    一.类结构图 这一周将所有的类都进行了实现,以下是这周实现的类图:         二.项目进展 目前已经将所有代码都编写完成,正在进行整体测试.虽然期间遇到了一些问题,但我们一起进行了讨论,并查找了 ...