
python高级编程
hubingshabi
这个作者很懒,什么都没留下…
展开
-
python多任务之进程池copy文件夹中所有文件
import multiprocessingimport os# copy文件函数def copy_file(old_folder_name, new_folder_name, file_name): print('copy文件夹{}====》到{},文件名称为:{}'.format(old_folder_name, new_folder_name, file_name)) ...原创 2019-09-18 12:12:12 · 331 阅读 · 0 评论 -
python--import导入模块
导入方式:from xxx import yyy import xxx from xxx import * from xxx import yyy,mmm import xxx as XXX1. import 搜索路径import sysprint(sys.path)['', 'C:\\Users\\ASUS\\Anaconda3\\Scripts', 'C:\\U...原创 2019-09-23 19:06:05 · 333 阅读 · 0 评论 -
python--数据封装和私有化
数据封装:为啥要封装?看下面两个图私有化xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到) __xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__, __ ...原创 2019-09-23 19:18:19 · 316 阅读 · 0 评论 -
python--匿名函数、普通函数、闭包、对象,当作实参时,有说明区别?
匿名函数能够完成基本的简单功能,传递是这个函数的引用,只有功能 普通函数能够完成较为复杂的功能,传递的是这个函数的引用,只有功能 闭包能够完成将较为复杂的功能,传递的是这个闭包中的函数以及数据,因此传递是功能+数据 对象能够完成最为复杂的功能,传递的是很多数据+很多功能,因此传递是功能+数据...原创 2019-09-25 17:54:27 · 464 阅读 · 0 评论 -
python--变量修改
如果是对全局变量的修改用:global如果是对闭包中函数的局部变量的修改请用:nonlocalx = 300def test1(): x = 200 def test2(): nonlocal x print("----1----x=%d" % x) x = 100 print("----2----x=%d" % x) return test2t1 = te...原创 2019-09-25 18:33:34 · 717 阅读 · 0 评论 -
python--通用装饰器
*args, **kwargs来接受被修饰函数的不定长参数 在调用的时候,*,**来拆包 在调用原函数的地方写上return返回函数结果 def set_func(func): print("---开始进行装饰") def call_func(*args, **kwargs): # 1. *args, **kwargs来接受被修饰函数的不定长...原创 2019-09-27 13:04:40 · 170 阅读 · 0 评论 -
多个装饰器对同一个函数进行装饰
原创 2019-09-27 14:01:51 · 355 阅读 · 0 评论 -
python--浏览器url编解码
浏览器在向服务器传送数据时,会将特殊字符(空格,<, \ 等)、中文(中国)转码成类似%20,%3C,%5C、%E4%BD%A0%E4%B8%8D%E8%A1%8C,为什么会这样了?因为浏览器在将这些特殊字符当作get请求的参数时,会将特殊字符转码。什么是get请求及参数,就是链接对应html中的<a>标签,参数就是http://127.0.0.1:8080/update/0...原创 2019-09-28 17:57:38 · 687 阅读 · 0 评论 -
元类结构图
原创 2019-09-30 18:05:28 · 151 阅读 · 0 评论 -
Python--浅拷贝与深拷贝
引言1. 浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容2. 深拷贝是对于一个对象所有层次的拷贝(递归)1.赋值语句是浅拷贝:num1 = 1num2 = num12. copy.copy()浅拷贝 :首先会创建一个新的拷贝对象,当对象中的元素为引用类型时,拷贝的引用,而不是内容v1 = [1,2]print(id(v1))v2 = c...原创 2019-09-23 16:55:34 · 101 阅读 · 0 评论 -
Python全局解释器锁(GIL)问题及解决办法
GIL简介gil global interpreter lock (cpython)python中一个线程对应于c语言中的一个线程gil使得同一个时刻只有一个线程在一个cpu上执行字节码, 无法将多个线程映射到多核cpu上执行gil会根据执行的字节码行数以及时间片释放gil,gil在遇到io阻塞的时候主动释放锁GIL面试题如下描述Python GIL的概念, 以及它对...原创 2019-09-23 16:29:39 · 1214 阅读 · 0 评论 -
python多任务之多线程udp聊天机器
import threadingfrom _socket import AF_INET, SOCK_DGRAMfrom socket import socketdef send_data(socket, ): while True: print('开启发送数据线程--------') data = input('发送数据:') so...原创 2019-09-18 12:17:41 · 384 阅读 · 0 评论 -
python之迭代器
一个实现了__iter__方法和__next__方法的对象,就是迭代器(Iterator)。如__iter__()返回别的自定义的对象的迭代器import timefrom collections import Iterablefrom collections import Iteratorclass Classmate(object): def __init__(se...原创 2019-09-18 16:25:40 · 88 阅读 · 0 评论 -
python协程的概念
dsd原创 2019-09-18 18:01:24 · 279 阅读 · 0 评论 -
aiohttp实现高并发爬虫(aiohttp+aiomysql)
asyncio+aiohttp(实现异步请求)爬虫,去重(在爬取的过程中有些url已经爬取了,就不需要再爬取), 入库(使用异步的方式,pymysql已经不适用了,aiomysql)# asyncio爬虫,去重(在爬取的过程中有些url已经爬取了,就不需要再爬取, 入库(使用异步的方式,pymysql已经不适用了,aiomysql)import asyncioimport reimpo...原创 2019-09-20 19:08:26 · 3547 阅读 · 2 评论 -
进程的概念-python
进程创建的时候,他会把主进程所有的资源复制一份多进程模式最大的优点就是稳定性高,因为一个子进程崩溃了,不会影响主进程和其他子进程。(当然主进程挂了所有进程就全挂了,但是Master进程只负责分配任务,挂掉的概率低)著名的Apache最早就是采用多进程模式。多进程模式的缺点是创建进程的代价大,在Unix/Linux系统下,用fork调用还行,在Windows下创建进程开销巨大。另外,操作...原创 2019-09-21 12:08:18 · 120 阅读 · 0 评论 -
loop事件循环的原理
loop是整个程序的心脏,知道调用什么样的代码,去运行什么方法,不会再阻塞到我们的建立连接或网络请求过程中,loop不停的向我们的操作系统请求哪些socket已经准备好了。一旦准备好了之后立马执行这里边的回调方法,回调方法里是没有我们费io的操作的,全部都是cpu的操作,cpu操作是远远高于我们的io操作的,#事件循环,不停的请求socket的状态并调用对应的回调函数def loop()...原创 2019-09-22 18:56:56 · 1484 阅读 · 0 评论 -
协程嵌套子协程
分析一段代码后,就能弄懂了:import asyncioasync def think(): print('盘算这生意靠不靠谱,思考一段时间后,将结果直接告知调用方event loop......') await asyncio.sleep(2.0)async def compute(x, y): print("event loop联系到子协程Compute ...原创 2019-09-22 21:04:47 · 1393 阅读 · 0 评论 -
python协程之绑定回调函数
import asynciofrom functools import partialimport requestsuri = ''print(id(uri))async def request(): url = 'https://www.baidu.com' status = requests.get(url) # print(status) re...原创 2019-09-22 23:23:58 · 1933 阅读 · 1 评论 -
getattr,setattr,hasattr详解
getattr,setattr,hasattr详解1,hasattr(object, name) 判断一个对象里面是否有name属性或者name方法,返回BOOL值,有name特性返回True, 否则返回False。需要注意的是name要用括号括起来实例:2,getattr(object, name[,default]) 获取对象obj...转载 2019-10-02 15:41:41 · 113 阅读 · 0 评论