Python基础回顾总结

忘是亡心i 2021-12-07 12:37 427阅读 0赞

一 . Python入门

  1.编程语言分为编译型和解释型

     #1. 编译型(需要编译器,相当于用谷歌翻译):如C,执行速度快,调试麻烦

      #2. 解释型(需要解释器,相当于同声传译):如python,执行速度慢,调试方便

  1.   优点:
  2.     #编译型语言执行速度快,不依赖语言环境运行,跨平台差
  3.    #解释型跨平台好,一份代码,到处使用,缺点是执行速度慢,依赖解释器运行
  4.  2.Python有哪些种类
  5.   #CPython:
  6.   CPython是使用最广且被的Python解释器。
  7.   当我们从Python官方网站下载并安装好Python 2.7后,我们就直接获得了一个官方版本的解释器:CPython
  8.   这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。
  9.   #IPython
  10.   IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,
  11.   但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE
  12.   CPython用>>>作为提示符,而IPythonIn [序号]:作为提示符。   #PyPy
  13.   PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),
  14.   所以可以显著提高Python代码的执行速度。绝大部分Python代码都可以在PyPy下运行,但是PyPyCPython有一些是不同的,
  15.   就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,
  16.   就需要了解PyPyCPython的不同点。
  17.   #Jython
  18.   Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行  #IronPython
  19.   IronPythonJython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,
  20.   可以直接把Python代码编译成.Net的字节码。
  21. 3.小整数池(优化机制)  
  22.   Python实现int的时候有个小整数池。为了避免因创建相同的值而重复申请内存空间所带来的效率问题,   Python解释器会在启动时创建出小整数池,范围是[-5,256],该范围内的小整数对象是全局解释器范围内被重复使用,   永远不会被GC回收 4.变量的修改与内存管理(引用计数与垃圾回收机制)   Python中垃圾回收是以引用计数为主,分带收集为辅
  23.   引用计数:
  24.   原理:跟踪每个值被引用的次数
  25.   流程:     1.声明了一个变量并将一个引用类型的值赋值给这个变量,这个引用类型值的引用次数就是1     2.同一个值又被赋值给另一个变量,这个引用类型值的引用次数加1.     3.当包含这个引用类型值的变量又被赋值成另一个值了,那么这个引用类型值的引用次数减1.     4.当引用次数变成0时,说明没办法访问这个值了。     5.当垃圾收集器下一次运行时,它就会释放引用次数是0的值所占的内存。   一句话:引用计数就是跟踪每个值被引用的次数,如果引用次数为0则会被当做垃圾回收。这种机制简单,实时性好,   一旦没有引用就直接释放了。但是需要维护引用计数,而且当面对循环引用时会消耗大量资源,无法回收内存   会导致内存泄漏。      标记-清理     python标记删除时通过两个容器完成:死亡容器、存货容器     1.对执行删除操作后的每个引用-1,此时如果对象的引用为0则将其放入死亡容器中。把那些引用仍然大于0的放到存活容器     2.遍历存活容器,查看是否有的存活对象引用了死亡容器内的对象,如果有就把该对象从死亡容器中取出放入存活容器     3.删除死亡容器所有对象     一句话:标记-清理如果要删除循环引用,必须将循环引用的双发对象全部删除才可以被回收
  26.   分代收集
  27.     目的:更合理的进行标记-删除,需要对对象进行分代处理
  28.     1.新创建的对象作为0
  29.     2.每执行一个标记-删除,存活的对象代数+1
  30.     3.代数越高的对象(存活越持久的对象),进行标记-删除的时间间隔就越长。这个间隔江湖人称阀值。
  31.   
  32.   三种情况触发垃圾回收
  33.     1.调用gc.collect()
  34.     2.GC达到阀值
  35.     3.程序退出时
  36. 5.数据类型   int,float,str,list,dict,bool,set,tuple   str:     单、双、三引号的区别:
  37.       单双引号没有区别,只有在一个str内出现了单引号时应该用双引号包裹,反之亦然
  38.       多行字符必须用三引号
  39.   逻辑运算:
  40.     notorand优先级: not > or > and
  41.  

