python函数-作用域
可以把作用域”看成是变量的容器。当作用域被销毁时,所有保存在该作用 域内的变量的值就被丢弃了,只有一个全局作用域,它是在程序开始时创建的。如 果程序终止,全局作用域就被销毁,它的所有变量就被丢弃了。
一个函数被调用时,就创建了一个局部作用域。在这个函数内赋值的所有变量, 存在于该局部作用域内。该函数返回时,这个局部作用域就被销毁了,这些变量就 丢失了。下次调用这个函数,局部变量不会记得该函数上次被调用时它们保存的值。
一、局部作用域
(1)在被调用函数内赋值的变元和变量,处于该函数的“局部作用域”。
(2)处于局部作用域的变量,被称为“局部 变量”。
二、全局作用域
(1)在所有函 数之外赋值的变量,属于“全局作用域”。
(2)处于全局作用域的变量,被称为“全局变量”。
三、作用域的重要性
(1)全局作用域中的代码不能使用任何局部变量;
(2)但是,局部作用域可以访问全局变量;
(3)一个函数的局部作用域中的代码,不能使用其他局部作用域中的变量。
(4)如果在不同的作用域中,你可以用相同的名字命名不同的变量。
四、global语句
gloabl语句可以在函数内创建全局变量。
在函数内使用 "global 变量"
#!/usr/bin/env python
#coding:utf-8
def spam():
global eggs
eggs = 'spam'
eggs = 'global'
spam()
print(eggs) 输出结果是'spam'
五、区分变量是全局变量还是局部变量的四种法则
1.如果变量在全局作用域中使用(即在所有函数之外),它就总是全局变量。
2.如果在一个函数中,有针对该变量的 global 语句,它就是全局变量。
3.如果该变量用于函数中的赋值语句,它就是局部变量。
4.如果该变量没有用在赋值语句中,它就是全局变量。
python函数-作用域的更多相关文章
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- python函数作用域,嵌套函数,闭包
函数作用域 ...
- python函数作用域LEGB
我们的在学习Python函数的时候,经常会遇到很多定义域的问题,全部变量,内部变量,内部嵌入的函数,等等,Python是如何查找的呢?以及Python又是按照什么顺序来查找的呢?这里做一个顺序的说明 ...
- python函数作用域
python中函数作用域 在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_ ...
- python函数作用域,闭包,装饰器
第一:函数作用域: L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间(闭包) G:global 全局作用域 B:build_in ...
- 07.python函数作用域global、nonlocal、LEGB
函数作用域 作用域 一个标识符的课件范围,这就是标识符的作用域,一般常说的是变量的作用域 def foo(): x = 100 print(x) # 可以访问到吗 上例中x不可以访问到,会抛出异 ...
- Python函数作用域和匿名函数
匿名函数的定义 全局变量和局部变量的概念 global(全局变量)和 nonlocal(局部变量) 闭包.递归.回调 匿名函数 匿名函数 lambda 语法规则:lambda 参数 : 表达式 ...
- Python——函数&作用域
我们前面学的都是面向过程式的编程(代码从上到下写,并运行),而函数式编程是将繁杂的代码通过整理特性进行规整.像图书馆一样,将小说.教学.外文等书籍进行分类.让编程人员或看代码人员很容易的查看该段代码的 ...
- python函数 -- 作用域,异常处理
1.def语句和参数 python定义函数的关键词为def,格式如下: def 函数名([变元],[变元],....) #保存在变元中的值,在函数返回后该变元就会被销毁了. 2.返回 ...
随机推荐
- Codeforces Round #427 (Div. 2) - B
题目链接:http://codeforces.com/contest/835/problem/B 题意:给定一个数k和一个数字串n.问你最少改几个数字才能满足所有数字的和不小于k. 思路:考虑贪心,每 ...
- Codeforces Round #569 (Div. 2) 题解A - Alex and a Rhombus+B - Nick and Array+C - Valeriy and Dequ+D - Tolik and His Uncle
A. Alex and a Rhombus time limit per test1 second memory limit per test256 megabytes inputstandard i ...
- jenkins git项目clean before checkout 和 wipe out repository & force clone
clean before checkout:会先执行一遍git clone,删除一些untracked文件和目录,比如删除上一次打包编译产生的文件 wipe out repository & ...
- 写api接口神器--带你5分钟了解swagger
随着互联网技术的发展,现在的网站架构基本都由原来的后端渲染,变成了:前端渲染.先后端分离的形态,而且前端技术和后端技术在各自的道路上越走越远. 前端和后端的唯一联系,变成了API接口:API文档变成了 ...
- jquery编写插件(转)
教你开发jQuery插件(转) 阅读目录 基本方法 支持链式调用 让插件接收参数 面向对象的插件开发 关于命名空间 关于变量定义及命名 压缩的好处 工具 GitHub Service Hook 原 ...
- (容量超大)or(容量及价值)超大背包问题 ( 折半枚举 || 改变 dp 意义 )
题意 : 以下两个问题的物品都只能取有且只有一次 ① 给你 N 个物品,所有物品的价值总和不会超过 5000, 单个物品的价格就可达 10^10 ,背包容量为 B ② 给你 N (N ≤ 40 ) 个 ...
- 【RabbitMQ】Centos7安装RabbitMQ
介绍 RabbitMQ 是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.它遵循Mozilla Public License开源协议,采用 Erlang 实现的工业级的消息队列(MQ)服务 ...
- 【BZOJ1521】Est(单调队列优化DP)
题意:From https://www.cnblogs.com/CXCXCXC/p/4725249.html 思路:本身就两维状态了,把问题关键s[i][j]写成二维比一维好写多了 #include& ...
- ES的聚合操作
构建数据: @Test public void createIndex(){ /** * 创建索引 * */ client. ...
- SQL 批量修改一个字段的值为另一个字段的值
AND create_time BETWEEN '2016-07-25 14:30:00' AND '2016-07-25 15:20:28'; AND create_time BETWEEN '20 ...