python中locals函数_Python神奇的内置函数locals的实例讲解

摘要

本文我们介绍神奇的locals函数,包括动态创建变量和动态访问变量,以及一个应用场景。

相同属性不相邻问题

需求:有两个list,分别为list1和list2。list1中有n个对象,每个对象有5个属性,其中一个属性是tid,要求list1按tid排序,相邻的对象的tid不能重复,m为不重复的tid数量,m不确定。list2存放的是所有可能出现的tid的情况。

list1 = [task1,task2,task3…taskn]

list2 = [tid1,tid2,tid3…tidm] (m

神奇的local函数

python语言很好的帮我们解决了这个问题:利用locals内置函数动态创建变量。

locals函数在这里的作用:

- 1、根据传递的参数动态创建变量

- 2、根据传递的参数动态访问变量

demo

def apart_program_by_task(list1,list2):

list_all_pro = []

#动态创建m个list,命名为'list'+str(tidm)

for i in list2:

locals()['list'+str(i)] = []

#拿到每个对象,获取其tid的值,通过拼接变量名访问对应的list,并把该对象加入该list

for i in list1:

locals()['list'+str(i.tid)].append(i)

#循环访问m个list的每个list的头元素,并删除,然后加入list_all_pro

while 1:

flag = False

for i in list2:

try:

pro = locals()['lst'+str(i)].pop()

list_all_pro.append(pro)

flag = True

except:

pass

if flag == False:

break

return list_all_pro

这个demo中,我们可以很灵活的根据list2的长度动态创建len(list2)个list,然后根据拼接变量名访问每个list,从而做到按tid归类。

在回收所有的list时,我们也是通过拼接变量名挨个访问每个list一次,取到头元素加入新的list,来保证新的list中的相邻对象的tid不相同。

更多

为什么locals函数可以动态创建和访问变量,这里我们必须先介绍python的命名空间。

局部命名空间local:每个函数自己的命名空间,记录函数的参数和局部变量。

全局命名空间global:每个模块自己的命名空间,记录了函数、类、导入的模块的变量以及常量。

命令空间创建顺序:

python解释器启动 ->创建内建命名空间 -> 加载模块 -> 创建全局命名空间 ->函数被调用 ->创建局部命名空间

而locals的作用,就是以字典的形式,返回当前函数内变量名和变量值,比如:

def func(a = 1):

b = 2

print(locals())

return a+b

func() # {'b': 2, 'a': 1}

这就可以解释动态访问变量的原理了,就像访问字典一样,比如我们要根据key访问字典的值,只需要

dict = {'b': 2, 'a': 1}

print(dict["b"])

所以,locals()[变量名]即可动态访问当前函数内的变量名,而locals()[“list101”] = [] 也可以动态创建数组,等价于 list101 = []

但是locals只能访问所在函数内部的变量,且不可修改,要访问全局变量or修改,则需要使用globals函数。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对我们的支持。如果你想了解更多相关内容请查看下面相关链接

本文标题: Python神奇的内置函数locals的实例讲解

本文地址: http://www.cppcns.com/jiaoben/python/253036.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/507057.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微型计算机继电器控制,可编程控制器与微机及继电器控制的区别 -解决方案-华强电子网...

1. PC与MC控制的区别简而言之,MC是通用的专用机,而PC则是专用的通用机。从微型计算机的应用范围来说,MC是通用机,而PC是专用机。微型计算机是在以往计算机与大规模集成电路的基础上发展起来的,它最大特征是运算速度快&…

vue点击按钮上传图片_关于javascript:Vue-点击按钮提交表单

我有一个组件,用户可以在其中上传图像,我还想添加一个删除图像的功能。 我添加了一个按钮,该按钮可删除当前图像,但是它的问题在于表单也正在提交,因此我想避免这种情况。 我只需要删除当前图像(如果存在)。 这是脚本&…

计算机与自动化专业有哪些学校,全国自动化专业大学排名

自动化专业大学排名已经公布啦,下面由出国留学网小编为你精心准备了“2020自动化专业大学排名公布”,持续关注本站将可以持续获取更多的考试资讯!2020自动化专业大学排名公布自动化专业最好的大学有哪几所,中国哪些本科大学自动化专业实力最强…

黑苹果uhd630黑屏_求助各位图吧大佬一个黑苹果问题(黑苹果吧发帖得四级),目前使...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼以下是换回auto重启之后系统给的报错信息:panic(cpu 5 caller 0xffffff7f9fc4272f): assertmsg/Library/Caches/com.apple.xbs/Sources/ GPUDriversIntel/GPUDriversIntel-14.7.8/IONDRV/CFL/AppleIntelFramebuffer/ 网…

南京理工大学计算机学院教授严捍,2019年7月1日学术报告二则(宋巍 教授,南京理工大学;张鹏程 副教授,河海大学)...

报告题目1:过程分析与挖掘报告时间:2019年7月1日(周一)上午9:30报告地点:计算机学院E202报告人:宋巍报告人单位:南京理工大学报告人简介:宋巍,南京理工大学计算机科学与工程学院教授、博士生导师…

用友无法打开计算机的ufnet服务,服务器安装完毕登陆正常,但是客户端安装完毕,重启以后,用友通无法正常启动,手工在服务里面启动,提示‘服务无法启动或依存的标记被删除’...

问题现象:服务器安装完毕登陆正常,但是客户端安装完毕,重启以后,用友用友T3服务无法正常启动,手工在服务里面启动,提示‘服务无法启动或依存的标记被删除’问题模块:系统环境关键字:…

分号与逗号的区别及举例_如何掌握分号的用法 和顿号有什么区别

如何掌握分号的用法 和顿号有什么区别2019-03-08 15:57:09文/李男考试中作文成绩因为标点符号丢分的情况时有发生,看到这样丢分的情况,令人叹息。下面小编整理了一些关于分号的用法,供大家参考!分号的用法有哪些下列几种情况使用分号①用在复…

poi获取段落位置_apache poi word提取段落

本文概述要提取段落文本,我们使用XWPFDocument类的getParagraphs()方法。此方法返回文档所有段落的列表,这些列表可以存储在列表变量中并通过迭代循环获取。让我们看一个使用Java程序提取段落的示例。Apache POI提取段落示例package poiexample;import j…

计算机校本培训心得,个人校本培训心得体会3篇

校本培训是与学校、教师的实际紧密结合,以提高教师的师德修养和教育教学的实践能力为基本目标。下面是学习啦带来的个人校本培训心得体会,仅供参考。个人校本培训心得体会一:转眼间本学期已到尾声,回顾在本学期校本培训期间&#…

python中dict转换成list_python里dict变成list实例方法

python里dict(字典)怎么变成list(列表)?说明:列表不可以转换为字典1、转换后的列表为无序列表a {a : 1, b: 2, c : 3}#字典中的key转换为列表key_value list(a.keys())print(字典中的key转换为列表:, key_value)#字典中的value转换为列表value_list …

高中发表在论文计算机方面,高中计算机教学论文

高中计算机教学论文引导语:人们的生活已经离不开计算机,计算机已走进千家万户,由此可见学好计算机是一件非常重要的事情,那么相关的高职计算机教学论文要怎么写呢?接下来是小编为你带来收集整理的文章,欢迎…

android 代码设置居右_Android 开发实现EditText 光标居右显示

Android 开发实现EditText 光标居右显示前言:有些时候肯定会遇到这种奇葩的需求,光标要靠右显示,因为Android里面光标默认是靠左显示的,那怎么实现呢,肯定有办法的,这里提供一种实现方式,看布局…

计算机控制lc72131,lc72131(1)

----------------------- Page 1-----------------------LC72131锁相环频率合成器概述与特点LC72131 是一种锁相环频率合成器。该电路的特点如下:1.高速可编程分频器FMIN: 10--160MHz……………双模式预分频(内置二分频器)AMIN: 2--40MHz ……………双模…

jupyter ipython display_IPythonJupyter私房手册

Jupyter是以Ipython为基础,可以极大的方便开发,对于如何使用,网上的资料都不太全。因此决定自己编写一个私房手册方便随时查找。1. 安装和配置安装不多说,不想折腾直接安装anaconda包,集成了Jupyter和Ipython。主要说说…

计算机一级b考试教程,全国计算机等级考试一级B教程

第一章 计算机基础知识1.1 概述1.1.1 什么是计算机1.1.2 计算机的发展概况1.1.3 计算机的应用领域1.1.4 计算机的应用领域1.2 计算机中的数与编码1.2.1 二进制的基本概念1.2.2 编码1.3 计算机程序设计语言1.3.1 机器语言1.3.2 汇编语言1.3.3 高级语言1.4 计算机的…

keepalived mysql双主架构图_MySQL双机热备(keepalived+mysql双主)

科普描述双机热备是指两台机器都在运行,但并不是两台机器都同时在提供服务。当提供服务的一台出现故障的时候,另外一台会马上自动接管并且提供服务,而且切换的时间非常短。MySQL双主复制,即互为Master-Slave(只有一个Master提供写…

做手游的计算机配置要求,原神pc配置要求高吗 最低什么配置能流畅运行​

从最新消息来看,《原神》将于9月15日开启PC版技术开放性测试,是面向所有玩家的,不删档,本质上你就可以将其理解为正式上线了。原神是一款多平台、多数据互通的游戏。但显而易见的是PC版的原神拥有更高的画质和游戏性能&#xff0c…

HTML入门小站,Phaser

入门教程,我可不会讲什么概念,我只会讲一个入门例子,通过这个例子,你就知道phaser有多么强大,而照着这个例子做,你就能知道怎么使用phaser了。需要说明的是,这个就是phaser官方的一个入门的案例…

h2 可视化界面能添加 添加表_Excel只能做表格?那是你不会用!10分钟做出高大上可视化图...

很多公司都要求员工熟练的掌握Excel。But,绝大多数人所谓的熟练使用Excel,估计也只会一些简单的表格和知道加减乘除、求和吧!再难一点,估计就真的把自己难倒了。讲真,Excel还是很牛的,只是你不会&#xff0…

戴尔电脑怎么安装一级计算机,手把手教你戴尔笔记本电脑重装系统教程

随着生活质量的提高,现今基本上人人都拥有一台专属于自己的笔记本电脑。但要是说起笔记本,那dell笔记本可是一个不错的品牌呢?所以小编今天要给大家说的知识点就是关于Dell笔记本怎么重装系统的内容。有兴趣的可以学起来哦!最近小编发现有小…