
Python
holysll
没有在深夜痛哭过的人,不足以谈人生
展开
-
【操作系统知识】多线程、多进程、并发并行、锁的梳理
1. 并发与并行(1) 并发并发是指同一时间间隔内多个任务都在运行,但是并不会在用一时刻同时运行,存在交替执行的情况,因此也经常存在资源竞争德尔情况。线程是并发的,实现的库有threading。(2) 并行并行指的是同一时刻多个任务同时运行,进程是并行的,实现的库有multiprocessing。(3) 并发与并行的应用场景IO密集型操作(程序需要执行较多的读写,请求和回复任务的需要CPU对硬盘、内存进行读写,如爬虫)应使用并发更好,类似于多线程。CPU密集型操作(程序运行需要花原创 2020-07-09 13:38:52 · 666 阅读 · 0 评论 -
【操作系统知识】线程间通信
9. 线程间通信(1) 互斥锁互斥锁为资源引入一个状态:锁定/非锁定。某个线程要更改共享数据时,先将其锁定,此时资源的状态为“锁定”,其他线程不能更改;直到该线程释放资源,将资源的状态变成“非锁定”,其他的线程才能再次锁定该资源。互斥锁保证了每次只有一个线程进行写入操作,从而保证了多线程情况下数据的正确性。"""#创建锁mutex = threading.Lock()#锁定mutex.acquire([timeout])#释放mutex.release()"""import thr原创 2020-07-09 13:27:04 · 860 阅读 · 0 评论 -
【操作系统知识】进程间通信
8. 进程间通信Process之间肯定需要通信的,操作系统提供了很多机制来实现进程间的通信。Python的multiprocessing模块包装了底层的机制,提供了Queue/Pipes等多种方式来交换数据。(1) 消息队列Queue简单的理解Queue实现进程间通信的方式,就是使用了操作系统给开辟的一个队列空间,各进程可以把数据放到该队列中,当然也可以从队列中把自己需要的信息取走。Queue/queue模块常用属性属性描述****Queue/queue模块的类***原创 2020-07-09 13:25:10 · 244 阅读 · 0 评论 -
【操作系统知识】python实现协程
7. python实现协程(1) yield + send实现通过“生产者-消费者”模型来看下协程的应用,生产者产生消息后,直接通过yield跳转到消费者开始执行,带消费者执行完毕后,切换回生产者继续生产。# 利用生成器实现协程# 来源:https://juejin.im/post/5d888151f265da03dd3db0f5def consumer(): r = '' while True: n = yield r if not n:原创 2020-07-09 13:23:55 · 236 阅读 · 0 评论 -
【操作系统知识】python实现多线程
6. python实现多线程多任务可以由多进程完成,也可以由一个进程内的多线程完成。线程是操作系统直接支持的执行单元,Python的标准库提供了两个模块_thread(低级模块)和threading(高级模块),大部分情况下选择用threading模块。import timeimport threading# 新线程执行def loop(num): print(f"线程{threading.current_thread().name}正在运行...") n = 0 w原创 2020-07-09 13:22:39 · 226 阅读 · 0 评论 -
【操作系统知识】python实现多进程
5. python实现多进程Unix/Linux操作系统提供了一个fork()系统调用,它非常特殊。普通的函数调用,调用一次返回一次,但是fork()调用一次返回两次,因为操作系统自动把当前进程(称为父进程)复制了一份(称为子进程),然后分别在父进程和子进程内返回。子进程永远返回0,而父进程返回进程的ID。一个父进程可以fork出多个子进程,所以父进程要记下每个子进程的ID,而子进程只主要调用getppid()就可以拿到父进程的ID。父进程、子进程执行的顺序没有规律,完全取决于操作系统的调度原创 2020-07-09 13:21:28 · 392 阅读 · 0 评论 -
【Django】Django 基础知识梳理
Django1. Django2. Django请求生命周期3. MVC模式与MVT模式4. FBV和CBV5. ORM的理解6. 中间件的作用7. 谈谈restful规范的认识8. rest_framework框架中有哪些组件9. rest_framework框架认证流程10. rest_framework实现用户访问频率控制11. 路由匹配的原则12. 路由系统中include的作用13. Django默认自动在网址结尾添加’/’14. urlpatterns中的nam..原创 2020-07-07 01:47:56 · 374 阅读 · 0 评论 -
【Django】Django中的跨域问题如何处理
Django中的跨域问题如何处理跨域是指一个域下面的文档或脚本试图去请求另一个与下的资源。当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同时,就会出现跨域。解决跨域问题:(1)安装第三方扩展:pip install django-cors-headers(2)添加应用INSTALL_APPS = ( 'corsheaders',)(3)添加中间件,第一条MIDDLEWARE = [ 'corsheaders.middleware.Cor原创 2020-07-07 01:42:31 · 588 阅读 · 0 评论 -
【Django】rest_framework框架认证流程
rest_framework框架认证流程参考Django rest framework源码分析(1)----认证基于CBV使用rest_framework框架,基于反射实现根据请求方式不同,执行不同的方法。原理:url–>view方法–>dispatch方法(反射执行其他方法:GET/POST/PUT/DELETE等)。# 1、在settings的app中添加rest_frameworkINSTALLED_APPS = { 'rest_framework',}# 配置u原创 2020-07-07 01:38:57 · 399 阅读 · 0 评论 -
【网络基础知识】Socket编程
24. socket编程socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用打开/读写/关闭模式来操作。socket就是该模式的一种实现,socket即是一种特殊的文件,一些socket函数就是对其极性的操作(读/写IO、打开、关闭)基本上,socket是任何一种计算机网络通讯中最基础的内容。file模块是针对某个指定文件进行打开/读写/关闭;而socket模块是针对服务器端和客户端socket进行打开/读写/关闭。例如当你在浏览器地址输入http://ww原创 2020-07-07 01:19:15 · 307 阅读 · 0 评论 -
【Python基础知识库】Numpy库里有哪些函数?
NumPy是Numerical Python的简称,是目前python高性能科学计算和数据分析中最为重要的基础包。ndarray, 具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。 线性代数、随机数生成以及傅里叶变换功能。 用于集成C、C++、Fortr...原创 2019-04-19 01:26:50 · 2337 阅读 · 0 评论 -
【Python基础知识库】Python中字符串和字节串的区别
字符串和字节串的区别字符串有若干个字符组成,以字符为单位进行操作;字节串由若干个字节组成,以字节为单位进行操作。字符串和直接传出了操作的数据单元不同之外,它们支持的所有方法基本相同。字符串和字节串都是不可变序列,不能随意增加和删除数据。bytes只负责以字节序列的形式(二进制的形式)来存储数据,至于这些数据到底表示什么内容(字符串、数字、图片、音频等),完全由程序的解析方式决定。bytes只是简单记录内存中的原始数据,不在意这些数据的使用。字符串和字节串可以通过不同字符集原创 2020-07-05 00:55:51 · 4302 阅读 · 0 评论 -
【Python基础知识库】Python中的参数类型
python中参数类型有哪些位置参数:也叫必备参数,指函数调用时,传入的实参数量和位置、类型必须与函数定义时保持一致,即形参和实参的位置数量必须一致# 在调用func函数时,必须按位置传入name和age,多了少了都不行,否则会抛出TypeError异常def func(name, age): """ :param name: str :param age: int :return: tuple """ print(name, age)func(原创 2020-07-05 00:55:09 · 268 阅读 · 0 评论 -
【Python基础知识库】Python中函数传参过程
python中函数传参过程值传递值传递实际上就是把实际参数值的副本传入函数,不管函数对该值做了什么操作,而参数本身不会受到任何影响。def func(a, b): a, b = b, a print("func里交换处理完a的值为{},b的值为{}".format(a, b))if __name__ == '__main__': a, b = 3, 4 print("交换前a的值为{},b的值为{}".format(a, b)) func(3, 4)原创 2020-07-05 00:54:12 · 189 阅读 · 0 评论 -
【Python基础知识库】Python中bytes与bytearray
常识普及:通常在常用的ASCII、utf-8 和unicode 编码中,像 a 这样一个英文字符,在内存中占一个字节。一个汉字在ASCII和unicode编码里占两个字节,在utf-8 编码中占三个字节。一个字节有八位,也就是八个数字,也叫8个bit 。计算机中的最小储存单位就是bit,bit是二进制的,所以计算机中的数据全都是0和1,没有其他的数字。bytesbytes是字节组成的有序的不可变序列字符串按照不同的字符集编码encode返回直接序列bytesencode(encod.原创 2020-07-05 00:53:15 · 680 阅读 · 0 评论 -
【Python基础知识库】Python中yield语句的作用
yield语句的作用python之yield、yield from该关键字用于函数中会把函数包装为生成器(generator),调用生成器函数时,会返回一个生成器对象,生成器函数是生成器工厂。def func(): yield 1 yield 2 yield 3for i in func(): print(i)g = func()print(next(g))print(next(g))print(next(g))# 结果'''12312原创 2020-07-05 00:51:41 · 1165 阅读 · 0 评论 -
【Python基础知识库】Python中正则表达式
python中正则使用方式正则表达式常用的匹配规则模式描述****一般字符****.匹配除换行符"\n"和"\r"之外的任意字符,在re.S模式下则能匹配任意字符\转义字符,使下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符,如果原始字符串中含有* . ? + $ ^ [ ] ( ) { } | \,需要在前面加转义字符\才能正确表示,或者在字符串前面加个r房子转义[…]字符集,用来表示一组字符,对应的位置可以是字符集中任意一个字符,字原创 2020-07-05 00:49:44 · 357 阅读 · 0 评论 -
【Python基础知识库】Python常见的内置数据结构
python常见的内置数据结构字符串(string)由字符组成的有序的序列,是字符的集合使用单引号’’、双引号""、三引号’’’’’'表示有顺序、能索引、可迭代、元素能重复、不可变对象python3中,字符串就是Unicode类型字符串连接:"分隔符".join(iterable),如:"".join(['1', '2', '3'])。注意:可迭代对象iterable必须是字符串字符串拼接:通过str + str 将两个字符串拼接得到一个新的字符串字符串分割:原创 2020-07-05 00:49:21 · 279 阅读 · 0 评论 -
【Python基础知识库】Python中反射机制
python中反射机制Python的反射机制反射的核心本质其实就是通过字符串的形式导入模块,通过字符串的形式,去模块中找指定函数,并执行。利用字符串的形式去对象(模块)中操作(增删改查)成员,是一种基于字符串的事件驱动。实现思路:规定用户输入格式 模块名/函数名 通过__import__的形式导入模块,并通过 hasattr和getattr 检查并获取函数返回值。方法描述getattr根据字符串形式去某个模块中寻找东西hasattr根据字符串形式去某个模块中判断东西是原创 2020-07-05 00:47:15 · 229 阅读 · 0 评论 -
【Python基础知识库】Python中代码性能分析
如何分析python代码性能python程序代码性能分析和计时统计以下方法分别针对代码块、代码程序文件、 函数进行性能计时统计:time.time()或者datetime.datetime.now()# 结束时间-开始时间import timeimport datetimestart = time.time() # 或者datetime.datetime.now()func() # 需要统计运行时长的函数end = time.time()print(end - start)原创 2020-07-05 00:46:48 · 260 阅读 · 0 评论 -
【Python基础知识库】Python中字符串格式化
字符串格式化%格式化: C 语言风格的 sprintf 形式, 用%占位# %o 八进制输出print("八进制:%o" % 222)# %d 十进制整数输出print("整数:%d, %d, %d" % (1, 22.33, 0.25))# %x 十六进制输出print("十六进制:%x" % 12)# 浮点数保留两位小数print("浮点数保留两位小数:%.2f" % 3.1415926)# 万能格式 %r,把任何类型(str、int、float、list、tuple、原创 2020-07-05 00:46:21 · 152 阅读 · 0 评论 -
【Python基础知识库】Python中raise语句的作用
raise语句的作用当程序出错时,python会自动触发异常,也可以通过raise语句触发异常;一旦执行了raise语句,之后的语句不再执行;但如果加入了try...excepet...finally语句,except里的语句会被执行,finally一样也会被执行。raise语法格式:raise [Exception [, args [, traceback]]],参数Exception 是异常的类型数标准异常中任一种(如NameError),args 是自已提供的异常参数;参数traceback原创 2020-07-05 00:45:55 · 3533 阅读 · 0 评论 -
【Python基础知识库】Python中decimal精确计算
python decimal精确计算python decimal精确计算(1). Decimal接收int和string类型参数from decimal import *# 不能传入浮点数据,因为浮点数据就不准确a = Decimal(3.33)*100b = Decimal('3.33')*100c = Decimal(3)print(a)print(b)print(c)# 结果'''Decimal('333.0000000000000071054273576')Dec原创 2020-07-05 00:45:21 · 517 阅读 · 0 评论 -
【Python基础知识库】Python语言基础知识点梳理
1. Python语言的特性Python是一种解释型语言,不需要再运行之前进行编译。Python是一种动态类型语言,不需要声明变量的类型。python适合面向对象编程,允许类的定义以及组合和继承。2. python语言相比其他语言的优点和缺点优点简单易懂,灵活简洁强大的标准库和三方库活跃的社区,许多开源项目开发效率高,迭代便捷应用领域广泛,Web开发、网络编程、自动化运维、Linux系统管理、数据分析、科学计算、人工智能、机器学习缺点执行效率较差,异步生态不完善,相关原创 2020-07-05 00:44:35 · 928 阅读 · 0 评论 -
【Python基础知识库】Python捕获异常
python捕获异常及方法总结在编写程序或者调试程序时,或多或少存在BUG或者异常,这时候就需要进行异常的捕获,根据异常Traceback定位出错点,进行处理。异常类型(1) Python内置异常在Python中,异常也是对象,python的异常处理能力很强大,有很多内置异常,可以为用户准确反馈出错信息。BaseException是所有内置异常的基类,但用户自定义的类并不几层BaseException,所有的异常类都是从Exception继承,且都在exceptions模块中定义。pyth原创 2020-07-05 00:48:13 · 681 阅读 · 0 评论 -
【Python基础知识库】Python中元编程
Python黑魔法:元类和元编程Python 元编程元编程(Meta Programming)又叫超编程,是指某类计算机程序的编写,这类计算机程序的编写或者超重其他程序(或者自身)作为他们的数据,或者在运行完成部分本应该在编译时完成的工作。多数情况下,与手工编译全部代码相比,程序员可以获得更高的工作效率,或者给与程序员更大的灵活度去处理新的情形而无需重新编译。编写元程序的语言称之为元语言。被操作的程序的语言称之为“目标语言”。一门编程语言可以同时也是自身的元语言的能力称之为“反射”或者“自反”。原创 2020-07-04 19:00:48 · 244 阅读 · 0 评论 -
【Python基础知识库】Python中的高阶函数
高阶函数:一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),满足其一则为高阶函数。abs# Python内置的绝对值函数a = abs(-10) # 直接调用abs()函数f = abs # 函数本身赋值给变量,即变量指向函数b = f(-10)print(a)print(b)# 结果'''1010'''mapmap()函数会根据的函数对指定的序列做映射。map()函数语法:map(functio.原创 2020-07-04 18:58:36 · 2283 阅读 · 0 评论 -
【Python基础知识库】Python中重载
参考python 中的重载在Python中,具有重载的思想却没有重载的概念。实际上,Python编程中具有重载的目的却无重载的行为,或者说python并不需要重载。python是一门动态语言,不需要声明变量类型,函数中可以接受任何类型的参数也就无法根据参数类型来支持重载,python没有必要去考虑参数的类型问题,这些都可以在函数内部判断处理,并无必要去在写一个函数。python 有多种传参方式,默认参数、可变参数、可变关键字参数,可以处理函数参数中参数可变的问题。# python3.4 中提供的一个原创 2020-07-04 18:56:28 · 3088 阅读 · 1 评论 -
【Python基础知识库】Python中多态与多态性
多态:指的是以类事物有多种形态,如一个抽象类有多个子类,多态的概念依赖于继承;如在java中,一个函数由于函数签名不同,可以有同名的不同函数存在,调用的时候根据函数签名不同自动找到相应的函数执行。简单来说,就是同一事物的多种形态。Python中的多态不是语法,而是一种设计思想,多态的设计就是要完成对不同类型对象使用相同方法调用能得到各自期望的结果。# 多态:同一种事物的多种形态,动物分为人、猪、狗等等class Animal: def run(self): raise Att.原创 2020-07-04 18:54:50 · 237 阅读 · 0 评论 -
【Python基础知识库】Python类的继承
继承是一种创建新类的方式,新创建的类加子类,继承的叫父类、超类、基类。继承是类与类之间的关系,继承的作用是减少代码冗余、提高重用性。继承的特征:所有的类都继承自object类,即所有的类都是object类的子类;子类一旦继承父类,则可以使用父类中除了私有成员外的所有内容;子类继承父类后,并没有捡父类成员完全复制到子类中,而是通过引用关系访问调用;子类可以定义独有的成员属性和方法;子类中定义的成员和父类成员如果同名,则优先使用子类成员;子类如果想扩充父类的方法,可以再定义新方法的同时访问父类.原创 2020-07-04 18:53:22 · 314 阅读 · 0 评论 -
【Python基础知识库】Python类的封装
python 类的封装面向对象编程的一个重要特点就是数据封装。类的封装包含数据封装、方法封装、属性封装。# 数据封装,将程序中需要的数据按照统一的格式封装在类型的内部,通过该类型的对象包装使用数据class Student: def __init__(self, name, age): self.name = name self.age = age# 方法封装,函数和方法混合开发, 处理和某个数据关联的功能-> 功能代码封装成函数,将函数封装在类原创 2020-07-04 18:52:19 · 870 阅读 · 0 评论 -
【Python基础知识库】Python中range与Xrange的区别
range()是Python的内置函数,用于创建整数的列表,可以生成递减或者递增的数列。用法:range(start, stop, step),生成一个序列。# python3下的range,其实已经把xrange合并过来了x = range(0,5)print(type(x))print(x)# python3结果'''<class 'range'>range(0, 5)'''# python2结果'''<type 'list'>[0, 1, 2.原创 2020-07-04 18:48:03 · 405 阅读 · 0 评论 -
【Python基础知识库】Python中search与match的区别
search()函数会在整个字符串内查找模式匹配,直到找到第一个匹配,然后返回一个包含匹配信息的对象,该对象可以通过group()方法得到匹配的字符串,如果没有字符串没有匹配到,则返回None。import reprint(re.search("time", "datetime"))print(re.search("time", "datetime").span())print(re.search("time1", "datetime"))print(re.search("hello", ".原创 2020-07-04 18:46:45 · 155 阅读 · 0 评论 -
【Python基础知识库】Python浅拷贝与深拷贝
赋值:对象赋值实际上是对象的引用。类似于改名字,内部结构、内存空间地址都一样,赋值给另一个变量的时候,并没有拷贝这个对象,而是拷贝了这个对象的引用。浅拷贝:另开辟新内存空间,只拷贝父结构,没有拷贝子对象,所以原始数据改变,子对象会改变。import copya = [1, 2, 3, ['a', 'b']]b = copy.copy(a)a.append(5)print(a)print(b)# 结果1'''a = [1, 2, 3, ['a', 'b'], 5]b = [1.原创 2020-07-04 18:43:30 · 131 阅读 · 0 评论 -
【Python基础知识库】Python闭包
闭包(closure)是函数式编程的重要的语法结构,也是一种组织代码的结构,提高了代码的复用性。简单说,外函数的内部定义了一个内函数,内部函数使用了外部函数的临时变量,并外函数的返回值是内函数的引用。产生闭包需满足的条件:必须有一个内嵌函数内嵌函数必须引用外部函数的变量外部函数的返回值必须是内嵌函数简单说,闭包就是根据不同的配置信息得到不同的结果,装饰器就是一种闭包,闭包有效的减少了函数所需定义的参数数目。闭包的好处:- 取代硬编码中的常量- 避免使用全局值,并提供某种形式的数据.原创 2020-07-04 18:42:10 · 121 阅读 · 0 评论 -
【Python基础知识库】Python语法糖
在计算及科学中,语法糖是某种特殊的语法,对语言的功能没有影响,但对程序员来说,有更好的易用性,简洁性、可读性、方便性。比如索引切片、列表推导式、字典推导式、生成器推导式等等。切片操作Python切片操作详细例子s = '123456's[:3] # 结果为'123',取索引索引小于3的值,或叫“取前3位”s[3:] # 结果为'456', 取索引大于等于3的值,或叫“从第4位取到最后”s[2:4] # 结果为'34', 取索引大于等2,小于4的值,或叫“取第3位到第4位”s[:].原创 2020-07-04 18:38:02 · 762 阅读 · 0 评论 -
【Python基础知识库】Python鸭子类型
编程语言中动态类型语言的一种设计风格,一个对象的特征不是由父类决定,而是通过对象的方法决定。类与类之间不用共同继承一个父类,只需要将它们做的像一件事物即可。注重对象的行为,而非对象的类型,一个对象能都昨晚函数、表达是的参数,取决于其行为而非类型归属。class Duck: def __init__(self, name): self.name = name def quack(self): print("gua gua")class Man.原创 2020-07-04 18:36:10 · 155 阅读 · 0 评论 -
【Python基础知识库】Python2.x 与Python3.x的主要区别
详细参考输入, py2中:raw_input(); py3中:input()输出, py2中:print语句; py3中:print()函数除法,py2中整数间进行’/‘和’//‘运算返回的是整数,而py3的’/'运算返回的是浮点数遍历范围,py2中:range()或xrange(); py3中:不等于,py2中:range不等于,py2中:<>或!= ; py3中:!=编码问题,py3默认使用unicode,字节是bytes;而py2中字节是str, 默认支原创 2020-07-04 18:32:45 · 166 阅读 · 0 评论 -
【Python基础知识库】Python内存管理与垃圾回收机制
Python垃圾回收机制详解Python GC主要使用引用计数(reference counting)来跟踪和回收垃圾。在引用计数的基础上,通过标记清除机制(mark and sweep)解决容器对象可能产生的循环引用问题,通过分代回收(generation collection)策略,以以空间换时间的方法来提高垃圾回收的效率。引用计数引用计数法的原理是每个对象维护一个ob_ref,用来记录当前对象被引用的次数,也就是来追踪到底有多少引用指向了这个对象,当发生(对象被创建、对象被引用、对象被原创 2020-07-04 18:30:21 · 173 阅读 · 0 评论 -
【Python基础知识库】Python文件流操作
打开文件f=open('file_name', 'file_type')if f: # 判断文件是否打开file_typewith open('file_name', 'file_type') as f:访问模式w: 只写r:只读a: 追加写入rb: 二进制只读wb:二进制写入ab:二进制追加写入r+:打开一个文件用于读写,文件指针将会放在文件的开头。w+:打开一个文件用于读写,如果文件已经存在则将其覆盖,如果文件不存在,则创建新文件。a+:打开一个文件.原创 2020-07-04 18:23:40 · 292 阅读 · 0 评论