python基础方面三

异常

捕获异常 try...except...

else  没有捕获异常云行

finally  一定运行的代码

有异常 中断,然后在except中执行

raise 抛出异常 与Java throw 一样

模块

import  from .. import  from .. import *

as 起小名

定位模块  顺序是:

1当前目录

2shell 变量PYTHONPATH下的每个目录

3 默认路径  Unix下  默认路径一般为/usr/local/lib/python/

4模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。

包 功能相同模块放在一起  有一个__init__.py文件,里面是__all__=["模块名","模块名"]

包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为包

有效避免模块名称冲突问题,让应用组织结构更加清晰

__init__.py 文件写方法那么导入包时就会被调用

设计模式 :

简单工厂模式:定义一个类,通过传入参数 返回一个特定的类

单例模式:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。

元类:创建类的类,像type(python 所有类的父) str(创建字符串对象) int(创建整数对象)

可以通过__class__来看自己是谁创建的,__class__.__class__可以看到更上的创建类;

__metaclass__可以指定元类来创建对象,如果不指定,(先找父类,再找模块)默认type

动态创建属性与方法

P.run = types.MethodType(run, P)#给这个对象添加实例方法

Person.testClass = testClass  #给Person类绑定类方法  testClass  上要有@classmethod

Person.testStatic = testStatic #给Person类绑定静态方法 testStatic 上要有@staticmethod

删除属性方法

删除的方法:

del 对象.属性名

delattr(对象, "属性名")

列表生成式  [ x*2 for x in range(5)]

生成器:一边循环一边计算的机制,称为生成器:generator  ( x*2 for x in range(5))  上面改成小括号,生成对象,通过调用next()得到下个值,没有值时报错,还可以有yield

迭代器:可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

是可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

isinstance() 判断对象是否可以迭代

一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;

一类是 generator ,包括生成器和带 yield 的generator function。

生成器都是 Iterator 对象  通过iter([]) 可以将 list 、 tuple 、 dict 、 set 、 str变成迭代器

闭包:

#在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包

内部函数对外部函数作用域里变量的引用(非全局变量),则

称内部函数为闭包。

1.闭包似优化了变量,原来需要类对象完成的工作,闭包也可以完成

2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存

装饰器:运用闭包原理给方法加上其它功能

引入日志

函数执行时间统计

执行函数前预备处理

执行函数后清理功能

权限校验等场景

缓存

作用域

LEGB 规则    locals 当前所在命名空间-> enclosing function 外部嵌套函数的命名空间(闭包中常见)-> globals 全局变量,函数定义所在模块的命名空间 -> builtins 内建模块的命名空间。

is与==  is 比较是否指向同一个对象  == 比较两对象是否相等

深拷贝,  深拷贝是对于一个对象所有层次的拷贝(递归)  copy.deepcopy

浅拷贝 : 拷贝了引用,并没有拷贝内容  赋值=

copy.copy    拷贝不可变类型直接浅拷贝, 如果可变类型 ,只考贝第一层

可变类型    列表  字典

不可变  元祖,数字,字符串

copy是浅拷贝,只拷贝可变对象的父级元素。 deepcopy是深拷贝,递归拷贝可变对象的所有元素

[-5, 257)  数字已经在python中建好  其他的大数字均要创建新对象

intern机制  字符串  (没空格)不可修改,默认开启intern机制引用计数为0则销毁  有空格不开启

垃圾回收

1引用计数机制 (主要) :python每个东西都是对象,核心是一个结构体  PyObject(每个对象必有),里面的ob_refcnt就是做为引用计数。当一个对象有新的引用时,它的ob_refcnt就会增加,当引用它的对象被删除,它的ob_refcnt就会减少。当引用计数为0时,该对象生命就结束了。

优点: 简单,实时(垃圾回收时间分摊到平时)

缺点:维护引用计数消耗资源,循环引用无法回收

+1情况

对象被创建,例如a=23

对象被引用,例如b=a

对象被作为参数,传入到一个函数中,例如func(a)

对象作为一个元素,存储在容器中,例如list1=[a,a]

-1 情况

对象的别名被显式销毁,例如del a

对象的别名被赋予新的对象,例如a=24

一个对象离开它的作用域,例如f函数执行完毕时,func函数中的局部变量(全局变量不会)

对象所在的容器被销毁,或从容器中删除对象

2标记-清除和分代收集为辅:

标记的时候需要确定内存对象的集合Root set,集合里的对象都是可以访问的。如果Root set中的对象引用了其他的对象,那么被引用的对象也不能被标记为垃圾对象。然后从Root set出发,递归遍历Root set能访问到的所有对象,进行标记为不是垃圾对象。遍历结束后,没有被标记的就是垃圾对象。

分代收集:

分代回收的整体思想是:将系统中的所有内存块根据其存活时间划分为不同的集合,每个集合就成为一个“代”,垃圾收集频率随着“代”的存活时间的增大而减小,存活时间通常利用经过几次垃圾回收来度量。

Python默认定义了三代对象集合,索引数越大,对象存活时间越长

常用的python库



最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,457评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,837评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,696评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,183评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,057评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,105评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,520评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,211评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,482评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,574评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,353评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,213评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,576评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,897评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,489评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,683评论 2 335

推荐阅读更多精彩内容

  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 3,757评论 1 10
  • 1.项目经验 2.基础问题 3.指南认识 4.解决思路 ios开发三大块: 1.Oc基础 2.CocoaTouch...
    阳光的大男孩儿阅读 4,956评论 0 13
  • 前言 人生苦多,快来 Kotlin ,快速学习Kotlin! 什么是Kotlin? Kotlin 是种静态类型编程...
    任半生嚣狂阅读 26,119评论 9 118
  • 半个多月前在达坂城捡了些石头,其中这块很像心形,虽不是很对称但也还好,当时捡起来就想如果画一对小猫咪送给...
    阿姐珊珊阅读 573评论 2 11
  • 粽叶糯香,包裹浓浓节意;艾草茱萸,寄托深深思念。锣鼓喧天声已随记忆长河一去不复返,汨罗江畔边屈子悲歌已是昨日黄花不...
    临渊不羡于阅读 371评论 0 0