可以把作用域”看成是变量的容器。当作用域被销毁时,所有保存在该作用 域内的变量的值就被丢弃了,只有一个全局作用域,它是在程序开始时创建的。如 果程序终止,全局作用域就被销毁,它的所有变量就被丢弃了。

一个函数被调用时,就创建了一个局部作用域。在这个函数内赋值的所有变量, 存在于该局部作用域内。该函数返回时,这个局部作用域就被销毁了,这些变量就 丢失了。下次调用这个函数,局部变量不会记得该函数上次被调用时它们保存的值。

一、局部作用域

(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函数-作用域的更多相关文章

  1. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  2. python函数作用域,嵌套函数,闭包

    函数作用域                                                                                                ...

  3. python函数作用域LEGB

    我们的在学习Python函数的时候,经常会遇到很多定义域的问题,全部变量,内部变量,内部嵌入的函数,等等,Python是如何查找的呢?以及Python又是按照什么顺序来查找的呢?这里做一个顺序的说明 ...

  4. python函数作用域

    python中函数作用域 在python中,一个函数就是一个作用域 name = 'xiaoyafei' def change_name(): name = '肖亚飞' print('在change_ ...

  5. python函数作用域,闭包,装饰器

    第一:函数作用域: L:local 函数内部作用域 E:enclosing       函数内部与内嵌函数之间(闭包) G:global            全局作用域 B:build_in    ...

  6. 07.python函数作用域global、nonlocal、LEGB

    函数作用域 作用域 一个标识符的课件范围,这就是标识符的作用域,一般常说的是变量的作用域 def foo():    x = 100 print(x) # 可以访问到吗 上例中x不可以访问到,会抛出异 ...

  7. Python函数作用域和匿名函数

    匿名函数的定义 全局变量和局部变量的概念 global(全局变量)和 nonlocal(局部变量) 闭包.递归.回调 匿名函数 匿名函数  lambda 语法规则:lambda   参数 : 表达式 ...

  8. Python——函数&作用域

    我们前面学的都是面向过程式的编程(代码从上到下写,并运行),而函数式编程是将繁杂的代码通过整理特性进行规整.像图书馆一样,将小说.教学.外文等书籍进行分类.让编程人员或看代码人员很容易的查看该段代码的 ...

  9. python函数 -- 作用域,异常处理

    1.def语句和参数 python定义函数的关键词为def,格式如下: def 函数名([变元],[变元],....)          #保存在变元中的值,在函数返回后该变元就会被销毁了. 2.返回 ...

随机推荐

  1. 10年前文章_fedora10root登录

    fedora10系统root用户登录以及普通用户使用sudo命令1.问题:fedora10默认不能够直接用root用户登录解决方法:我们可以先以普通用户登录$su#vi /etc/pam.d/gdm删 ...

  2. larval 使用redis做缓存

    1.存redis 使用setex命令可以同时设置数据和保存时间 $data = [ 'name'=>zhangsan, 'age' => 28, 'sex' => 1 ]; Redi ...

  3. DevExpress 2019 .NET产品现已完全支持Visual Studio 2019

    [DevExpress v18.2.8最新版免费下载] 我们非常高兴地跟宣布DevExpress .NET产品现已完全支持Visual Studio 2019.如果您是DevExpress忠实用户,可 ...

  4. python 文件夹下文件及文件夹名称获取

    import os dirct = 'D:/data' dirList=[] fileList=[] files=os.listdir(dirct) #文件夹下所有目录的列表 print('files ...

  5. vue2.0发布

    http://blog.csdn.net/xuefeiliuyuxiu/article/details/78970815

  6. 包、time、datetime、hashlib和hmac、request、re

    目录 包 包的特点 time模块 datetime模块 hashlib模块和hmac模块 hmac密钥(加盐) typing模块 request模块 正则模块 以下必须得记住 哪些做了解 包 包,这里 ...

  7. day02记

    一.Tomcat搭建 1.service和controller分别搭建独立的Tomcat且port不一致 2.部署项目选择带有exploded的 3.运行时应先启动service再启动controll ...

  8. Kibana后台进程启动和关闭

    原创转载请注明出处:https://www.cnblogs.com/agilestyle/p/12073202.html 后台启动Kibana ./bin/kibana & 查找Kibana进 ...

  9. JConsole和VisualVM远程访问JMX

    1.jvisualvm监控tomcat 修改tomcat的bin目录下的 catalina.sh文件,搜索JAVA_OPTS="",在引号中添加参数 JAVA_OPTS=" ...

  10. 【leetcode】540. Single Element in a Sorted Array

    题目如下: 解题思路:题目要求时间复杂度是O(logN),可以尝试使用二分查找法.首先数组是有序的,而且仅有一个元素出现一次,其余均为两次.我们可以先找到数组最中间的元素,记为mid.如果mid和mi ...