python
分享个人学习笔记
宁致乐水
目标找对象~学无止境~越努力越幸运~~~人生苦短~我用python
展开
-
使用requests库爬取百度翻译
使用requests库爬取百度翻译首先查看pc端百度翻译接口发现有内部有签名机制(http://fanyi.baidu.com/v2transapi) 尝试切换到移动端看看结果 根据移动端接口爬取接口数据"""url http://fanyi.baidu.com/v2transapi请求方式 POST"from":"en","to":"zh","que原创 2018-07-11 20:01:38 · 2481 阅读 · 7 评论 -
利用requests模块中的session爬取登陆后的github页面
利用requests模块中的session爬取登陆后的github页面从登陆界面入手,找到登陆接口 尝试爬取登陆后的主页,并保存session用session保持登陆状态爬取其他页面 import requestslogin_url = 'https://github.com/session'login_name = input("请输入用户名:")login_pwd...原创 2018-07-11 20:11:45 · 1157 阅读 · 0 评论 -
使用requests爬取内涵8的内涵段子
使用requests爬取内涵8的内涵段子使用retrying模块进行超时重试处理使用随机User-Agent和随机代理服务器 进行简单的反反爬"""myreq.py 模块功能:parse_url 方法给 url 就返回 html简单反反爬1.随机 User-Agent2.随机代理服务器容错处理1.重试2.超时"""import requestsimp...原创 2018-07-11 20:24:14 · 5447 阅读 · 0 评论 -
爬取豆瓣电影数据
from pprint import pprintimport requestsimport json# 发送请求获取响应url = 'https://movie.douban.com/j/search_subjects'headers = { "User-Agent":"Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ...原创 2018-07-11 20:36:29 · 1929 阅读 · 0 评论 -
redis常用操作
redis常见操作原创 2018-05-25 17:09:28 · 192 阅读 · 1 评论 -
数据库mysql 日常操作
一.数据库 mysql创建使用:sudo apt-get install mysql-server 安装服务器端sudo service mysql start 启动服务ps ajx | grep mysql 查看进程中是否存在mysql 服务sudo service mysql stop 停止服务sudo service mysql restart 重启su...原创 2018-05-20 15:54:55 · 247 阅读 · 0 评论 -
python3基础部分总结
python 是脚本语言,比较宽松,直接找资源,需要自己保证资源的正确性0.变量的命名推荐是下划线方式类的命名是大驼峰命名法类中的属性是下划线1.注意set中没有重复数据—可以通过转为set类型 快速完成去重功能可以看H:\pythontest\test\集合间互转.pyx = [1,1,3,4,4,5,6]y = set(x)x = list(y)print...原创 2018-04-17 00:19:17 · 734 阅读 · 0 评论 -
import导入模块详解
import导入模块import 搜索路径 程序执行时添加新的模块路径sys.path.append(‘/home/xxx’)sys.path.insert(0,’home/xxxx’)动态导入模块xx = __import__(“xx”) # xx模块名 xx.func()重新导入模块模块一旦被导入就会保存到内存中,再次import同一...原创 2018-04-18 22:21:29 · 1577 阅读 · 0 评论 -
深浅拷贝详解 一
浅拷贝浅拷贝是对于一个对象的顶层拷贝 通俗的理解:仅拷贝了引用浅拷贝1 浅拷贝2 深拷贝深拷贝是对于一个对象所有层次的拷贝(递归) 完全拷贝,开辟一块内存空间,把数据全部复制一遍 进一步理解深拷贝 引用python中所有赋值都是引用的传递 即a=b ,变量a和变量b指向同一个内存地址a=[11,22]b=aid(a)=id...原创 2018-04-18 22:26:51 · 342 阅读 · 0 评论 -
深浅拷贝详解 二
深浅拷贝详解引用:两个变量指向同一引用 eg:a =[1,2,3] b= a id(a)==id(b)拷贝:是重新拷贝一份引用 内存地址不同浅拷贝:copy.copy 对于一个对象的顶层拷贝深拷贝:copy.deepcopy 对于一个对象所有层次的拷贝(递归) 两个变量 a=b 指向不同的内存地址 eg: a = [...原创 2018-04-18 22:28:20 · 120 阅读 · 0 评论 -
python私有化以及属性私有化本质
私有化xx: 公有变量_x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问__xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字xx_:单后置下划线,用于避免与Python关键词的冲...原创 2018-04-18 22:29:32 · 576 阅读 · 0 评论 -
python部分魔法属性详解
魔法属性1.__doc__:表示类的描述信息 """xxx"""2.__module__:表示当前操作的对象在那个模块3.__class__ :表示当前操作的对象的类是什么4.__dict__:类或对象中的所有属性 5.__init__:初始化方法,通过类创建对象,自动触发执行6.__del__:当对象在内存中被释放时,自动触发执行7.__str__:如果一个类中定义了这个,那么...原创 2018-04-18 22:30:12 · 179 阅读 · 0 评论 -
python--GIL
并发和并行并发:交替处理多个任务并行:同时处理多个任务区别:从时间上来看 并发是在一段时间的多任务实现,并行是一个时间点上的多个任务实现GIL(全局解释器锁)在python中多线程是不能真正的让多核CPU实现并行原因:cpython解释器中存在一个GIL(全局解释器锁),他的作用就是保证同一时刻只有一个线程可以执行优点:可以在单核CPU电脑上实现多任务(并发) ---&...原创 2018-04-18 22:30:44 · 171 阅读 · 0 评论 -
python面向对象开发--封装,继承和多态
面向对象开发把相关的函数组合在一起形成一个对象,特征:封装,继承,多态封装1.一个功能封装成一个函数,目的是为了重复使用代码,方便查看代码.继承1.如果多的子类都需要都一个方法,那么我们会把这个方法给父类,目的,重复使用代码.2.继承顺序根据(类.__mro__).3.在开发中最好是先调用父类的这个方法也就是super().__init__() ,然后在添加自...原创 2018-04-18 22:32:40 · 146 阅读 · 0 评论 -
python操作mysql简单版(一)
from pymysql import connectdef mysql_action(sql, params=None): """对mysql进行操作""" # 创建connection 链接 conn = connect(host='localhost', port=3306, user='root', password='xxxx', database='xxx...原创 2018-04-19 16:03:43 · 114 阅读 · 0 评论 -
python操作mysql上下文版(二)
"""中级封装python 封装 mysql"""from pymysql import connectclass DB(object): def __init__(self, database): """初始化链接""" # 创建connection 链接 self.conn = connect(host='localhos原创 2018-04-19 16:06:40 · 213 阅读 · 0 评论 -
python操作mysql上下文版(三)
"""中级封装python 封装 mysql"""from contextlib import contextmanagerfrom pymysql import connect@contextmanagerdef DB(database): # 初始化链接 # 创建connection 链接 conn = connect(host='localhost', p...原创 2018-04-19 16:07:55 · 303 阅读 · 0 评论 -
闭包详解
闭包1. 两个函数的嵌套,外部函数返回内部函数的引用,外部函数一定有参数2. 外部参数可以在内存中存留,跟函数的区别3. 闭包的主要场景是与装饰器一起使用4. 闭包中外部函数中变量的引用地址不可直接修改,如果内部函数需要修改使用nonlocal例:记录方法执行次数def out_func(data): def in_func(): pass re...原创 2018-04-19 19:29:02 · 145 阅读 · 0 评论 -
python装饰器简介以及语法糖原理
装饰器简介#装饰器在不改变原先的函数代码的情况下,给原来的函数添加额外的功能(原则上不修改)#装饰器不会去改变原来函数的参数及结果#装饰前的函数,是由func指向的#装饰后的函数,是指向了call_fun#万能装饰器def set_fun(func): def call_fun(*args, **kwargs): """这边添加新的功能,如权限验证""" ...原创 2018-04-19 19:30:22 · 372 阅读 · 0 评论 -
多种装饰实现详解
多种装饰器详解#以四种函数来分别设计装饰器#无参数,无返回 #无参数,有返回 #有参数,无返回 #有参数,有返回 无参数,无返回版装饰器def set_func(func): def call_func(): print('新功能---验证') func() return call_func@se...原创 2018-04-19 19:32:52 · 107 阅读 · 0 评论 -
python两个装饰器 装饰一个函数
两个装饰器 装饰一个函数这个需要深入了解引用的传递过程(可以试着画图) 简单理解就是:电梯大法—>先上后下,先外后内"""俩个装饰器装饰一个函数"""def set_func1(func): print("set_func1") def call_func1(): print("call_func1") func() ..原创 2018-04-19 19:53:46 · 723 阅读 · 0 评论 -
python使用装饰器记录函数执行次数
def set_func(func): num = [0] # 闭包中外函数中的变量指向的引用不可变 def call_func(): func() num[0] += 1 print("执行次数",num[0]) return call_func# 待测试方法@set_funcdef test(): p...原创 2018-04-19 21:32:46 · 10664 阅读 · 2 评论 -
python使用装饰器检测方法执行时间
"""测试函数运行时间"""import timedef cal_time(func): def call_func(): print("开始运行") start_time = time.time() # print(start_time) func() end_time = time.time() ...原创 2018-04-19 21:34:11 · 784 阅读 · 0 评论 -
python3-TCP详解
TCP详解TCP协议,传输控制协议(Transmission Control Protocol)是一种面向连接的\可靠的\基于字节流的传输层通信协议 连接一对一TCP通信三步骤:创建连接\数据传送\终止连接TCP特点:(打电话模式) 1)TCP采用发送应答机制:保证传输成功 2)超时重传:保证不漏数据 3)错误校验:保证数据正确性 4)流量控制和阻塞管理:...原创 2018-04-26 10:00:27 · 2185 阅读 · 1 评论 -
python3-UDP详解
UDP 详解用户数据报协议(user Datagram protocol)这个通信协议发送不管对方是否接收到,可以用通过对方接到回复一个标识来记录是否成功通信适用于广播的应用程序(象发邮件模式)python UDP (发送接收端)"""udp服务器"""import socketdef main(): # 创建一个服务器 udp_socket = ...原创 2018-04-26 10:01:44 · 2241 阅读 · 0 评论 -
python 垃圾回收
垃圾回收小整数[-5,257)共享对象,常驻内存(小整数对象池即python自己创建好的一类少数整数对象)a = 12b = 12id(a) == id(b) # ===>true单个字符共用对象,常驻内存a = 'a'b = 'a'id(a) == id(b) # ===>true单个单词,不可修改,默认开启intern机制,共用对象...原创 2018-04-27 17:17:32 · 129 阅读 · 1 评论 -
单例模式与工厂模式--简解
单例模式保证系统中一个类只有一个实例而且该实例易于被外界访问,从而方便对实例个数的控制并节约系统资源class Test(object): is_instance = None is_first = True def __new__(cls, *args, **kwargs): ## 工厂方法,生成实例,控制实例的创建 if cls.i...原创 2018-04-28 11:04:45 · 857 阅读 · 0 评论 -
python3实现斐波那契数列--4种方法
基础版(list方法)# 比较占内存w = int(input("输入一个数字还你一个斐波那契数列:"))list_res = []def list_n(n): if n>=3: res=list_n(n-1)+list_n(n-2) else: res=1 return resprint("开始")for i i...原创 2018-04-28 11:57:55 · 12887 阅读 · 0 评论 -
python 单元测试
单元测试单元测试是用来对一个模块,一个函数或者一个类来进行正确性检验的测试工作;eg:对函数abs()进行单元测试: 1.输入一个0 or 正数,期待返回值与输入相同 2.输入负数,期待返回值与输入相反 3.输入非数字类型,期待抛出异常 typeError 当 所有结果都符号期待情况 ,就认为通过测试. 把上面的测试用例放在一个测试模块中,就是一个完整的单元测试.python...原创 2018-05-04 15:42:07 · 305 阅读 · 0 评论 -
python序列化--JSON
序列化–JSON把变量从内存中变成可存储或传输的过程称之为序列化(pickling)如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输(个人认为是最好的~)JSON表示的对象就是标准的JavaScript语言的对象pytho...原创 2018-05-04 20:11:06 · 161 阅读 · 0 评论 -
python正则
正则基本用法import reresult = re.match(r"正则","匹配字符串") 从开始匹配 成功返回 `match object` == re.search(r'^正则','匹配字符串')result = re.search(r'正则','匹配字符串') 从中找到符号的字符串 成功返回 `match object`result.group() 若匹配成功...原创 2018-05-05 11:17:42 · 599 阅读 · 0 评论 -
python3多任务--线程,进程以及协程
多任务并发:同一时间段 执行多个任务 —> 如:单核 基于时间片的CPU轮转并行:同一时间点 执行多个任务 —> 如:多核实现方式有:进程,线程,协程(代码层) 原谅我的低级画功 进程vs线程进程是资源分配的独立单位,线程是操作系统调度的基本执行单位一个程序中默认有一个主进程,一个进程中默认有一个主线程进程间是不共享数据,线程间是共享数据多进程和多线...原创 2018-05-07 12:20:36 · 2570 阅读 · 2 评论 -
装饰器装饰函数后恢复原函数名--两种方法
装饰器装饰一个函数会改变函数的名字def set_func(func): def call_func(*args, **kwargs): # 业务代码 print('xx') return func(*args, **kwargs) return call_func@set_funcdef func_test(): ...原创 2018-06-09 15:16:04 · 1726 阅读 · 0 评论 -
python格式化输出
格式化输出一般情况: print 'hello %s!' % ('Tom')特多时候: print 'Hello %(name)s!' % {'name':'Tom'}官方推荐: str.format()方法 eg:print '{greet} from {language}.'.format(greet = "hello world", language = 'python')...原创 2018-04-17 00:13:34 · 148 阅读 · 0 评论 -
python信仰
import thisThe Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than n...原创 2018-04-21 11:52:29 · 162 阅读 · 1 评论 -
改善Python程序的建议总结
1.格式化输出一般情况: print ‘hello %s!’ % (‘Tom’)特多时候: print ‘Hello %(name)s!’ % {‘name’:’Tom’}官方推荐: str.format()方法 eg:print ‘{greet} from {language}.’.format(greet = “hello world”, language = ‘python’)...原创 2018-05-03 11:12:12 · 500 阅读 · 0 评论 -
Python虚拟环境搭建以及使用pycharm快速搭建(进阶)
虚拟环境如果在一台电脑上,开发多个不同的项目,可能需要用到同一个包的不同版本,- 解决方案就是:虚拟环境 - 作用:虚拟环境可以搭建独立的python运行环境,使得单个项目的运行环境与其它项目互不影响 - 所有的虚拟环境都位于 /home/ 下的隐藏目录 .virtualenvs下(Ubuntu)如何搭建虚拟环境安装虚拟环境的命令:sudo pip insta...原创 2018-05-31 15:58:31 · 2766 阅读 · 4 评论