python(高级)⑤内建属性、模块进阶

一内建属性和内建函数

1

子类没有实现__init__方法时,默认自动调用父类的。如定义__init__方法时,需自己手动调用父类的__init__方法




当t.b执行时,会调用Person类中定义的__getattribute__方法,但是在这个方法的执行过程中,if条件不满足,所以 程序执行else里面的代码,即return self.test问题就在这,因为return需要把self.test的值返回,那么首先要获取self.test的值,因为self此时就是t这个对象,所以self.test就是t.test此时要获取t这个对象的test属性,那么就会跳转到__getattribute__方法去执行,即此时产生了递归调用,由于这个递归过程中 没有判断什么时候推出,所以这个程序会永无休止的运行下去,又因为每次调用函数,就需要保存一些数据,那么随着调用的次数越来越多,最终内存吃光,所以程序 崩溃

注意:不要在__getattribute__方法中调用self.xxx

二内建函数

Build-in Function,启动python解释器,输入dir(__builtins__),可以看到很多python解释器启动后默认加载的属性和函数,这些函数称之为内建函数

help(function),查看如何使用

1range

range(a)从0开始计数,到a-1。例如a等于5,计数为0,1,2,3,4

range(a,b,c)从a开始计数到b-1结束,每次跳跃c。例如range(1,11,2)为1,3,5,7,9

通过range函数可生成一个列表:


2 map函数

map函数会根据提供的函数对指定序列做映射

map(...)

             map(function,sequence[,sequence,...])->list

funtion是一个函数

sequence是一个或多个序列,取决于function需要几个参数

返回值是一个map


3 filter函数

filter函数会对指定序列执行过滤操作

filter()

function:可以接受一个参数,返回布尔值True或False

·sequence:序列可以是str,tuple,list

下面是两个例子,第一个是选出列表中的奇数,第二个是选出列表中平方根为整数的数。

4 reduce函数

reduce函数会对参数序列中元素进行累积。

函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给reduce中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

reduce() 函数语法:

reduce(function,iterable[,initializer])

function -- 函数,有两个参数

iterable -- 可迭代对象

initializer -- 可选,初始参数

在Python3里,reduce函数已经被从全局名字空间里移除了,它现在被放置在fucntools模块里用的话要先引入:from functools import reduce

例子:

5 sorted函数

sorted(...)

sorted(iterable, key=None, reverse=False) --> new sorted list

将一个可迭代的对象进行排序,不设定reverse或reverse等于false时按从小到大排序,排序后生产一个新列表,将reverse设定为1后,按从大到小的顺序排序。

例子:


三 functools

1functools

functools是python2.5被引人的,一些工具函数放在此包里。

在python3.5中


python中增加了很多工具函数,做业务开发的时候大多情况用不到,这里介绍使用频率比较高的2个函数

2 partial 函数(偏函数)

把一个函数的某些参数设置默认值,返回一个新的函数,调用这个新函数会更简单。


3 wraps 函数

使用装饰器时,有一些细节需要被注意。例如,被装饰后的函数其实已经是另外一个函数了(函数名等函数属性会发生改变)。

添加后由于函数名和函数的doc发生了改变,对测试结果有一些影响,例如:

所以,Python的functools包中提供了一个叫wraps的装饰器来消除这样的副作用。例如:


四 模块进阶

Python有一套很有用的标准库(standard library)。标准库会随着Python解释器,一起安装在你的电脑中的。 它是Python的一个组成部分。这些标准库是Python为你准备好的利器,可以让编程事半功倍。

1 常用标准库

2 time

1.help(time)之后可以知道time有2种时间表示形式:

1、时间戳表示法,即以整型或浮点型表示的是一个以秒为单位的时间间隔。这个时间的基础值是从1970年的1月1号零点开始算起。

2、元组格式表示法,即一种Python数据结构表示。这个元组有9个整型内容。分别表示不同的时间含义。

2、名词解释:

UTC(Coordinated Universal Time,世界协调时)亦即格林威治天文时间,世界标准时间。在中国为UTC+8。

