第5.4节 Python函数中的变量及作用域

Python变量的作用域 在编写Python程序时,了解作用域的规则和注意事项对于编写清晰、可维护的代码至关重要。作用域决定了变量的可见性和访问权限,合理地使用作用域可以避免变量命名冲突,提高代码的可读性和可维护性。作用域决定了变量的可见性和访问权限,理解作用域对于编写可靠的程序至关重要。在上述代码中,我们在函数内部定义了变量y,它具有局部作用域,只能在函数内部被访问。在上述代码中,我们使用了Python内置的print函数和内置模块math中的常量pi,在嵌套的函数中,可以访问外部函数定义的变量。 阅读详情

一、函数中的变量使用规则

  1. 函数执行时,使用的全局空间是调用方的全局空间,参数及函数使用的局部变量存储在函数单独的局部名字空间内;
  2. 函数的形参在函数中修改了值时,并不影响调用方本身的数据,但如果形参是一个可变类型的容器,在函数中修改了容器中的元素,则该修改会影响到调用方的数据;
  3. 函数中的变量,既可以使用局部变量(本地名字空间的变量),也可以使用全局变量(全局名字空间的变量),函数在执行查找变量只读时,先在局部变量中查找,找不到再查到全局变量中查找。因此当局部变量和全局变量中有相同名字的变量时,函数使用的就是局部变量,只有当局部变量没有对应变量才会使用全局变量。一般情况下,函数只应该操作局部变量,不操作全局变量,只有特殊情况下才访问全局变量;
  4. 在函数内部给变量赋值且该赋值表达式中包含该变量(如x=x+1)时,该变量默认为局部变量,除非你明确地告诉Python它是全局变量或非局部变量,如果函数中没有定义要使用的变量为局部变量,又没有进行全局变量或非局部变量的声明,则Python会认为函数没有对应变量的定义和赋值,所以报错。

二、函数中对全局变量赋值的方法

1、使用global声明变量为全局变量,就是在使用前,使用语法:

global 全局变量名

然后象使用局部变量一样该变量。

2、对全局空间的字典键-值访问方式直接操作全局变量,使用前先通过globals()函数获取全局名字空间,再通过字典的键-值方式访问。举例:

#函数定义
def f(x):
	g,l=globals(),locals() #取函数的全局空间和局部空间
	g['x']=x*100  #修改全局空间变量x的值为局部变量x的值*100
	     return g,l
	   #调用方代码
	    x=1  #调用方x赋值
	    g1,l1=f(x)  #返回函数的全局空间g1和局部空间l1,执行后x变成了100
	    g,l=globals(),locals()  #取调用方的全局空间g和局部空间l
实际上g、g1、l是同一个对象,用is判断返回为True,但l1则不同。

3、将该全局变量存放到一个类似如列表的容器中,然后将该容器作为形参传递给函数,在函数中对容器的元素直接赋值。

