Python

Python基础

数据类型

空值

None

除法
普通除法.png

保留整数的除法.png

编码

Unicode编码把所有的语言统一到一套编码里


编码方式.png

但是因为Unicode编码长度较长,所以转化成了”可变长编码“--UTF-8
所以当前计算机的编码格式是这样子的


编码转换.png
python文件头.png
格式化
输出.png

list和tuple

list
list样式.png
tuple

tuple是初始化了就不变的


tuple样式.png

但是,tuple内部的有些特殊元素是可以变的


特殊tuple.png

dict和set

dict
dict样式.png
set

set中没有重复的key


set样式.png

函数

函数的参数

可变参数

可变参数,此时函数内部接收到的是一个tuple


image.png

但如果要传入的参数是个list或tuple而非单独的元素,那么就不太好操作
所以,python允许在list或tuple之前加一个*


image.png
关键参数

可变参数允许传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict。


image.png

高级特性

迭代

python中可迭代对象都可以用for循环遍历


image.png

查看是否为可迭代对象的方法如下


image.png

如果要对list实现下标循环,可以用enumerate函数把一个list变成索引-元素对


image.png

列表生成式

image.png

生成器

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。
生成器的样式


image.png

生成器的访问方法


image.png

对于一些不太好写出生成式的情况,通过yield可以改成generator


image.png

generator和函数的执行流程不一样。函数是顺序执行的,遇到return语句或最后一行语句就返回。而变成generator的函数,在每次调用next()的时候执行,遇到yield就返回
,再次执行时从上次返回的yield语句处继续执行

迭代器(Iterator)

生成器都是Iterator,但是list,dict,str等虽然都是Iterable的,但不是Iterator。
这是因为Python的Iterator对象表示的是一个数据流,Iterator对象可以被next()函数调用并不断返回下一个数据,直到没有数据时抛出StopIteration错误。可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。
Iterator甚至可以表示一个无限大的数据流,例如全体自然数。而使用list是永远不可能存储全体自然数的。

如果要把list,dict,str等Iterable变成Iterator可以使用iter()函数


image.png

小结


image.png

函数式编程

高阶函数

map

map()函数接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回。

map样式


image.png
reduce

reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算


image.png

可以巧妙的运用map和reduce函数完成str2int函数


image.png
filter
image.png
sorted
image.png

返回函数

image.png

闭包,此处因为内部函数调用了外部函数的局部变量i,所以在外部函数给f1,f2,f3赋值后,外部函数被回收,但是因为内部函数 f 调用了 i 这个变量,所以 i 被随 f 保留了下来,另外,函数 f 被append入fs中三次,所以赋值给三个变量,这三个变量代表了函数 f 这个逻辑结构。需要注意的是,fs 放入的是 f 而非f(),所以只是逻辑块,没有实例输入,并未执行该函数。因此执行f1,f2,f3的时候,执行的i*i这个逻辑块时,变量i的值已经是3了,所以结果都是三。


image.png

image.png

如果要避免这种情况,那么可以在fs中塞入执行的f


image.png

匿名函数

image.png

装饰器

假设我们要增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)

写一个装饰器log(),


image.png

把装饰器安装在要装饰的函数之前


image.png

结果如下


image.png

此时now函数被装饰成了wrapper函数,now的函数名指向的也是wrapper而非now,所以要纠正这个问题,可以使用@functools.wraps(func)


image.png
image.png

偏函数

functools.partial就是帮助我们创建一个偏函数的,不需要我们自己定义int2(),可以直接使用下面的代码通过int函数创建一个新的函数int2


image.png

模块

使用模块

image.png

面向对象编程

类和实例

image.png

访问限制

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线,在Python中,实例的变量名如果以开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问,所以,我们把Student类改一改

image.png

获取对象信息

如果要获得一个对象的所有属性和方法,可以使用dir()函数,它返回一个包含字符串的list,比如,获得一个str对象的所有属性和方法


image.png

类似xxx的属性和方法在Python中都是有特殊用途的,比如len方法返回长度。在Python中,如果你调用len()函数试图获取一个对象的长度,实际上,在len()函数内部,它自动去调用该对象的len()方法,所以,下面的代码是等价的

image.png

对于函数hasattr
一个正确的用法的例子如下


image.png

实例属性和类属性

如果Student类本身需要绑定一个属性


image.png

面向对象高级编程

slots

python作为动态语言,可以在程序运行过程中动态给class加上功能
但是,如果想要限制类的属性,比如,只允许对Student实例添加name和age属性,使用slots
即可

image.png

image.png

@property

Python内置的@property装饰器负责把一个方法变成属性调用,这里@property表示getter方法


image.png

image.png

多重继承

通过多重继承,一个子类就可以同时获得多个父类的所有功能


image.png

元类

可以使用type()创建类


image.png

image.png

IO编程

文件读写

image.png

也可以简洁地写


image.png

操作文件和目录

如果是posix,说明系统是Linux、Unix或Mac OS X,如果是nt,就是Windows系统


image.png

环境变量的访问


image.png

image.png

操作文件和目录


image.png
image.png

序列化


image.png

image.png

image.png

进程和线程(用到了再看)

多进程

image.png

image.png

访问数据库

MySql

如何连接到MySql的test数据库


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

推荐阅读更多精彩内容

  • 基本语法 输入输出 print / input 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Py...
    bitzoo阅读 1,612评论 0 0
  • Python 廖雪峰: https://www.liaoxuefeng.com/wiki/001431608955...
    我的钱包瘪瘪的阅读 530评论 0 0
  • 教程总纲:http://www.runoob.com/python/python-tutorial.html 进阶...
    健康哥哥阅读 1,922评论 1 3
  • Python基础 介绍 输入和输出 所有的通过input获取的数据,都是字符串类型 print() 变量 程序就是...
    沙漠星海说远方近阅读 325评论 0 0
  • 包(lib)、模块(module) 在Python中,存在包和模块两个常见概念。 模块:编写Python代码的py...
    清清子衿木子水心阅读 3,754评论 0 27