导图社区 从小白到大神Python学习脉络
恭喜你!在后悔之前看到了这篇最详细的python学习脉络。包含python的方方面面,从初级到高级,学完之后可以直接去面试10万年薪公司。技多不压身,赶紧学起来吧。喜欢请点赞收藏!关注我,能持续获取优质导图哦。
编辑于2018-12-12 11:27:57Python
面向对象
class myclass:类的语法
def __init__(self,a,b):self.a = a self.b = b构造函数
在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
单继承示例 class student(people)
多重继承 class sample(speaker,student):
方法重写
私有属性与方法__方法名或属性名
__del__析构函数
判断是否为同一类型的isinstance(a, list) 是否为继承关系
判断对象类型class属性type(123)
第三方库
Pillow
from PIL import Image >>> im = Image.open('test.png') >>> print(im.format, im.size, im.mode)
输入输出
表达式输出print()输入input()
print('%s: %s' % (std['name'], std['score']))
prep机器读,str人读
文件输入输出
获得文件f = open('src',mode )
f.read([size])
f.readline()
f.readlines()
f.write
f.tell 返回文件对象所处的位置
f.seek() 移动文件对象的位置
f.seek(x,0)开头移动位置
f.seek(x,1)当前位置移动x字符
f.seek(-x,2)结尾位置移动
f.close()
f.next()返回下一行
with open(src, mode) as f一定会处理文件流的关闭
pickle序列化与反序列化
pickle.dump(数据,文件)序列化数据
pickle.load(文件)反序列化
文件/目录操作方法
基础语法
注释
R‘this is \n’
U'this is unicode'
整数,浮点数,长整数,复数
数据类型
数字
字符串
字符串切片
字符串运算+*
负索引
字符格式化
u/r
列表
切片
列表生成:[生成对象for x in range(15)]
删除列表中的元素del
列表中的操作符
列表的内置函数
extend(L)扩展列表
insert(i, 'l')指定位置插入元素
remove(‘l’)移除值为l第一个元素
增append
clear()清除列表中的所有项
index('l')返回值为l的列表索引,如果没有返回-1
count('l')返回值为l的元素在列表中出现的位置
sort()列表排序
reverse()列表反序
copy()列表的浅复制
pop(i)从列表指定位置删除元素,没指定删除最后一个元素
集合set
不重复的列表
s=s({1,2,3,4})
add()
元组
元组可以使用,不能修改
del 元祖 删除元祖
元组的运算
元祖内置函数
元组截取
字典
del 删除字典
字典的内置函数
增加
del 字典的一个元素
dict.get('findValue',returnValue)
子主题
日期日历
time.localtion(time.time)
a b H M S y
calender.moath(2018, 11)
tiem.ctiem()格式化时间
运算符
//
**
其余的与其他语法一样
and
or
not
in
not in
is
is not
循环控制语句
if else
for
while
range(控制数)
break,continue,pass
迭代器与生成器
iter
next()
isinstance([判断是否能迭代], Iterator)
生成器
减少内存占用
g = (x * x for x in range(10))
语法错误与异常
运行时的错误为异常
try:表达式 except err: 语法
else语句try语句没有错误时执行
raise语句抛出指定异常
finally一定会执行的语句
单元测试
对每一类测试都需要编写一个 test_xxx()方法
self.assertEqual(abs(-1), 1)
import unittest class TestDict(unittest.TestCase):
setUp()方法中连接数据库,在 tearDown()方法中关 闭数据库
模块(类概念)
import导入整个模块
from * import * ,*导入模块部分函数
def __init__(self, name, score): self.name = name self.score = score构造方法
__name__=='__main__'表示模块自身在运行时执行
dir()返回模块所定义的全部属性
包模块的导入方式与模块之间导入一样
私有属性_xxx
类属性在类中定义name = 'student'实例属性覆盖类属性 实例属性优先级比类属性高
类定义完之后可以动态给类绑定属性和方法
from types import MethodType >>> s.set_age = MethodType(set_age, s) # 给实例绑定一个方法
给一个实例绑定的方法,对另一个实例是不起作用的
给所有实例都绑定方法,可以给 class 绑定方法MethodType(set_score, Student)
的__slots__变量,来限制该 class 实例能添加的属性:__slots__ = ('name', 'age') # 用 tuple 定义允许绑定的属性名称
class Student(object): @property def score(self): return self._score @score.setter def score(self, value): if not isinstance(value, int): raise ValueError('score must be an integer!') if value < 0 or value > 100: raise ValueError('score must between 0 ~ 100!') self._score = value
正则表达式
re.match()
re.search()
标志位
re.I
re.M
re.L
re.S
re.U
re.X
匹配模式
^开头
\Z匹配结束
[...]任意字符
[^...]任意非字符
*0到任意多个
+一个到任意多个
?匹配一个或0个
$结尾
a|b匹配a或b
\w匹配字母数字W非字母
\s|S任意空白|任意非空白
\d|D匹配任意数字|任意非数字
\A匹配字符串开始
(re)g匹配
mysql数据库
pymysql.connect("localhost","testuser","test123","TESTDB" )连接数据库
cursor = db.cursor()创建游标
cursor.execute("SELECT VERSION()")执行查询语句
data = cursor.fetchone()获取单条数据
db.close()关闭数据库
数据库安全try: # 执行sql语句 cursor.execute(sql) # 提交到数据库执行 db.commit() except: # 如果发生错误则回滚 db.rollback()
sql = "SELECT * FROM EMPLOYEE \ WHERE INCOME > '%d'" % (1000)在向数据库传递参数的语句
网络
服务器
socketServer = socket.socket(参数,参数)
socketServer.bind(ip,端口)
socketServer.listen(客户端连接数)
server = socketServer.accept()
server.send(数据)
socket.close()
客户端
socketClient = socket.socket(参数,参数)
socketClient.connet(ip,端口)
socketClient.recv(接收字符的尺寸)
socketClient.close()
邮件发送
多线程
_thread
_thread.start_new_thread ( function, args[, kwargs] )创建新新线程
_thread.start_new_thread( print_time, ("Thread-1", 2, ) )线程名,优先级
threading
class myThread (threading.Thread):继承线程类
def run(self):线程活动函数
thread.start()启动线程
thread.join()线程暂停
threadName.exit()退出函数
threadLock = Threading.lock()
threadLock.acquire()加锁
threadLock.release()解锁
queue
XML解析
sax解析
在python中使用sax方式处理xml要先引入xml.sax中的parse函数,还有xml.sax.handler中的ContentHandler。
子主题
Json解析
json.dumps()编码第二个参数是文件名
json.loads()解码参数是文件名
函数
命名关键字参数*,参数名
偏函数
固定住,某些工具函数的特定参数
最后,创建偏函数时,实际上可以接收函数对象、*args 和**kw 这 3 个 参数,
import functools int2 = functools.partial(int, base=2)
可变与不可变参数
却省参数
不定长参数
匿名函数
lambda x: x * x
关键字参数,允许不按顺序排列**
map
r = map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) list(r)
结果聚集
reduce()
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
递归计算
filter()
list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))
单项筛选
sorter()
装饰器
在代码运行期间改变函数的功能,不修改函数本身的功能
注意事项:1装饰器传入的函数变量2:最后一层返回的是函数使用
def log(func): def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper
def log('args') def decorator(func): def wrapper(*args, **kw): print('%s %s():' % (text, func.__name__)) return func(*args, **kw) return wrapper return decorator
解决签名不一样
import functools def log(func): @functools.wraps(func) def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper
import functools def log(text): def decorator(func): @functools.wraps(func) def wrapper(*args, **kw): print('%s %s():' % (text, func.__name__)) return func(*args, **kw) return wrapper return decorator
高阶函数
接收另一个函数变量
返回一个变量函数