随笔分类 - python核心知识点
摘要:简介 与java语言一样,python也属于面向对象编程,除此之外,还有面向过程编程、函数式编程。 面向过程编程:依据业务逻辑自上而下一步一步编写, 可能会存在冗余现象 函数式编程:需要编程语言可以将方法或函数作为返回值,python支持函数式编程,但java就不支持,编写函数,然后在使用时调用即可
阅读全文
摘要:简介 众所周知,type在一般情况下,我们都会去获取一个对象的类型,然后进行类型的比较;除此之外,type还有一个不为人知的作用:动态的创建类。在了解这个之前,首先了解以下type和isinstance之间的关系或者说是区别,这两个方法都可以判断类型,但又有所区别 type与isinstance c
阅读全文
摘要:简介 在实际开发中,为了防止异常界面直接被用户看到,往往我们会采用捕捉异常的方式来进一步处理异常。 异常捕捉 如下代码由于下标越界会导致异常 data = range(10) print(data[11]) IndexError: range object index out of range 因此
阅读全文
摘要:简介 通过字符串操作对象或者模块的成员(属性、方法),基于字符串驱动的,可以反射的对象包含: 1、反射类中的变量 : 静态属性,类方法,静态方法 2、反射对象中的变量、对象属性、普通方法 3、反射模块中的变量 4、反射本文件中的变量 主要使用到以下四个函数 def getattr(__o: obje
阅读全文
摘要:简介 在实际项目中可能会使用到websocket,在使用过程中可能会存在一种问题就是,当网络异常断开时、或者websocket服务波动时,websocket会断开,导致异常,正常情况下,我们会采用心跳的方式来保持与服务器之间的通信,即客户端向服务端相互发送消息,正常情况下我们都会发送ping、pon
阅读全文
摘要:简介 在之前的理解中,讲述了socket、websocket等相关的理解,本文就socket、websocket、http理解一下其对应的联系和区别。 HTTP 协议 http 为短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要
阅读全文
摘要:简介 在实际项目中,我们其实并不会太多的使用魔法函数,但是一些方法或者函数均是有魔法函数演变而来的,且在一些面试过程中会遇到一些关于常见方法的实现,就会牵扯到相应的魔法函数,此处将介绍一些我认为比较常用的魔法函数。 __new __、__init __ __new__(cls[, ...]): 调用
阅读全文
摘要:简介 python中数据分为可变类型,不可变类型。不同的数据类型影响着不同情况下的深浅拷贝。 下面则将简要介绍一下 可变类型 当某个数据的值发生改变时,它对应的内存地址不发生改变,常见的有列表、字典、集合 为什么可变类型,值发生变化,内存地址不会发生变化呢? 可变类型中拥有一个内存地址,其中值存放的
阅读全文
摘要:简介 yield关键字是python的一种高阶用法,使用yield的函数会返回一个生成器对象,生成器又是一个迭代器,与迭代器相类似的则是可迭代对象,下面首先介绍一下迭代器吧。 迭代器 在python中规定,当一个对象里面实现了__iter__、__next__的这两个魔法函数时,则此对象为迭代器。对
阅读全文
摘要:简介 大家都知道,在java中,函数或者方法的参数在调用时必须对其进行传参操作,也就是所谓的必选参数,也可以称为位置参数,除此之外,python还拥有其他语言不具有的一些参数类型,以下将进行一一介绍。 必选参数 必选参数,又称位置参数,是大多数语言都会有的参数类型, 此参数在调用是必须进行传参。 #
阅读全文
摘要:简介 前面两篇文章已经介绍了线程与进程,我们知道计算机程序是可执行的二进制程序,它们只有加载到内存中,被操作系统调用才开始它们的生命周期,进程(有时被称为重量级进程)是程序的一次执行。每个进程都有自己的地址空间、内存、数据栈及其它记录其运行轨迹的辅助数据,正是因为独立,进程间只能使用进程间通信,无法
阅读全文
摘要:简介 在实际开发中,可能会出现一个需求场景,要求网页的数据可以实时更新。在这种情况下,我们一般会采用轮询的方式,间隔性获取数据,即通过定时器间隔性请求相应接口获取数据,此方式由于是不断请求服务器,资源开销相对较大,且由于数据更新是间隔性,会导致数据时效性欠缺,可能会出现部分延迟,因此衍生出另一种方式
阅读全文
摘要:简介 装饰器可以在不修改原有代码的基础上添加新的功能,可以将重复重用的代码抽取出来,进一步解耦,方便维护,一般适用于插入日志、性能测试、事务处理、缓存等 装饰器的前提 闭包 一般来说,当一个函数嵌套另一个函数时,内部函数引用到了外部函数的变量,则形成了闭包,如下所示,outter与inner形成了闭
阅读全文
摘要:zip函数 zip()一般传入可迭代对象(不止一个),将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的zip对象(python2返回元组),需要手动使用tuple、list等序列转换成可使用的对象。 打包 # 传入一个可迭代对象 data = [i for i in range(3)]
阅读全文
摘要:简介 线程理解中介绍过,再回顾一遍,一个应用程序由多个进程组成,一个进程由多个线程组成,由操作系统根据优先级、时间片来绝对线程的运行 进程 python的进程不同于线程,在主流的cpython解释器下,无论创建多少线程,都只会在一个cpu上运行,与java等语言有所区别,进程则与其他语言类似,会占用
阅读全文
摘要:简介 一个应用程序由多个进程组成,一个进程有多个线程,一个线程则是操作系统调度的最小单位,当应用程序运行时,操作系统根据优先级和时间片调度线程(决定此时此刻执行哪个线程)。 python的线程 python存在多个解释器,cpython、jpython等,但目前主流常用的则是cpython,其存在G
阅读全文
摘要:socket 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议栈进
阅读全文