随笔分类 - python基础部分
学习python记录
摘要:pymysqlpymysql - 断浪狂刀忆年少 - 博客园 (cnblogs.com) 1连接数据库 conn = pymysql.connect()获取连接对象 2获取游标 cursor = conn.cursor() 3使用sql语句 cursor.excute(sql语句) 4获取查询结果
阅读全文
摘要:什么是配置setting 设置项 相对于变量是常量 配置文件是什么 通常是Key/value形式 没有配置文件程序可能无法运行 一般配置数据是静态的常量 用来提供各种环境参数 配置文件类型 yaml toml json xml ini properties yaml语法 key: value冒号后必
阅读全文
摘要:多进程,每启动一个程序单开一块空间,单分配一些资源 多线程,在一个进程里面开多个线程,让多个线程同时工作,操作系统控制线程 对IO操作阻塞感知能力强 多协程,在一个线程,跑多个任务,程序控制协程 程序是别人写好的模块,所以感知IO操作阻塞能力差 gevent可以实现,当函数遇到IO操作(阻塞)时,就
阅读全文
摘要:进程池 进程的最佳数量:cpu核数+1import osos.cpu.count() 多线程最佳数量:cpu核数*5 进程池,一个池子,里面有固定数量的进程,这些进程一直属于待命状态,一旦有任务来,马上进行处理 同步调用 .apply(func,args=( , ))也就是说一个进程池中一个一个去执
阅读全文
摘要:主要用来解耦,适合高并发场景、爬虫 栈 先进后出 FILO 借助队列实现 FIFO 队列是安全的不用加锁 q.get()阻塞等待或取数据,如果有数据直接获取,如果没有数据就阻塞等待 q.put()阻塞或放数据,如果可以放数据继续放,不可以放阻塞等待(IO操作) q.get_nowait()不阻塞,如
阅读全文
摘要:整个系统进行资源分配调度的最小单位 指正在执行的程序 程序执行过程中一次指令,也可以交程序的一次执行过程 进程是一种动态概念 进程由三大部分组成 代码段 数据段 PCB进程管理控制 进程的三大基本状态 就绪状态已获得运行需要的所有资源除了CPU 执行状态已获得运行需要的所有资源包裹CPU,处于正在运
阅读全文
摘要:socket myphone = socket.socket()不入参默认使用tcp协议 myphone.bind(('127.0.0.1',9999)) 0-65535端口范围,0-1023知名端口 myphone.listen() 同时能接受链接 127.0.0.1本地会换地址,可用做代码功能性
阅读全文
摘要:正则表达式,一种独立的规则和语言,主要和字符串打交道 爬虫,从一大段文字中获取符合条件的内容 表单验证,检测一个字符串是否完全符合规则,先通过正则去判断是否符合规则,符合规则再去请求 字符组 匹配所有数字[0-9] 匹配所有小写字母[a-z] 匹配所有大写字母[A-Z] 匹配所有的数字大小写字母[0
阅读全文
摘要:模块的名字一般是小写字母 一般都是把相关功能放在一起 自定义模块 模块的导入 项目代码组织 项目 文件夹 文件 函数 代码 多个.py文件放到一个文件夹中 多个文件夹形成项目 代码组织形式是模块化的,一般根据功能划分模块 模块其实就是.py文件,包就是存储Python文件的文件夹(目录) 导入问题
阅读全文
摘要:多个类使用相同的方法和属性,应该把相同的方法抽象到父类中,减少代码的冗余 A类和B类需要调用相同的方法,创建C类,A和B继承C,A(C),B(C),A的对象和B的对象就可以直接调用C中的方法 A和B有相同的方法,一部分功能相同,还有不同的部分,创建父类C,把相同的部分放到C类的方法中,在A/B中保留
阅读全文
摘要:反射三个组合面向对象进阶-反射,内置方法 - 断浪狂刀忆年少 - 博客园 (cnblogs.com) 在 Python 中如何得到对象的所有属性-Python教程-PHP中文网 hasattr(对象,'属性名') 判断对象是否有这个属性,有则返回True,否则返回False getattr(对象,'
阅读全文
摘要:面向对象 - 断浪狂刀忆年少 - 博客园 (cnblogs.com) 通过函数实现面向对象编程 面向对象的思维内涵 只关心程序中有多少角色 每个角色有什么方法,有什么属性 所有角色都是由一个模板创建的 所有属性和技能都待在自己的角色模板中 可读性好 能够更加方便得为角色添加技能或属性 可扩展性好 面
阅读全文
摘要:模块底层都是c语言写的 模块的分类 内置模块,不需要自己安装,直接拿过来用 扩展模块,第三方模块,需要自己安装本地编辑器安装小白教程 (forchange.cn) random随机数 .random()不入参,求(0,1)之间的随机数,开区间 .randint(a,b)求随机整数,闭区间[a,b]
阅读全文
摘要:自己调用自己 官方最大递归深度1000次 from sys import setrecursionlimit 导入sys模块中可以设置递归函数
阅读全文
摘要:内建函数3.6内建函数 (itprojects.cn) local()本地的变量 globals()全局的变量 eval()把字符串组成的代码当作Python代码来执行并返回值,字符串转字典 exec() 和eval差不多,但是没有返回值 callable()检测对象是否可以被调用 反射 dir()
阅读全文
摘要:set集合 只有key的字典{} set中的元素必须是可hash的,也是不可变的 元素是无序,不重复的 set()转为集合,可以用来去重 增 .add()添加 .update()迭代更新 删 .remove()删,返回值是none .clear()清空,空集合是set() 改 先删再加 查 for循
阅读全文
摘要:列表每两个相邻的数,如果前面的比后面的大,则交换这两个数 一趟排序完成后,则无序区减少一个数,有序区增加一个数 使用双重for循环实现
阅读全文
摘要:装饰器底层实现原理 使用了闭包,函数名指向函数的内存地址,将函数内存地址赋值给变量,在不断传递函数地址,引用外层变量 传参 装饰器的调用 什么时候用装饰器? 开放封闭原则 开放:对扩展是开放的 封闭:对修改是封闭的 在已经写好的函数前后添加功能需要使用装饰器 装饰器的固定格式 被装饰的函数设置返回值
阅读全文
摘要:生成器的本质就是一个迭代器 生成器是没有return的,yield就是return 函数中有yield就是生成器 迭代器和生成器在读大文件时用的比较多 生成器表达式 (i for i in range(5)),,列表推导式[]换成() 生成器符合迭代器特点 一个一个取值,而不是一次把所有值都创建 只
阅读全文