DST(Daylight Saving Time)即夏令时。是一种为节约能源而人为规定地方时间的制度,一般在天亮早的夏季人为将时间提前一小时。

3、包含的变量:

timezone --当地时间与标准UTC时间的误差,以秒计

altzone --当地夏令时时间与标准UTC时间的误差,以秒计

daylight --当地时间是否反映夏令时,默认为0

zname --关于(标准时区名称,夏令时时区名称)的元组

4、包含的函数:

time() --返回当前时间戳,浮点数形式。不接受参数

clock() --返回当前程序的cpu执行时间。unix系统始终返回全部运行时间;而windows从第二次开始都是以第一次调用此函数时的时间戳作为基准,而不是程序开始时间为基准。不接受参数。

sleep() --延迟一个时间段,接受整型、浮点型。

gmtime() --将时间戳转换为UTC时间元组格式。接受一个浮点型时间戳参数,其默认值为当前时间戳。

localtime() --将时间戳转换为本地时间元组格式。接受一个浮点型时间戳参数,其默认值为当前时间戳。

asctime() --将时间元组格式转换为字符串形式。接受一个时间元组,其默认值为localtime()返回值

ctime() --将时间戳转换为字符串。接受一个时间戳,其默认值为当前时间戳。等价于asctime(localtime(seconds))

mktime() --将本地时间元组转换为时间戳。接受一个时间元组,必选。

strftime() --将时间元组以指定的格式转换为字符串形式。接受字符串格式化串、时间元组。时间元组为可选,默认为localtime()

strptime() --将指定格式的时间字符串解析为时间元组,strftime()的逆向过程。接受字符串,时间格式2个参数,都是必选。

tzset() --改变本地时区。

5、时间字符串支持的格式符号:

格式含义备注

%a本地(locale)简化星期名称

%A本地完整星期名称

%b本地简化月份名称

%B本地完整月份名称

%c本地相应的日期和时间表示

%d一个月中的第几天(01 - 31)

%H一天中的第几个小时(24小时制,00 - 23)

%I第几个小时(12小时制,01 - 12)

%j一年中的第几天(001 - 366)

%m月份(01 - 12)

%M分钟数(00 - 59)

%p本地am或者pm的相应符

%S秒(01 - 61)

%U一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之前的所有天数都放在第0周。

%w一个星期中的第几天(0 - 6,0是星期天)

%W和%U基本相同,不同的是%W以星期一为一个星期的开始。

%x本地相应日期

%X本地相应时间

%y去掉世纪的年份(00 - 99)

%Y完整的年份

%Z时区的名字(如果不存在为空字符)

%%‘%’字符

3 hashlib

importhashlib

m = hashlib.md5()#创建hash对象,md5:(message-Digest Algorithm 5)消息摘要算法,得出一个128位的密文

print m#

m.update('test')#更新哈希对象以字符串参数

print m.hexdigest()#返回十六进制数字字符串


常用扩展库


SimpleHTTPServer

就可以运行起来静态服务。平时用它预览和下载文件太方便了。

在终端中输入命令:

python -m http.server PORT


matplotlib


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

推荐阅读更多精彩内容

  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,693评论 0 5
  • 第5章 引用类型(返回首页) 本章内容 使用对象 创建并操作数组 理解基本的JavaScript类型 使用基本类型...
    大学一百阅读 3,231评论 0 4
  • 1.元类 1.1.1类也是对象 在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。在Python中这...
    TENG书阅读 1,263评论 0 3
  • 街口的红绿灯忽明忽暗… 弄堂的猫懒懒散散… 你曾说这种微醺的颓废你很喜欢… 看… 用双眼记住你眼中的风景原来并不难...
    七渔安阅读 124评论 0 2
  • 在匆匆忙忙过完这一周,搞定了所有手里的工作后,终于迎来了我的美妙年假。 这次年假我和老公是自由行。两个懒蛋在订下来...
    Chloe婉阅读 225评论 0 0