三、nonlocal变量

      函数中的变量除局部变量和全局变量外,还有一种变量为非本地变量,使用nonlocal来进行声明,但nonlocal关键字只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误。在此只是简单引出,使用也比较简单,不进行详细介绍。

 

    老猿Python(https://blog.youkuaiyun.com/LaoYuanPython)系列文章用于逐步介绍老猿学习Python后总结的学习经验,这些经验有助于没有接触过Python的程序员可以很容易地进入Python的世界。

AIDD机器学习深度学习药物发现与设计教程总结 AIDD(AI Drug Discovery & Design):是近年来非常火热的技术应用,且已经介入到新药设计到研发的大部分环节当中,为新药发现与开发带来了极大的助力。倾向于机器对数据库信息的自我学习,可以对数据进行提取和学习,一定程度上避免了化合物设计过程中的试错路径,同时还会带来很多全新的结构,为药物发现打破常规的结构壁垒。覆盖了机器学习和深度学习,能与新药研发相结合并实质性的应用到靶点预测、高通量筛选、药物设计、药物的ADMET性质预测等;且算力方面,由早期应用于药物发现领域的决策树、随机 阅读详情

相关推荐

Android布局基础与UI设计入门:打造精美应用界面

恭喜你!现在你已经掌握了Android UI开发的基础知识,包括各种布局类型、常用控件的使用以及一些UI优化技巧。这些知识将帮助你设计出既美观又实用的Android应用界面。

m0_65382359的博客 2056

python变量的作用_Python中的变量

Python中的变量是用来表示一个值的标识符。变量代表了计算机内存中的一个地址。变量允许在程序中访问其他对象,调用函数或执行其他运算。1、变量命名规则变量是Python中的标识符,它应该遵循标识符的命名规则。(1)Python中的变量合法的字符包括26个大小写字母[A-Z,a-z],10个阿拉伯数字[0-9]以及下划线(_);(2)Python中的变量须以字母或下划线开始,不能以数字开头;(3)变...

weixin_39815925的博客 1759

AutoCAD2014与ObjectARX开发环境搭建实战指南

本文提供了一份详细的AutoCAD2014与ObjectARX开发环境搭建实战指南。内容涵盖从AutoCAD2014、Visual Studio 2010及ObjectARX 2014 SDK的版本匹配与环境准备,到Wizard安装、编码问题解决、Visual Studio配置,并最终通过一个完整的绘图命令开发示例,手把手引导开发者创建并加载第一个可运行的ObjectARX插件,为后续深入开发奠定坚实基础。

weixin_28475533的博客 286

如何理解python中的变量?包含产生原因,作用,特点,使用方法

定义变量的数据类型:变量的数据类型决定了变量所能存储的最大值和最小值,以及变量的精度和范围。使用变量:当我们需要使用变量时,我们需要将变量的值赋值给一个变量。使用变量的副作用:当我们需要使用变量的副作用时,我们需要将变量作为参数传递给函数,然后使用变量来处理副作用。修改变量的值:当我们需要修改变量的值时,我们需要使用赋值运算符。使用变量作为函数参数:当我们需要将一个变量作为函数的参数传递时,我们可以使用。访问变量:当我们需要访问变量的值时,我们需要使用索引运算符。声明变量:在程序开头,我们需要声明变量。

weixin_47964305的博客 1515

MOSFET热失效机理与保护电路设计:实战案例

深入解析MOSFET工作原理及其在高温下的失效机制,结合实际案例探讨有效保护电路设计,提升系统可靠性与安全性。

weixin_28713083的博客 850

学习笔记7--激光雷达标定

本系列博客包括6个专栏,分别为:《自动驾驶技术概览》、《自动驾驶汽车平台技术基础》、《自动驾驶汽车定位技术》、《自动驾驶汽车环境感知》、《自动驾驶汽车决策与控制》、《自动驾驶系统设计及应用》,笔者不是自动驾驶领域的专家,只是一个在探索自动驾驶路上的小白,此系列丛书尚未阅读完,也是边阅读边总结边思考,欢迎各位小伙伴,各位大牛们在评论区给出建议,帮笔者这个小白挑出错误,谢谢! 此专栏是关于《自动驾驶汽车环境感知》书籍的笔记。 2.激光雷达标定 2.1 概述 激光雷达内参标定:内部激光发射器坐标系与雷达本

FUXI_Willard 8026

Python中的函数与变量

如果指定(参数名=值),则按参数名对应传入,例如:add(1,2)、add(x=1,y=2)、add(y=2,x=1)、add(1,y=2),但不支持add(y=2,1)类变量即为定义在类中且在函数体之外的变量,所有类的实例化对象都共享类变量,类变量通常不作为实例变量使用;默认参数必须定义在位置参数之后,传入参数可以按顺序传入,也可以使用(参数名=值)的形式传入。python中函数的基本格式则为:def+函数名+参数名+函数体+返回,python作为一门面向对象的语言,同样可分为类函数、实例函数。

梦里有阳光 1915

《惠普工作站设置BIOS从U盘装系统》

惠普工作站设置BIOS 惠普工作站在做服务器时应用广泛,本文介绍下其BIOS开机自启动设置,附上图片,以供学习参考。 惠普工作站设置BIOS 启动步骤如下: 第一步:根据需要对BIOS进行更改,并保存 1.重启工作站按F10进入BIOS设置(也可以按ESC键选择进入BIOS设置的选项)。 图1 惠普工作站B...

istrangeboy&begin zero的博客 2万+

python之函数(参数,匿名函数,局部变量和全局变量)

对于函数参数,这个地方,刚开始的时候,我根本没有理解到。我也是理解了很久,后面理解了,但是在使用过程中,其实也在出错。所以在这里就专门的总结一下。以上就是平时使用中,容易混淆的地方。这次在这里专门总结出来,目的就是加深记忆。前言。

weixin_45272371的博客 2422

密码学实战:如何利用生日攻击破解哈希函数

本文深入探讨了生日攻击在密码学中的应用及其对哈希函数的威胁。通过分析生日悖论的数学原理,揭示了哈希函数在实际应用中的脆弱性,并提供了防御策略,如升级哈希算法、正确使用加盐技术等。文章结合实战案例,帮助开发者理解如何有效防范此类攻击,确保系统安全。

weixin_42530732的博客 192

迟滞电压比较器电路的原理与计算

迟滞电压比较器是一种具有双阈值特性的电路,通过正反馈机制实现抗噪声干扰功能。文章详细分析了其工作原理,包括同相型和反相型两种结构的电压阈值计算与电阻设计方法,并提供了已知门限求电阻和已知电阻求门限的推导公式。工程应用中需注意输出类型匹配、电阻取值范围、噪声裕量设计等问题。该比较器在信号处理、波形转换等场景中具有重要应用价值,设计时需综合考虑供电电压、参考电压和噪声特性等因素。

硬核科技 2676

Python中的函数与变量讲解

不知道大家在学习Python的时候,有没有发现一个问题,函数里边的变量和脚本里边的变量好像是无关的。本文今天要讲的就是Python中的函数与变量,如果大家对于这个方面的内容有困惑,不妨来一起学习一下这个Python的基础内容。

2201_75362610的博客 261

nicegui 可视化扩展库

总体来说,这段代码使用nicegui库创建了一个具有一些基本UI元素的界面,并使用扩展库来实现更多的布局功能。这段代码使用了nicegui库创建了一个UI界面。函数导入了一个扩展库,用于实现更多的布局功能。然后又使用了一个行布局,并添加了两个按钮(在UI界面中,使用了一个卡片(在行布局中依次添加了一个标签(在卡片中使用了一个头像(接下来使用了一个行布局(设置了背景颜色为绿色。设置了居中对齐和红色。设置了间距和字体大小。设置了居中对齐和样式。设置了按钮的对齐方式。

东方佑 1020

python函数中变量的作用域_第5.4节 Python函数中的变量及作用域

一、函数中的变量使用规则函数执行时,使用的全局空间是调用方的全局空间,参数及函数使用的局部变量存储在函数单独的局部名字空间内;函数的形参在函数中修改了值时,并不影响调用方本身的数据,但如果形参是一个可变类型的容器,在函数中修改了容器中的元素,则该修改会影响到调用方的数据;函数中的变量,既可以使用局部变量(本地名字空间的变量),也可以使用全局变量(全局名字空间的变量),函数在执行查找变量只读时,先在...

weixin_39623411的博客 73

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

python 函数—变量作用域

变量作用域指南

weixin_65289420的博客 1862

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Python 变量作用域

变量作用域(scope)在Python中是一个容易掉坑的地方。 Python的作用域一共有4中,分别是: L (Local) 局部作用域 E (Enclosing) 闭包函数外的函数中 G (Global) 全局作用域 B (Built-in) 内建作用域 以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就

Muge 3万+

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

python作用域,变量作用域

变量作用域 一个程序的所有变量并不是在哪个位置都可以访问的。访问权限取决于这个变量是在哪里赋值的。 变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。 如下为两种最基本的变量的作用域: 全局变量 局部变量 定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。 局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时...

孤独的根号三 3999

Python 变量作用域与函数

Python 变量作用域一个程序的所有的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的,变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称,两种最基本的变量作用域,第一种是局部变量,第二种是全局变量.定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域,而局部变量只能在其被声明的函数内部访问,全局变量则可以在整个程序范围内访问.变量的作用域...

微软技术分享 8684

python中的变量作用域

这几天在工作中需要用python写点小工具,看别人写的代码时有些疑问(平时写c)按照C语言的习惯,my_var 是一个局部变量,打印的时候该变量已经销毁,无法成功运行。但是在上述python代码可以成功运行,简单查阅一下,在此记录一下结果。printlen接下来,我将通过一些代码示例来展示这些不同作用域的变量是如何工作的。

m0_59236602的博客 1047

Python中变量作用域规则详解

前言 作用域是指变量的生效范围,例如本地变量、全局变量描述的就是不同的生效范围。python的变量作用域的规则非常简单,可以说是所有语言中最直观、最容易理解的作用域。 在开始介绍作用域之前,先抛一个问题: x = 1 def f(): x = 3 g() print("f:", x) # 3 def g(): print("g:", x) # 1 ...

float *sword 2584

Python 函数:Python 中变量的作用域

Python 中变量的范围被定义为“某事所处理或与之相关的领域或主题的范围”。在编码世界中,这个定义对于变量也是一样的。通常,变量仅在创建该变量的块中有效,并称为其作用域。变量“scope”是编程中一个非常基本的概念。每个开发人员都知道变量的局部和全局范围,无论其工作语言如何。全局:所有代码都可以访问此范围内定义的名称本地:此范围内定义的名称仅可供声明它的块访问。即在其本地块中。但是,当涉及到 Python 时,情况就有点不同了。

新华编程特战队 1185

Python基础:变量作用域与嵌套函数

本文详细介绍了Python中的变量作用域与嵌套函数的相关概念。

an_yu_xin的博客 1455

Python变量作用域

在程序中定义一个变量时,这个变量是有作用域的,变量的作用范围被称为它的作用域。x = 10 # 局部变量print(x) # 可以访问my_function() # 输出: 10# print(x) # 这里会报错,x在函数外部不可访问在嵌套函数中,内部函数可以访问外部函数的变量。x = "outer" # 嵌套作用域变量print(x) # 可以访问外部函数的变量inner()outer() # 输出: outer在模块级别定义的变量具有全局作用域。

qq_32021001的博客 1526

python变量的作用域

作用域又可以被称为命名空间,指变量起作用的范围。Python变量作用域可以分为四种,分别为局部作用域、嵌套作用域、全局作用域、内置作用域。 作用域 英文 简写 局部作用域 Local L 嵌套作用域 Enclosed E 全局作用域 Global G 内置作用域 Built-in B 四种作用域中变量的调用顺序采取“就近原则”,即为 LEGB 局部作用域 指某个函数...

菜鸟的博客 1911
上一篇: 第5.3节 详说Python风格的函数分配参数
下一篇: 第5.5节 函数递归、嵌套及样例
LaoYuanPython
LaoYuanPython 2020年博客之星Top3 2020年博客之星Top3 领域专家: Python技术领域 领域专家: Python技术领域
博客等级 码龄8年 15万+粉丝 1324原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

LaoYuanPython

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值