一、介绍:

定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。

局部变量意思就是在局部生效的,出了这个变量的作用域,这个变量就失效了

全局变量的意思就是在整个程序里面都生效的,在程序最前面定义的都是全局变量,全局变量如果要在函数中修改的话,需要加global关键字声明,如果是list、字典和集合的话,则不需要加global关键字,直接就可以修改。

局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中

备注:全局变量少用,有点儿不安全(每个函数都能改),全局变量占内存,一直到最后

实例1-局部变量

name = '小黑' #全局变量,其他函数都可以用
def get_name():
name = '小白' #局部变量
print(name)
get_name()

输出:

小白

实例2-函数找不到变量时,到外面找

name = '小黑' #全局变量,其他函数都可以用
def get_name():
# name = '小白' #局部变量
print(name)
get_name() #调用函数,找不到name时,到外面找name变量

输出:

小黑

实例3:-函数内改变全局变量,需要加global关键字声明(str ,int,元组都要声明下),如果是list、字典和集合的话,则不需要加global关键字

name = '小黑' #全局变量,你在哪个函数里面都可以用
names = []
def get_name():
global name #声明
names.append('hahhah') #字典和列表不需要声明,可直接修改.#str int 元组,需要声明
name = '小白' #自己函数连找不到变量,去外面找。
print('函数里面的name',name)
def get_name2():
print('get_name2',name)
get_name2() #函数不调用,代码不被执行,不然函数仅仅是定义,只有定义,才能生效
get_name()
print('函数外面的name', name)

输出:

get_name2 小黑
函数里面的name 小白
函数外面的name 小白

习题1:

money = 500
def test(consume):
return money - consume #前面money找全局变量,后面传过来的也是500
def test1(money):
return test(money) + money
money = test1(money)
print(money)

习题2:

def test():
global a
a = 5
def test1():
c = a + 5
return c
# test()
res = test1() #函数不调用,不执行
print(res)

day4_局部变量和全局变量的更多相关文章

  1. [Sass]局部变量和全局变量

    [Sass]局部变量和全局变量 Sass 中变量的作用域在过去几年已经发生了一些改变.直到最近,规则集和其他范围内声明变量的作用域才默认为本地.如果已经存在同名的全局变量,从 3.4 版本开始,Sas ...

  2. js方法入参或局部变量和全局变量重名,用来赋值全局变量会失败

    今天遇到个bug,最后终于知道原因了,js方法入参和全局变量重名,用入参赋值全局变量失败,就是说方法入参不能和全局变量重名. 现在下面的例子也说明,局部变量和全局变量不可以同名不光是入参,只要同名赋值 ...

  3. JavaScript局部变量和全局变量的理解

    原文链接:http://www.cnblogs.com/eric-qin/p/4166552.html JavaScript局部变量和全局变量的理解   1 2 3 4 5 6 7 8 9 10 &l ...

  4. 【C语言】C语言局部变量和全局变量

    目录: [局部变量] · 定义 · 作用域 · 生命周期 · 用static修饰局部变量 [全局变量] · 定义 · 作用域 · 生命周期 1.局部变量 · 定义 在函数(代码块)内部定义的变量称为局 ...

  5. JavaScript中局部变量与全局变量的不同

    JavaScript中局部变量与全局变量 我们知道,JavaScript的变量是松散型的变量,也就是说,其变量只需用var声明,其赋值的类型是不限定的.比如: var person=18; perso ...

  6. 理解LoadRunner中的局部变量和全局变量

    在C语言中,变量有效性的范围称变量的作用域.不仅对于形参变量,C语言中所有的量都有自己的作用域,按作用域范围不同,可分为局部变量和全局变量两种变量类型. 在LoadRunner中应用全局变量和局部变量 ...

  7. C语言局部变量和全局变量问题汇总

    1.局部变量能否和全局变量重名? 答:能,局部会屏蔽全局.要用全局变量,需要使用"::" 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变 ...

  8. C语言入门(9)——局部变量与全局变量

    变量有效性的范围称变量的作用域.C语言中所有的量都有自己的作用域.变量说明的方式不同,其作用域也不同. C语言中的变量,按作用域范围可分为两种,即局部变量和全局变量.   局部变量 局部变量也称为内部 ...

  9. javascript 局部变量和全局变量

    刚开始学js,遇到了一个奇怪的问题,查找之后知道了答案 需要记住两句话 1 Javascript的变量的scope是根据方法块来划分的(也就是说以function的一对大括号{ }来划分).切记,是f ...

随机推荐

  1. P Invoke struct结构

    一.获取Struct CHCNetSDK.NET_DVR_PTZPOS pos = new CameraTest.CHCNetSDK.NET_DVR_PTZPOS(); int size = Mars ...

  2. go-ehtereum编译:

    git clone https://github.com/ethereum/go-ethereum.git cd go-ethereum && git checkout make ge ...

  3. Django-jet自定义菜单

    Django-jet自定义菜单:并且可设置权限.https://jet.readthedocs.io/en/latest/config_file.html#custom-menu

  4. springmvc(二) ssm框架整合的各种配置

    ssm:springmvc.spring.mybatis这三个框架的整合,有耐心一步步走. --WH 一.SSM框架整合 1.1.整合思路 从底层整合起,也就是先整合mybatis与spring,然后 ...

  5. MySql 三大知识点——索引、锁、事务

    1. 索引 索引,类似书籍的目录,可以根据目录的某个页码立即找到对应的内容. 索引的优点:1. 天生排序.2. 快速查找.索引的缺点:1. 占用空间.2. 降低更新表的速度. 注意点:小表使用全表扫描 ...

  6. easyui中combobox 取值

    <input id="cmbstrTrainType" class="easyui-combobox" name="cmbstrTrainTyp ...

  7. Content of "Essential Software Test Design"

    Content of "Essential Software Test Design" 2015-11-16 PART I 7 TEST DESIGN TECHNIQUES: AN ...

  8. mac中安装lua5.1.5

    lua有一个工具lua-releng( https://github.com/openresty/openresty-devel-utils/blob/master/lua-releng) 用来检测代 ...

  9. nginx+lua的基本原理概念介绍

    一. 概述 Nginx是一个高性能,支持高并发的,轻量级的web服务器.目前,Apache依然web服务器中的老大,但是在全球前1000大的web服务器中,Nginx的份额为22.4%.Nginx采用 ...

  10. msm audio machine 代码跟踪

    sound/soc/msm/msm8952.c // 注册平台设备 static int __init msm8952_machine_init(void) { return platform_dri ...