python知识点小结

文章详细总结了Python3的基础知识,包括列表操作、循环控制、空操作、类与对象,以及面向对象编程的特性。此外,还探讨了多线程、多进程和协程的区别,以及浅拷贝与深拷贝的概念。另外,RESTfulAPI的设计原则和HTTP动词的使用也在文中提及。
摘要由CSDN通过智能技术生成

python3知识点小结

一、基础知识

1、append:在列表末尾添加新元素。
2、insert:在列表的特定位置添加元素。
3、extend:通过添加新列表来扩展列表。
4、break:在满足条件时,它将导致程序退出循环。
5、continue:将返回到循环的开头,它使程序在当前循环迭代中的跳过所有剩余语句。
6、pass:使程序传递所有剩余语句而不执行。
7、remove:将删除列表中的第一个匹配值,它以值作为参数。
8、del:使用索引删除元素,它不返回任何值。
9、pop:将删除列表中顶部的元素,并返回列表的顶部元素。
10、==比较两个对象或值的相等性。
11、is运算符用于检查两个对象是否属于同一内存对象。
12、!=如果两个变量或对象的值不相等,则返回true。
13、is not是用来检查两个对象是否属于同一内存对象。
14、使用class关键字可以创建了一个类
(1)一个类包含变量和成员组合,称为类成员。
(2)对象(Object)是真实存在的实体。
在Python中为类创建一个对象,我们可以使用 obj = CLASS_NAME()
例如:obj = num()
使用类的对象,我们可以访问类的所有成员,并对其进行操作。
(3)self表示类的实例。
通过使用self关键字,我们可以在Python中访问类的属性和方法。
注意,在类的函数当中,必须使用self,因为类中没有用于声明变量的显式语法。
15、OOPS是面向对象编程,封装(Encapsulation)、继承(Inheritance)和多态(Polymorphism)
16、python的GIL:GIL 是python的全局解释器锁,同一进程中假如有多个线程运行,一个线程在运行python程序的时候会霸占python解释器(加了一把锁即GIL),使该进程内的其他线程无法运行,等该线程运行完后其他线程才能运行。
如果线程运行过程中遇到耗时操作,则解释器锁解开,使其他线程运行。
所以在多线程中,线程的运行仍是有先后顺序的,并不是同时进行。
多进程中因为每个进程都能被系统分配资源,相当于每个进程有了一个python解释器,所以多进程可以实现多个进程的同时运行,缺点是进程系统资源开销大。
17、面向对象中__new__和__init__
(1)__new__至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别
__new__必须要有返回值,返回实例化出来的实例,这点在自己实现__new__时要特别注意,可以return父类(通过super(当前类名, cls))__new__出来的实例,或者直接是object的__new__出来的实例
(2)__init__是初始化方法,创建对象后,就立刻被默认调用了,可接收参数
__init__有一个参数self,就是这个__new__返回的实例,__init__在__new__的基础上可以完成一些其它初始化的动作,__init__不需要返回值
如果__new__创建的是当前类的实例,会自动调用__init__函数,通过return语句里面调用的__new__函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,那么实际创建返回的就是其他类的实例,其实就不会调用当前类的__init__函数,也不会调用其他类的__init__函数
18、多线程、多进程和协程:
(1)多线程:线程是进程的一个实体,是CPU进行调度的最小单位,他是比进程更小能独立运行的基本单位。
线程基本不拥有系统资源,只占用一点运行中的资源(如程序计数器,一组寄存器和栈),但是它可以与同属于一个进程的其他线程共享全部的资源。
提高程序的运行速率,上下文切换快,开销比较少,但是不够稳定,容易丢失数据,形成死锁。
(2)多进程:
进程是系统进行资源分配的最小单位,每个进程都有自己的独立内存空间,不用进程通过进程间通信来通信。
但是进程占据独立空间,比较重量级,所以上下文进程间的切换开销比较大,但是比较稳定安全。
(3)协程:
协程:是更小的执行单位,是一种轻量级的线程,协程的切换只是单纯的操作CPU的上下文,所以切换速度特别快,且耗能小。
19、浅拷贝与深拷贝
(1)浅拷贝:创建新对象,其内容是原对象的引用,只拷贝一层。
(2)深拷贝:和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。
20、RESTful:
REST:指的是一组架构约束条件和原则。满足这些约束条件和原则的应用程序或设计就是RESTful。
21、设计 restful API:
(1)协议:API与用户的通信协议,总是使用HTTPs协议。
(2)域名:应该尽量将API部署在专用域名之下
(3)版本:应该将API的版本号放入URL。
(4)路径:路径又称"终点"(endpoint),表示API的具体网址。在RESTful架构中,每个网址代表一种资源(resource),所以网址中不能有动词,只能有名词,而且所用的名词往往与数据库的表格名对应。一般来说,数据库中的表都是同种记录的"集合"(collection),所以API中的名词也应该使用复数。
(5)http 动词:常用的HTTP动词有下面五个
GET(SELECT):从服务器取出资源(一项或多项)。
POST(CREATE):在服务器新建一个资源。
PUT(UPDATE):在服务器更新资源(客户端提供改变后的完整资源)。
PATCH(UPDATE):在服务器更新资源(客户端提供改变的属性)。
DELETE(DELETE):从服务器删除资源。
(6)过滤信息:如果记录数量很多,服务器不可能都将它们返回给用户。API应该提供参数,过滤返回结果。
(7)状态码:服务器向用户返回的状态码和提示信息
(8)错误处理:如果状态码是4xx,就应该向用户返回出错信息
(9)返回结果:针对不同操作,服务器向用户返回的结果应该符合以下规范。
GET /collection:返回资源对象的列表(数组)
GET /collection/resource:返回单个资源对象
POST /collection:返回新生成的资源对象
PUT /collection/resource:返回完整的资源对象
PATCH /collection/resource:返回完整的资源对象
DELETE /collection/resource:返回一个空文档
22、浏览器请求相应全过程详解

  • 在浏览器中输入URL 或者IP 或者域名
  • 如果输入的是域名就需要进行DNS解析成IP地址,通过IP来确认是哪个服务器
  • 建立TCP 请求(即三次握手)
  • 发送http请求
  • 服务器处理请求,并将处理结果返回给浏览器
  • 最后断开连接(即四次挥手)
  • 浏览器根据返回结果进行处理以及页面渲染
    23、为什么是三次握手 而不是两次呢?
    防止出现请求超时脏链接
    24、python 常见的魔法方法
    init
    new
    call
    str
    repr
    25、基本的算法有哪些,评价一个算法的好坏
    基本的算法有: 排序算法(简单排序, 快速排序, 归并排序), 搜索(二分搜索), 对于其他基本数 据结构, 栈, 队列,树,都有一些基本的操作。
    评价算法的好坏一般有两种: 时间复杂度和空间复杂度。
    时间复杂度:同样的输入规模(问题规模)花费多少时间。
    空间复杂度:同样的输入规模花费多少空间(主要是内存)。
    以上两点越小越好。
    稳定性:不会引文输入的不同而导致不稳定的情况发生。
    算法的思路是否简单:越简单越容易实现的越好。

