变量作用区域

变量器作用的额代码范围称为变量的作用与,不同作用区域之间互不影响,函数每部定义的变量一般为局部变量,而不属于任何函数的变量一般为全局变量。所以我们在这里按变量的作用区域分为两类,全局变量和局部变量。

局部变量:在某个函数内部定义,作用在函数内部。生命周期:从变量被创建开始到函数结束死亡。
全局变量:定义在.py模块内部,作用在整个.py模块。生命周期:从变量被创造开始到.py模块结束死亡。

案例1:

def Demo1():
num = 1
print(num) Demo1()
print(num) """
因为num是局部作用,所以在函数外面是找不到num这个变量的,
所以程序会报错:NameError: name 'num' is not defined
"""

  

案例2:

num = 0

def Demo1():
num = 1
print("在demo1中的结果:",num) def Demo2(): print("在demo2中的结果:",num) Demo1()
Demo2() print("在函数外面中的结果:",num)
"""
运行结果为:
在demo1中的结果: 1
在demo2中的结果: 0
在函数外面中的结果: 0
分析:
从结果可以看出,我们在demo1中num = 1,只在demo1内部起作用,而全局变量num仍然是0;因为在python中,在函数内部改变全局变量的值,会默认的在函数内部创建一个新的变量,全局变量并没有改变。要想要改变全局变量的值,需要在函数内部用global声明。 """
#修改上面如下
num = 0 def Demo1():
global num
num = 1
print("在demo1中的结果:",num) def Demo2(): print("在demo2中的结果:",num) Demo1()
Demo2() print("在函数外面中的结果:",num)
""'
运行结果为:
在demo1中的结果: 1
在demo2中的结果: 1
在函数外面中的结果: 1
"""

  

 案例3: 还有一种情况是当全局变量是可变数据类形,我们可以通过修改可变数据类型的方法,修改可变类型的内容,从而实现修改全局变量。(这里因为可变数据类型改变时,会在内存中改变数据的值)

num_list = [1,2,3]

def Demo1(demo1_list):
demo1_list.append(4)
print("在demo1中的结果:",demo1_list) def Demo2(): print("在demo2中的结果:",num_list) Demo1(num_list)
Demo2() print("在函数外面中的结果:",num_list) """
运行结果:
在demo1中的结果: [1, 2, 3, 4]
在demo2中的结果: [1, 2, 3, 4]
在函数外面中的结果: [1, 2, 3, 4]
"""

  

案例4:列表 += 与 + 的区别

+
num_list = [1,2,3] def Demo1(demo1_list):
demo1_list = demo1_list + [4,5,6]
print("在demo1中的结果:",demo1_list) def Demo2(): print("在demo2中的结果:",num_list) Demo1(num_list)
Demo2() print("在函数外面中的结果:",num_list)
执行结果:
在demo1中的结果: [1, 2, 3, 4, 5, 6]
在demo2中的结果: [1, 2, 3]
在函数外面中的结果: [1, 2, 3] +=:
num_list = [1,2,3] def Demo1(demo1_list):
demo1_list += [4,5,6]
print("在demo1中的结果:",demo1_list) def Demo2(): print("在demo2中的结果:",num_list) Demo1(num_list)
Demo2() print("在函数外面中的结果:",num_list)
结果:
在demo1中的结果: [1, 2, 3, 4, 5, 6]
在demo2中的结果: [1, 2, 3, 4, 5, 6]
在函数外面中的结果: [1, 2, 3, 4, 5, 6]  

因为:
对于+号操作,可变对象和不可变对象调用的都是__add__操作

对于+=号操作,可变对象调用__add__,不可变对象调用的是__iadd__(不可变对象没有__iadd__) __iadd__是原地修改。

python基础 — 局部变量/全局变量的更多相关文章

  1. python - 基础局部变量和全局变量

    python中全局变量和局部变量的最大区别在于局部变量只能通过函数去访问,而全局变量可以直接访问 首先我们来看下什么是全局变量和局部变量 全局变量:在函数之外定义的变量,所有函数内可以调用这个全局变量 ...

  2. python基础--局部变量与全局变量

    #全局变量作用于全局或整个程序中,程序执行完毕后销毁,局部变量作用在当前函数中,调用函数执行完毕及销毁 #如果函数的内容无global关键字,优先读取同名局部变量,如果没有同名局部变量,只能读取同名全 ...

  3. python基础局部变量、全局变量

    局部变量的作用域只作用与当前函数块(或代码块)中,对函数块(或代码块)之外的重名变量,没有任何影响. 在函数块(或代码块)中,局部变量可用通过global关键字声明变量来改变在函数块(或代码块)之外对 ...

  4. python基础:函数传参、全局变量、局部变量、内置函数、匿名函数、递归、os模块、time模块

    ---恢复内容开始--- 一.函数相关: 1.1位置参数: ef hello(name,sex,county='china'): pass #hello('hh','nv') #位置参数.默认参数 1 ...

  5. Python 基础之返回值与函数使用与局部变量和全局变量locals() 和 globals()

    一.函数的返回值 return return: 自定义返回值,返回到哪里? 返回到函数的[调用处]1.return 后面可以跟上六个标准数据类型,除此之外,可以跟上 类对象,函数,如果不写return ...

  6. python基础五(函数、全局变量和局部变量)

    一.全局变量和局部变量 全局变量,即可以在当前文件所有地方都可使用的变量,一次修改,整个文件都影响.如果函数体内部使用全局变量,要先声明global 局部变量,只能在函数体内部使用,除了函数体就不可使 ...

  7. 第十二篇 Python函数之全局变量&局部变量&递归函数

    全局变量:在定义的时候,顶头写的,没有任何缩进的变量就是全局变量. 全局变量的特点:在当前文件里的任何地方都可以进行调用 局部变量:在子程序里定义的变量,就是局部变量. 子程序:比如.py文件里,写的 ...

  8. 进击的Python【第三章】:Python基础(三)

    Python基础(三) 本章内容 集合的概念与操作 文件的操作 函数的特点与用法 参数与局部变量 return返回值的概念 递归的基本含义 函数式编程介绍 高阶函数的概念 一.集合的概念与操作 集合( ...

  9. Python自动化 【第七篇】:Python基础-面向对象高级语法、异常处理、Scoket开发基础

    本节内容: 1.     面向对象高级语法部分 1.1   静态方法.类方法.属性方法 1.2   类的特殊方法 1.3   反射 2.     异常处理 3.     Socket开发基础 1.   ...

随机推荐

  1. LOJ P10013 曲线 题解

    每日一题 day38 打卡 Analysis 这道题运用的是三分,就是说具有一定的单调性,找最大最小值,然后和二分基本类似,就是说特性就是说当前两个点比较,较优的点和最优点在相对了较差点的同侧,就是说 ...

  2. Ps回调函数.拦截驱动模块原理+实现.

    目录 一丶简介 二丶原理 1.原理 2.代码实现 3.效果 一丶简介 主要是讲解.内核中如何拦截模块加载的. 需要熟悉.内核回调的设置 PE知识. ShellCode 二丶原理 1.原理 原理是通过回 ...

  3. 第08组 团队Git现场编程实战

    一.组员职责分工 算法:庄锡荣,林鑫灿 UI:许煌标,蔡峰,林晓锋,陈珊珊,侯雅倩,吴珂雨 博客:陈珊珊,王钟贤 二.github提交日志 三.程序运行截图 运行中爬取到的部分信息 数据库中的部分信息 ...

  4. Luogu3379 【模板】最近公共祖先(LCA)

    题面 题解 这里讲一种硬核做法. 首先\(\mathrm{dfs}\)整棵树,求出这棵树的欧拉序,然后\(\mathrm{LCA}\)问题就变成了\(\pm 1\mathrm{RMQ}\)问题. 考虑 ...

  5. 【2019.11.06】SDN上机第2次作业

    参考资料网址:https://www.cnblogs.com/TITIN24/p/11794970.html 利用mininet创建如下拓扑 要求拓扑支持OpenFlow 1.3协议,主机名.交换机名 ...

  6. 微信小程序之如何定义页面标题

    效果图: 这个标题是在哪里定义的呢?type.js核心代码如下(通常这段代码放在onLoad函数体内): wx.setNavigationBarTitle({ title: "支出类型列表& ...

  7. LOL佐伊官方手办

      花199元在某宝上买的官方正版佐伊手办终于到了,话不多说直接上图!   虽然脸有点不切实际的大,但还是很可爱~

  8. 案例:使用BeautifuSoup4的爬虫

    使用BeautifuSoup4解析器,将招聘网页上的招聘单位名称存储出来.其他信息可类似爬取即可 # -*- coding:utf-8 -*- from bs4 import BeautifulSou ...

  9. [转]图片Premultiplied Alpha到底是干嘛用的

    Premultiplied Alpha 这个概念做游戏开发的人都不会不知道.Xcode 的工程选项里有一项 Compress PNG Files,会对 PNG 进行 Premultiplied Alp ...

  10. Excel统计发票和金税盘核对新版

    之前的博文:如何使用Excel表格状态栏动态查看统计,介绍了如何利用excel一拉就可以进行统计,和金税盘的月度统计统计.由于最近年月日显示成方框,所以作废了发票和对冲了上月的一张发票,导致这个月出现 ...