
python开发学习
文章平均质量分 79
python全栈开发学习
MichelinMessi
这个作者很懒,什么都没留下…
展开
-
Day31 Socketserver
如何创建一个socketserver:1. 创建一个请求处理的类,并且这个类要继承BaseRequestHandler class ,并且还要重写父类里handle()方法(handle方法默认结束后断开链接继续监听)2. 必须实例化 TCPServer,并且传递server IP和上面创建的请求处理类,给这个TCPServer;3. Server对象调用server.handle_requese()(只处理一个请求)或server.server_forever()(处理多个一个请求,永远执行)。原创 2023-07-17 14:46:59 · 145 阅读 · 0 评论 -
Day29 网络基础
在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。(还有AF_INET6被用于ipv6,还有一些其他的地址家族,不过,他们要么是只用于某个平台,要么就是已经被废弃,或者是很少被使用,或者是根本没有实现,所有地址家族中,AF_INET是使用最广泛的一个,python支持很多种地址家族,但是由于我们只关心网络编程,所以大部分时候我么只使用AF_INET)原创 2023-07-01 21:44:19 · 147 阅读 · 0 评论 -
Day29 异常处理
class EgonException(BaseException): # 必须继承BaseException类try:raise EgonException('类型错误') # 主动触发异常print(e)只有在有必要的时候才定义我们自己的错误类型。如果可以选择Python已有的内置错误类型,尽量使用Python内置的错误类型。raise语句如果不带参数,就会把当前错误原样抛出。在except中raise一个Error,可以把一种类型的错误转化为另一种类型(只要是合理的转换逻辑)。原创 2023-07-01 20:45:55 · 122 阅读 · 0 评论 -
Day28 描述符应用与类的装饰器
属性的方法名不要和实例变量重名,通过实例.方法调用的时候,会首先转换为方法调用,但在执行return self.gender时,又视为访问self的属性,于是又转换为方法调用,造成无限递归,最终导致栈溢出报错RecursionError。type()函数既可以返回一个对象的类型,又可以创建出新的类型,比如,我们可以通过type()函数创建出Hello类,而无需通过class Hello(object)...的定义。它可以控制类的创建,可以控制类的属性和方法,还可以控制类的继承。原创 2023-06-30 23:48:00 · 83 阅读 · 0 评论 -
Day26 多态、封装、反射
但对于Python这样的动态语言来说,则不一定需要传入Animal类型,只需要保证传入的对象有这个方法就可以,如Animal中有一个方法run(),创建一个新对象Timer(不继承于Animal),也有一个run()方法,也是可以调用。封装的真谛在于明确地区分内外,封装的属性可以直接在内部使用,而不能被外部直接使用,然而定义属性的目的终归是要用,外部要想用类隐藏的属性,需要我们为其开辟接口,让外部能够间接地用到我们隐藏起来的属性。四个可以实现自省的函数,可以直接操作一个类或对象的状态。原创 2023-06-27 12:07:41 · 80 阅读 · 0 评论 -
Day25 静态、组合、继承
面向对象里的类和实际中的类是不完全一样的。原创 2023-06-23 15:21:37 · 61 阅读 · 0 评论 -
Day24 面向对象与实例属性
实例化的过程实际就是执行__init__的过程,这个函数内部只是为实例本身即self设定了一堆数据,所以实例只有数据属性,给实例绑定属性的方法是通过实例变量,或者通过self变量。直接在class中定义属性,这种属性是类属性,归类所有,但类的所有实例都可以访问到。实例化:由类生产对象的过程称之为实例化,类实例化的结果是一个对象或一个实例。类:把一类事物的相同特征和动作整合到一起的就是类,类是一个抽象的概念。通过点.来调用得到的要么是实例属性,要么是类属性。对象:就是基于类而创建的一个具体的事物。原创 2023-06-16 15:37:35 · 66 阅读 · 0 评论 -
Day22 常用模块
出现这种情况的时候,如果想要在bin.py中调用my_module包中的模块,可以首先通过sys.path查看文件模块搜索路径(pycharm会添加day21_lesson的路径),在其他环境中不一定添加有该路径,所以可能需要在bin中添加day21_lesson的路径,使用sys.path.append(r'路径\day21_lesson')但这样不易于移植,使用os.path.dirname(basename则是获取文件名)来获取当前文件的上级目录的绝对路径。原创 2023-06-15 17:13:10 · 64 阅读 · 0 评论 -
Day21 模块与包
把函数中具有相同功能的部分抽离出来作为新的函数,提高可读性和代码可维护性一个python文件有两种使用方法1.直接作为脚本执行 python xx.py2.在其他Python脚本中导入作为模块调用执行 import xx文件中最好只写功能,可执行部分都放到 if __name__ == '__main__'中当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。原创 2023-06-13 14:24:38 · 80 阅读 · 0 评论 -
Day20 函数闭包与装饰器
并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前,像foo(a=1, b='2', c=3, a', 1, None, )这样调用的话,会提示语法错误“SyntaxError: non-keyword arg after keyword arg”。:在函数嵌套的前提下,内部函数使用了外部函数的变量,并且外部函数返回了内部函数,则把这个使用外部函数变量的内部函数称之为闭包。在闭包函数内部,想要修改外部函数的局部变量,则使用nonlocal关键字。使用高阶函数实现装饰器。原创 2023-06-11 16:06:40 · 100 阅读 · 0 评论 -
Day19 生成器
生成器就是迭代器:自动实现迭代器(必须提供Next()方法)协议,所以通过next()方法进行取值。只要函数内部包含有yield关键字,那么函数名()的到的结果就是生成器,并且不会执行函数内部代码。x = yield另外一个特性:接收send传送过来的值,赋值给上一次停留的yield。yield:相当于return,可以保存函数运行状态。优点一:延迟计算,对于大数据量处理友好,节省内存。【return方法占空间大,效率低】【eval()可以把类型转换字典】原创 2023-06-10 20:46:31 · 87 阅读 · 0 评论 -
Day17 其他内置函数
zip(可迭代对象1,可迭代对象2)将对象中的对应的元素打包成一个个元组,返回由这些元组组成的列表。以最少的个数为准。原创 2023-06-07 13:57:13 · 74 阅读 · 0 评论 -
Day15 变量与递归函数
内,局部变量起作用,在其他地方全局变量起作用。【注!作用域关系是在函数定义阶段就已经固定的,与函数的调用位置无关】原创 2023-06-06 14:13:59 · 87 阅读 · 0 评论 -
Day8 Linux软件包管理
删除:yum erase 包名yum makecache:制作缓存,下一次不需要重新读取多个源\mv * /tmp/bak/ : \不用任何提示yum网络源进行下载安装后,会自动把软件包清理,若需要保存软件包,则修改下面文件源码安装步骤:下载包——>解包——>运行config脚本,添加编译参数,编译(gcc glibc) make——>make install 安装./configure --prefix=/usr/local/python3.5 指定安装地址。原创 2023-06-05 14:42:12 · 100 阅读 · 0 评论 -
Day7 Linux ip地址虚拟网络
ifconfig:查看已激活网卡的信息给网卡配置IP地址service network restart:重启网络服务网卡信息文件】依次是如果想要永久配置IP地址则修改后要重启网络服务才能生效(把ONBOOT改为yes),同时把守护进程关闭但这个守护进程下一次开机的时候还是默认开启chkconfig命令:主要用来更新(启动或停止)和查询系统服务的运行级信息。谨记chkconfig不是立即自动禁止或激活一个服务,它只是简单的改变了符号连接。原创 2023-06-05 14:26:33 · 101 阅读 · 0 评论 -
Day6 Linux磁盘管理
此时还不能真正使用,还需要格式化mkfs.ext4(centos 6)制作文件系统,到这里还只是对硬件进行处理,实际使用中我们是使用目录对文件进行操作,所以需要把对应盘映射到某个目录中,对目录进行操作就是对对应盘进行操作,这个就叫做挂载。dd写数据,输入文件是/dev/zero,输出文件是/sdb5/test,大小是1个G,总计1个文件,可以用来写数据,也可以用来测试硬盘写入速度。mount /dev/sdb1 /sdb1:将分区/dev/sdb1挂载到指定目录/sdb1。原创 2023-06-05 14:08:26 · 72 阅读 · 0 评论 -
Day5 Linux文件操作进程管理
实现数据的重复使用,速度慢的设备需要通过缓存将经常要用到的数据缓存起来,缓存下来的数据可以提供高速的传输速度给速度快的设备。内存在用的时候就是使用buffer和cache,第一行中的used就是分配给buffer和cache的量,后面的buffers和cached是已经分配但还没使用的,第二行的used才是真正的目前内存使用量。grep 是查找含有指定文本行的意思,比如grep 'test' 就是查找含有test的文本的行。进程使用的、未被换出的物理内存大小,单位kb。原创 2023-06-04 18:10:25 · 72 阅读 · 0 评论 -
Day4 Linux用户权限与组
每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。比如说,我们手动创建用户 odysee,在建立用户odysee同时,就会建立odysee组作为odysee用户的初始组。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。用户在被创建的时候会同时创建一个同名的组,组密码存放在/etc/gshadow。用户可以加入多个其他的用户组,并拥有这些组的权限。chown 属主.属组 参数。原创 2023-06-04 17:47:26 · 79 阅读 · 0 评论 -
Day14 集合与函数
参数收集所有未匹配的位置参数组成一个tuple对象,局部变量args指向此tuple对象**参数收集所有未匹配的关键字参数组成一个dict对象,局部变量kwargs指向此dict对象。原创 2023-05-27 18:10:23 · 76 阅读 · 0 评论 -
Day12 列表、元组、字典
列表、元组、字典原创 2023-05-27 17:55:17 · 76 阅读 · 0 评论 -
Day11 字符串详解
python字符串str常用函数原创 2023-03-04 20:08:08 · 80 阅读 · 0 评论 -
Day10 运算符与基本数据类型
python运算符、基本数据类型常用函数原创 2023-03-04 20:03:06 · 87 阅读 · 0 评论 -
Day9 Python安装与初识
python变量、条件循环语句原创 2023-02-27 11:45:21 · 85 阅读 · 0 评论 -
Day2&3 字符编码与Linux操作系统安装
Linux系统初识原创 2023-02-26 19:34:00 · 120 阅读 · 1 评论 -
Day1 计算机基础与网络基础
PC硬件基础知识原创 2023-02-26 19:33:21 · 86 阅读 · 0 评论