1.全局变量与局部变量

全局变量:指在函数之外定义的变量,一般没有缩进,在程序执行的全过程有效

局部变量:指在函数内部使用的变量,仅在函数内部有效,当函数退出时变量将不存在

例1:

n = 1 # 全局变量

def func(a, b):

c = a * b # c是局部变量,a和b作为函数参数也是局部变量

return c

s = func("knock~", 2)

print(s)

print(c)

这个例子说明,当函数执行完退出后,其内部变量将被释放。

如果函数内部使用了全局变量呢?例如:

n=1 #n是全局变量

def func(a,b):

n=b #这个n是在函数内存中新生成的局部变量,不是全局变量

return a*b

s=func("knock~",2)

print(s,n) #测试一下n值是否发生改变knock~knock~ 1

函数func()内部使用了变量n,并且将变量参数b赋值给变量n,为何n值没有改变?

因为函数func()有自己的内存空间,它将n=b语句理解为生成一个局部变量n,并将参数b赋值给它,此时func()函数没有将n当作全局变量。所以,函数退出后,局部变量n被释放,全局变量n的值没有改变。

如果希望让func()函数将n当作全局变量,需要在变量n使用前显式说明该变量未全局变量,修改后:

n = 1 # n是全局变量

def func(a,b):

global n

n = b # 这个n是在函数内存中新生成的局部变量,不是全局变量

return a*b

s = func("knock~",2)

print(s, n) # 测试一下n值是否发生改变knock~knock~ 1

2.python函数对变量的作用遵守原则:

(1)简单数据类型变量无论是否与全局变量重名,仅在函数内部创建和使用,函数退出后变量被释放,如有全局同名变量,其值不变。

(2)简单数据类型变量在用global保留字声明后,作为全局变量使用,函数退出后该变量保留且值被函数改变。

(3)对于组合数据类型的全局变量,如果在函数内部没有被真实创建的同名变量,则函数内部可以直接使用并修改全局变量的值。

(4)如果函数内部真实创建了组合数据类型变量,无论是否有同名全局变量,函数仅对局部变量进行操作,函数退出后局部变量被释放,全局变量值不变。

原文:https://www.cnblogs.com/GumpYan/p/14154760.html

python全局变量一般没有缩进_python全局变量与局部变量相关推荐

  1. python全局变量操作详解_Python全局变量是什么?Python全局变量怎么使用?

    Python全局变量是什么?Python全局变量怎么使用?通常可以将任何编程语言中的变量定义为用于以特定名称存储值的元素,并且该变量在存储器中用作存储单元中的标识对象.它可以有两种类型,全局变量和局部 ...

  2. python中for循环缩进_Python减少循环层次和缩进的技巧分析

    本文实例分析了Python减少循环层次和缩进的技巧.分享给大家供大家参考,具体如下: 我们知道Python中冒号和缩进代表大括号,这样写已经可以节省很多代码行数,但是可以更优化,尽可能减少循环的层次和 ...

  3. python花括号代替缩进_Python 为什么甩掉累赘的花括号,使用缩进来划分代码块?...

    人人好,这是"Python为什么"系列节目的文字稿(文末有旁观地址). 本期话题:Python 为什么使用缩进来划分代码块,而不像其它语言使用花括号 {} 或者 "end ...

  4. python全局变量赋值报错_python全局变量、回调函数

    1.python全局变量相关概念及使用 来自菜鸟教程上的例子: http://www.runoob.com/python3/python3-function.html 一.python入参需要注意地方 ...

  5. python 里什么时候缩进_python什么时候缩进

    Python中的缩进(Indentation)决定了代码的作用域范围.这一点和传统的c/c++有很大的不同(传统的c/c++使用花括号花括号{}符 决定作用域的范围:python使用缩进空格来表示作用 ...

  6. python中for循环缩进_Python基础- 缩进,选择和循环

    缩进: Python最具特色的是用缩进来标明成块的代码.下面我以if选择结构来说一下 if x >0: print "Test" print "Hello,worl ...

  7. 关于python的全局变量和局部变量、以下描述错误的是_Python:全局变量与局部变量的问题...

    在Python中,如果处理不好变量使用的关系,就很容易出现: UnboundLocalError: local variable 'n' referenced before assignment 这种 ...

  8. python全局变量怎么删除_python 全局变量怎么改

    对于全局变量的修改,如果全局变量是int或者str,那么如果想要在函数中对函数变量进行修改,则需要先在函数内,声明其为global,再进行修改:如果是list或者dict则可以直接修改.a = 1 b ...

  9. python中全局变量和局部变量的区别_Python全局变量与局部变量区别及用法分析

    本文实例讲述了Python全局变量与局部变量区别及用法.分享给大家供大家参考,具体如下: 对于很多初学的同学,对全局和局部变量容易混淆,看看下面给大家的讲解相信都应该明白两者的区别了. 定义: 全局变 ...

  10. python全局变量在哪创建_python设置全局变量

    python中怎么定义全局变量 复制代码 count = 0 def Fuc(count): print count count += 1 for i in range(0, 10): Fuc(cou ...

最新文章

  1. 日本「AI 鱼脸识别」项目,每分钟识别 100 条
  2. python where 多条件
  3. 给Android Studio设置代码字体大小与界面字体样式
  4. c#4.0新特性之一: Dynamic Lookup (1)
  5. C# datagridview、datagrid、GridControl增加行号
  6. duilib自定义消息
  7. it'll be much more productive to read pdf files via a touch screen
  8. leetcode - 4. Median of Two Sorted Arrays
  9. 【转】linux下cpio命令使用
  10. JDK6中synchronized优化之自旋锁、锁擦除、锁粗化
  11. tp5小程序生成二维码保存到七牛云
  12. ora-01045 :user system lacks create session privilege; logon denied
  13. 洛谷 P2414 [NOI2011] 阿狸的打字机 题解
  14. spring boot整合JDBC
  15. 理解计算:从根号2到AlphaGo 第3季 神经网络的数学模型
  16. python金融编程入门_金融编程与量化金融—Python编程汇总
  17. 中国兽医血液分析仪行业市场供需与战略研究报告
  18. 用户为先:谷歌做好三件事
  19. Java程序设计 基础知识
  20. IC | 关于传输线的反射原理的详细解析

热门文章

  1. 【TSP】基于matlab GUI蚁群算法求解旅行商问题【含Matlab源码 1032期】
  2. 【图像修复】基于matlab GUI三维图像复原【含Matlab源码 963期】
  3. 【语音分析】基于matlab语音线谱对转换【含Matlab源码 560期】
  4. solr获取同义词 java_如何在使用缩写及其全名搜索时使solr同义词获取相同的结果(相同的数字和顺序)...
  5. python三种基本结构类型_Python入门_浅谈数据结构的4种基本类型
  6. Latex:利用BibTeX批量导入参考文献
  7. 计算机网络—3网络层(路由选择协议、路由表的生成)
  8. ThinkPad笔记本安装win10+Ubuntu17.10双系统
  9. DSP实验二c语言程序,实验1.2:编写一个以C语言为基础的DSP程序
  10. android compare方法,如何的CompareTo或在Android Studio中