二、数据类型的方法

1、字符串(str):
(1)upper() 字母小写变大写
(2)swapcase() 字母大写变小写

三、常用模块和方法

1、使用索引反转字符串

	str="hello"
	print(str[::-1])

2、Lambda函数是不带名称的单行函数,可以具有n个参数,但只能有一个表达式。也称为匿名函数。

	eg: a=lambda x,y:x+y
		print(a(5,6))
	>>>11

3、返回最小字符串:min_str = min(_list, key=len)

_lis = ["flower", "flow", "flight"]
min_str = min(_list, key=len)
print(min_str)
>>>flow

4、zip函数获取可迭代对象,将它们聚合到一个元组中,然后返回结果。语法是zip(*iterables)

	numbers = [1, 2, 3]
	string = ['one', 'two', 'three'] 
	result = zip(numbers,string)
	print(set(result))
	>>>{(3, 'three'), (2, 'two'), (1, 'one')}

5、装饰器(Decorator)用于向现有代码添加功能。这也称为元编程,因为程序的一部分在编译时会尝试修改程序的另一部分。

	def addition(func):
        def inner(a,b):
            print("numbers are",a,"and",b)
            return func(a,b)
        return inner

	@addition
	def add(a,b):
	   print(a+b)
	
	add(5,6)
>>>
numbers are 5 and 6
11 

6、一行Python代码,取出列表中所有的偶数和奇数

	a = [1,2,3,4,5,6,7,8,9,10]
	odd, even = [el for el in a if el % 2==1], [el for el in a if el % 2==0]
	print(odd,even)
	>>> ([1, 3, 5, 7, 9], [2, 4, 6, 8, 10])

7、斐波那契数列:简单地说,起始两项为 0 和 1,此后的项分别为它的前两项之和。

	def fibo(num):
	    numList = [0, 1]
	    for i in range(num - 2):
	        numList.append(numList[-2] + numList[-1])
	    return numList
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值