1. is 比较的是两个实例对象是不是完全相同,它们是不是同一个对象,占用的内存地址是否相同

== 比较的是两个对象的内容是否相等

2.

with语句时用于对try except finally 的优化,让代码更加美观,

例如常用的开发文件的操作,用try except finally 实现:

f=open('file_name','r')
try:
r=f.read()
except:
pass
finally:
f.close()

打开文件的时候,为了能正常释放文件的句柄,都要加个try,然后再finally里把f close掉,但是这样的代码不美观,finally就像个尾巴,一直托在后面,尤其是当try里面的语句时几十行

用with的实现:

with open('file_name','r') as f:
r=f.read()

这条语句就好简洁很多,当with里面的语句产生异常的话,也会正常关闭文件

除了打开文件,with语句还可以用于哪些地方呢?

with只适用于上下文管理器的调用,除了文件外,with还支持 threading、decimal等模块,当然我们也可以自己定义可以给with调用的上下文管理器

在开发的过程中,会有很多对象在使用之后,是需要执行一条或多条语句来进行关闭,释放等操作的,例如上面说的的文件,还有数据库连接,锁的获取等,这些收尾的操作会让代码显得累赘,也会造成由于程序异常跳出后,没有执行到这些收尾操作,而导致一些系统的异常,还有就是很多程序员会忘记写上这些操作-_-!-_-!,为了避免这些错误的产生,with语句就被生产出来了。with语句的作用就是让程序员不用写这些收尾的代码,并且即使程序异常也会执行到这些代码(finally的作用)

3.gil

  GIL是什么?GIL的全称是Global Interpreter Lock(全局解释器锁),来源是python设计之初的考虑,为了数据安全所做的决定

  在Python多线程下,每个线程的执行方式:
  1.获取GIL
  2.执行代码直到sleep或者是python虚拟机将其挂起。
  3.释放GIL

  可见,某个线程想要执行,必须先拿到GIL,我们可以把GIL看作是“通行证”,并且在一个python进程中,GIL只有一个。拿不到通行证的线程,就不允许进入CPU执行。

4.list是可变数组

truple是常量数组

5.python的值是参数传递还是引用传递

说传值或者传引用都不准确。非要安一个确切的叫法的话,叫传对象(call by object)

6.

Python 中的迭代器、生成器、装饰器

迭代器; 是什么:是一个抽象的概念,任何对象,如果它实现了next方法和iter方法,就是迭代器。

next方法要么返回迭代中的下一项,要么返回一个stapIteration异常,iter方法要返回一个迭代器对象,而它本身就是一个迭代器对象,所有返回自己本身。

作用:像我们提供一个中间人即迭代器帮助我们迭代遍历使用 for循环其实就实现了迭代器的功能,在遍历list,string,dict,tuple这些容器时,在 for语句对容器对象调用的iter()方法返回一个定义next()方法的迭代器对象,它在函数中逐个访问容器内的元素,next和iter都是python内置函数。

生成器: 是什么:生成器是一种特殊的迭代器,在函数中有yield关键字就可以说是生成器。 怎么用:调用next(),就会返回yield后面的值,生成器挂起,再次使用next就从上次停止的位置继续执行。 作用:延迟计算,一次返回一个结果。当我们需要结果的时候才会调用,而不是一次返回所有的结果。 也就是说,它不会一次生成所有的结果,这对于大数据量处理,将会非常有用。 创建方法:1.把列表生成式的[ ]改为()就是一个简单的列表生成器 2.使用yield关键字

生成器和迭代器的区别:生成器能做到迭代器能做到的所有事,因为自动创建iter方法和next方法,显的比较简洁,高效。使用生成器表达式比列表解析要节省内存(前者是需要的时候才调用next返回一个值,后者直接返回一个列表),自动抛出StopIteration异常

装饰器:在不改变已存在的对象的功能情况下添加额外的功能 def set_fun(func): call_fun(*arge,**kwargs): reurn func(*arge,**kwargs) return call_fun