6.函数

  *名称空间加载顺序*

    #1、python解释器先启动,因而首先加载的是:内置名称空间

    **#2、执行test.py文件,然后以文件为基础,加载全局名称空间

    **#3、在执行文件的过程中如果调用函数,则临时产生局部名称空间

  名字的查找顺序

    **局部名称空间—->全局名称空间—->内置名称空间

  闭包函数

    内部函数引用了外部函数变量,且外部函数返回的是内嵌函数对象的一个嵌套函数。

    意义:返回的函数对象,不仅仅是一个函数对象,在该函数外还包裹着一层作用域,这使得,该函数无论在何处调用,优先

    使用自己外层包裹的作用域。

  

  7.装饰器

*    装饰器就是闭包函数的一种应用场景*

    开放封闭原则:对封闭修改,对外扩展开放

    作用:在不改变装饰对象源代码和调用方式的情况下为函数添加新功能

    

  1.   可迭代对象指的是内置有__iter__方法的对象
  2. 什么是迭代器对象?
  3.   可迭代对象执行obj.__iter__()得到的结果就是迭代器对象
  4.   而迭代器对象指的就是内置有—__iterII又内置有__next__方法的对象
  5. 迭代器对象一定是一个可迭代对象,而可迭代对象不一定是迭代器对象      优点:     提供一种统一的、不依赖于索引的迭代方式     惰性计算,节省内存   缺点:     无法获取长度(只有在next完毕才知道到底有几个值)
  6.     一次性的,只能往后走,不能往前退 9.生成器   只要函数内部有yield关键字,那么函数名()得到的结果就是生成器,并且不会执行函数代码   生成器就是迭代器 10.三元表达式   name=input('姓名>>: ')
  7.   res='SB' if name == 'alex' else 'NB'   print(res)
  8. 11.列表推导式   egg_list=[]
  9.   for i in range(10):     egg_list.append('鸡蛋%s' %i)   egg_list=['鸡蛋%s' %i for i in range(10)] 12.生成器表达式   把列表推导式的[]换成()就是生成器表达式  #2、示例:生一筐鸡蛋变成给你一只老母鸡,用的时候就下蛋,这也是生成器的特性  >>> chicken=('鸡蛋%s' %i for i in range(5))  >>> chicken  <generator object <genexpr> at 0x10143f  >>> next(chicken)
  10.   '鸡蛋0'   >>> list(chicken) #因chicken可迭代,因而可以转成列表   ['鸡蛋1', '鸡蛋2', '鸡蛋3', '鸡蛋4',]   #3、优点:省内存,一次只产生一个值在内存中 13.递归调用的定义   递归调用是函数嵌套调用的一种特殊形式,函数在调用时,直接或间接调用了自身,就是递归调用   递归调用函数会产生局部名称空间,占用内存,python解释器的内存管理机制为了防止其无限制占用内存,对函数的递归调用   做了最大的层级限制。      递归调用的两个明确阶段:     递推:从里向外一层一层结束递归     回溯:从外向里一层一层调用下去,回溯阶段必须有一个明确的结束条件,没进入下一次递归,问题规模都应该有所减少        否则无限制的重复调用自身是没有意义的      总结:     1.必须要有一个明确的结束条件     2.每次进入更深一层递归时,问题规模应相比上次递归有所减少     3.递归效率不高,层次过多会导致内存溢出,在python中递归效率低,且没有尾递归优化(在函数的最后一步而非最后一行调用自己)   
  11.  14.
  12.   
  13.   

转载于:https://www.cnblogs.com/zhoukaige/p/11153818.html

发表评论

表情:
评论列表 (有 0 条评论,427人围观)

还没有评论,来说两句吧...

相关阅读

    相关 python基础回顾

    一,认识Python 他是一门面向对象的解释型语言 优点:开源,易于维护,可移植,易于使用,拥有广泛的开源库,可扩展,可嵌入 缺点:速度慢(边执行边翻译

    相关 基础回顾

    1  wait方法:         该方法属于Object的方法,wait方法的作用是使得当前调用wait方法所在部分(代码块)的线程停止执行,并释放当前获得的调用wai

    相关 单片机==回顾基础

      作为一个学硬件的学生,我感觉自己实在是太弱了,由于硬件的学习成本较高,一直以来我都是在自己写一些偏软件方面的小项目,对硬件的了解也仅限于学校的课堂了。   在我的感觉中,

    相关 Python基础回顾总结

    一 . Python入门   1.编程语言分为编译型和解释型      \1. 编译型(需要编译器,相当于用谷歌翻译):如C,执行速度快,调试麻烦       \2. 解