python is、==区别;with;gil;python中tuple和list的区别;Python 中的迭代器、生成器、装饰器的更多相关文章

  1. Python基础-迭代器&生成器&装饰器

    本节内容 迭代器&生成器 装饰器 Json & pickle 数据序列化 软件目录结构规范 作业:ATM项目开发 1.列表生成式,迭代器&生成器 列表生成式 我现在有个需求,看 ...

  2. Python 迭代器&生成器,装饰器,递归,算法基础:二分查找、二维数组转换,正则表达式,作业:计算器开发

    本节大纲 迭代器&生成器 装饰器  基本装饰器 多参数装饰器 递归 算法基础:二分查找.二维数组转换 正则表达式 常用模块学习 作业:计算器开发 实现加减乘除及拓号优先级解析 用户输入 1 - ...

  3. python中的迭代器&&生成器&&装饰器

    迭代器iterator 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外, ...

  4. python中的迭代器 生成器 装饰器

    什么迭代器呢?它是一个带状态的对象,他能在你调用next()方法的时候返回容器中的下一个值,任何实现了__iter__和__next__()(python2中实现next())方法的对象都是迭代器,_ ...

  5. python学习笔记(5)--迭代器,生成器,装饰器,常用模块,序列化

    生成器 在Python中,一边循环一边计算的机制,称为生成器:generator. 如: >>> g = (x * x for xin range(10)) >>> ...

  6. 4.python迭代器生成器装饰器

    容器(container) 容器是一种把多个元素组织在一起的数据结构,容器中的元素可以逐个地迭代获取,可以用in, not in关键字判断元素是否包含在容器中.通常这类数据结构把所有的元素存储在内存中 ...

  7. Python迭代器,生成器,装饰器

    迭代器 通常来讲从一个对象中依次取出数据,这个过程叫做遍历,这个手段称为迭代(重复执行某一段代码块,并将每一次迭代得到的结果作为下一次迭代的初始值). 可迭代对象(iterable):是指该对象可以被 ...

  8. Python学习——迭代器&生成器&装饰器

    一.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退迭代器的一大优点是不要求事先准备好整个迭代过程中所有的元素.迭代器仅 ...

  9. Python 全栈开发五 迭代器 生成器 装饰器

    一.迭代器 迭代协议:对象必须提供一个next方法,执行该方法后会返回迭代的下一项或者抛出Stopiteration异常,终止迭代.切只能往前,不能倒退. 可迭代对象:遵循迭代写一点对象就是可迭代对象 ...

  10. Python迭代器&生成器&装饰器

    1. 迭代器 1.1 可迭代对象(Iterator) 迭代器协议:某对象必须提供一个__next__()方法,执行方法要么返回迭代中的下一项,要么引起一个Stopiteration异常,以终止迭代(只 ...

随机推荐

  1. Java基础——JSP(一)

    一.JSP的由来 在很多动态网页中,绝大多部分内容是不变的,只有局部内容需要动态产生和改变.例如, 一个新闻的浏览次数,只有这个次数是动态改变的,而Servlet程序返回客户端的代码全是java程序动 ...

  2. 整数对(hdu1271)找规律

    整数对 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submissio ...

  3. zsh: command not found cnpm,gulp等命令在zsh终端上报错的问题

    以cnpm包为例,使用 npm install -g cnpm 创建了cnpm包.而在zsh终端上运行cnpm,出现 zsh: command not found: cnpm 的报错.同样的,gulp ...

  4. ISDBT中CC的处理疑问

    一个针对日本的数字电视应用(ISDBT)里字幕处理有一些问题,规范文档庞大又复杂,读起来还觉得语焉不详.接手遗留项目尝试处理字幕显示的问题,边读spec边看代码,先猜测.试图理解既有逻辑,再分析问题产 ...

  5. WOSA/XFS PTR FORM—基础知识

    目录 一.XFS PTR 二.XFS PTR FORM 三.Form.子Form.字段.框架.表单和媒介的定义 正文 一.XFS PTR Class Name PTR Class Identifier ...

  6. Flutter dart:convert

    引用 mport 'dart:convert'; JSON 解码(JSON String->Object) // NOTE: Be sure to use double quotes (&quo ...

  7. flutter 异步async、await和Future的使用技巧

    由于前面的HTTP请求用到了异步操作,不少小伙伴都被这个问题折了下腰,今天总结分享下实战成果.Dart是一个单线程的语言,遇到有延迟的运算(比如IO操作.延时执行)时,线程中按顺序执行的运算就会阻塞, ...

  8. Flutter开发中的几个常用函数

    几个Flutter开发中的常用函数 /** 返回当前时间戳 */ static int currentTimeMillis() { return new DateTime.now().millisec ...

  9. 大数据【一】集群配置及ssh免密认证

    八月迷情,这个月会对大数据进行一个快速的了解学习. 一.所需工具简介 首先我是在大数据实验一体机上进行集群管理学习,管理五台实验机,分别为master,slave1,slave2,slave3,cli ...

  10. ie8 透明背景不能点击问题

    最近开发网站,需求是三个一屏,1和3只能看见一半,2显示在中间,无箭头按钮. 因为之前写过一个有前后按钮的插件,想着怎么就在这上面改造,故把前后按钮去掉背景,定位在了1和3的位置上来实现点击前后, 发 ...