Python
文章平均质量分 77
Python 知识分享
wohu007
这个作者很懒,什么都没留下…
展开
-
Python 三方库之 Loguru
这个库的目的是通过增加一些有用的功能来解决标准日志的缺陷,从而使。日志不那么令人痛苦。在您的应用程序中使用日志应该是一种自动行为,试图让它变得既愉快又强大。带来愉快的日志记录的库。原创 2023-05-15 21:45:00 · 963 阅读 · 0 评论 -
Python 依赖管理及打包三方库 Poetry
Poetry是Python中用于依赖管理和打包的工具。它允许您声明项目所依赖的库,并将为您管理(安装/更新)它们。原创 2022-11-09 22:15:00 · 5911 阅读 · 1 评论 -
Python 笔记(22)— 变量解析原则(LEGB)、浅拷贝、深拷贝
Python 变量解析原则、浅拷贝、深拷贝原创 2022-09-02 21:58:28 · 225 阅读 · 0 评论 -
Python 标准库之 fileinput 和 文件迭代器
fileinput 模块可以对一个或多个文件中的内容进行迭代、遍历等操作。原创 2022-08-31 22:48:35 · 381 阅读 · 0 评论 -
Python 笔记(21)— 协程实现、链式调用、await作用、并发任务、协程调用普通函数
1. 什么是协程在 Python 3.4 时候引进了协程的概念,它使用一种单线程单进程的的方式实现并发。协程,英文名是 Coroutine, 又称为微线程,是一种用户态的轻量级线程。协程不像线程和进程那样,需要进行系统内核上的上下文切换,协程的上下文切换是由程序员决定的。在 Python 中协程就是一个可以暂停执行的函数,听起来和生成器的概念一样。从 Python3.4 开始协程被加入到标准库,当时的协程是通过 @asyncio.coroutine 和 yeild from 实现的,看起来和生原创 2021-09-08 20:23:04 · 2971 阅读 · 0 评论 -
Python 笔记(20)— 闭包、单个装饰器、多个装饰器、装饰器修饰类、应用场景
1. 闭包在 Python 中,函数也可以作为参数。我们可以执行下面的代码:def func(a, b): return a + bprint(func)我们直接输出函数名,而没有加括号。输出结果如下:<function func at 0x000002C83CC96678>可以看懂结果是一个 function 的对象,我们可以把它赋值给另外的变量:def func(a, b): return a + bmy_func = funcprint(my_func(原创 2021-09-03 20:26:30 · 902 阅读 · 0 评论 -
Python 笔记(19)— 类属性(私有属性、公有属性、实例属性、局部变量)、类方法(实例方法、静态方法)、类继承、多重继承
1. 创建类类是对某个对象的定义,它包含有关对象动作方式的信息,包括它的名称、方法、属性和事件。类不存在于内存中,因此它本身并不是对象。当程序运行需要引用类的代码时,就会在内存中创建一个类的新实例,即对象。虽然只有一个类,但能以这个类在内存中创建多个相同类型的对象。class Person(object): #类的方法中必须要有一个self参数,但是方法被调用时,不用传递这个参数.....................原创 2019-04-20 21:54:11 · 4646 阅读 · 0 评论 -
Python 笔记(18)— 类的私有属性读取和修改方法
先看下面代码:class Movie(object): def __init__(self, name, year): self.name = name self.year = year def print_detail(self): print("Name is {}, year is {}".format(self.name,...原创 2020-03-06 21:28:56 · 7619 阅读 · 2 评论 -
Python 笔记(17)— 多进程实现(面向对象和面向过程)、守护进程、进程间通信、进程池、进程池之间通信、多进程生产消费模型
1 面向过程启动多进程Python 操作进程的类都定义在 multiprocessing 模块,该模块提供了一个 Process 类来代表一个进程对象,这个对象可以理解为是一个独立的进程,可以执行另外的事情。import timeimport multiprocessing def test1(): while True: print("--1--") time.sleep(1)def test2(): while True:原创 2021-09-09 20:23:40 · 1585 阅读 · 0 评论 -
Python 笔记(16)— 多线程、线程锁、线程池、线程数量、互斥锁、死锁、线程同步
主要介绍使用 threading 模块创建线程的 3 种方式,分别为:创建 Thread 实例函数创建 Thread 实例可调用的类对象使用 Thread 派生子类的方式1. Thread 实例-函数使用 threading 模块创建一个 Thread 的实例,传递给它一个函数。import threadingimport timeloops = [4, 2]def ............原创 2019-04-17 22:09:53 · 1624 阅读 · 0 评论 -
Python 笔记(15)— itertools 模块 chain、accumulate、compress、drop、take、repeat 等函数使用
Python 内置的 itertools 模块使用了 yield 生成器。1. chain 拼接迭代器chain 函数实现元素拼接,原型如下,参数 * 表示可变的参数:chain(*iterables)使用方法:In [15]: from itertools import chainIn [16]: a = chain(['This', 'is'], ["python", "q......原创 2020-03-08 08:17:28 · 1383 阅读 · 0 评论 -
Python 笔记(14)— 类对象及属性内置方法 classmethod、delattr、dir、hasattr、getattr、callable
1. classmethodclassmethod 修饰符对应的函数不需要实例化,不需要 self 参数。第一个参数需要是表示自身类的 cls 参数,能调用类的属性、方法、实例等。class People(object): def __init__(self, number, name): self.number = number self.name ......原创 2020-03-05 20:58:51 · 682 阅读 · 0 评论 -
Python 笔记(13)— 将字典格式的字符串(单引号、双引号)转为字典对象
引言在工作中遇到一个小问题,需要将一个 Python 的字符串转为字典,比如字符串:user_info = '{"name" : "john", "gender" : "male", "age": 28}'我们想把它转为下面的字典:user_dict = {"name" : "john", "gender" : "male", "age": 28}有以下几种方法:1. 通过 jso......原创 2019-04-13 22:08:04 · 3070 阅读 · 0 评论 -
Python 笔记(12)— 上下文管理器和 with 语句
1. 上下文管理器概念什么是 Python 的上下文管理器(Context Managers)呢?含有 __enter__ 和 __exit__ 方法的对象就是。上下文管理器存在的目的是管理 with 语句,就像是迭代器的存在是为了管理 for 语句一样。with 上下文管理器: 语句体2. with 语句当 with 遇到上下文管理器,就会在执行语句体之前,先执行上下文管理器的 __enter__ 方法,然后再执行语句体,执行完语句体后,最后执行 __exit__ 方法。举个例子:cl原创 2021-09-05 16:05:05 · 331 阅读 · 0 评论 -
Python 笔记(11)— 生成器(通过表达式和函数分别创建 generator)
通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含 100 万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,......原创 2019-04-18 22:20:44 · 203 阅读 · 0 评论 -
Python 笔记(10)— 列表生成式的使用(单数据运算、含有 if 条件、zip 、字典)
1. 单数据运算In [43]: a = [1,2,3,4,5]In [44]: b = [x*2 for x in a]In [45]: bOut[45]: [2, 4, 6, 8, 10]In [46]: c = [str(x) for x in a]In [47]: cOut[47]: ['1', '2', '3', '4', '5']2. 含有 if 条件In...原创 2020-03-01 18:22:01 · 317 阅读 · 0 评论 -
Python 笔记(09)— collections 模块 namedtuple、counter、defaultdict
1. namedtuple假设有两个列表,如下,要判断两个列表中的某一个索引值是否相等。In [7]: p = ['001', 'wohu', '100', 'Shaanxi']In [8]: t = ['002', 'tom', '20', 'Beijing']In [9]: p[0] == t[0]Out[9]: FalseIn [10]: p[3] == t[3]Out[.........原创 2020-03-08 18:57:21 · 222 阅读 · 0 评论 -
Python 笔记(08)— 关键字 global、nonlocal、yield用法
1. globalglobal 关键字用于表示某个变量是属于全局的,而不是局部变量。先看个例子:In [82]: x = 10In [83]: def func(): ...: x += 1 ...: print(x) ...: In [84]: func()--------------------------------------.........原创 2020-02-29 19:55:44 · 283 阅读 · 0 评论 -
Python 笔记(07)— 高阶函数 filter、map、reduce、reversed、sorted、iter 及内置函数 zip、enumerate
1. filter(function, iterable)过滤器,过滤掉不满足函数 function 的元素,重新返回一个新的迭代器。其中 function 函数的第一个参数是可迭代对象 iterable 中的一个元素,也就是说函数 function 依次接收 iterable 可迭代对象的每一个元素,并判断每一个元素是否符合 function 的条件。In [29]: a = [1,......原创 2020-02-28 20:18:09 · 428 阅读 · 0 评论 -
Python 笔记(06)— 函数不定长参数(可变位置参数、可变关键字参数)
1. 字典形式参数def test(x, y, *args, **kwargs): print(x) print(y) print(args) print(kwargs)test(1,2,3,4,a="hello",b="world")输出结果:12(3, 4){'a': 'hello', 'b': 'world'}2. 传入元组和字典de...原创 2020-02-23 10:57:45 · 1307 阅读 · 0 评论 -
Python 笔记(05)— 源码函数格式带有 * 和 / 的使用说明
1. max()我们以内置函数 max 为例进行说明:max(iterable, *[, default=obj, key=func]) -> value函数形参列表中符号 * 表示,后面的形参只能为关键字参数( keyword argument ),不能为位置参数( positional argument ),也就是说,max 函数使用方法:In [81]: a = [1,2,3.........原创 2020-02-26 20:34:53 · 315 阅读 · 0 评论 -
Python 笔记(04)— Python 2 与 3 区别
Python2.x 与 Python3.x 区别1. print 函数Python2 中 print 是语句(statement),Python3 中 print 则变成了函数。在 Python3 中调用print 需要加上括号,不加括号会报 SyntaxError。Python2 中使用逗号 , 表示不换行;Python3 中使用 print (“hi”,end="") 使用 end=......原创 2019-03-28 21:26:08 · 277 阅读 · 0 评论 -
Python 笔记(03)— 列表和迭代器区别
列表不论遍历多少次,表头位置始终是第一个元素;迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置。通过 type 关键字可以看到列表和迭代器的类型是不同的。In [1]: a = [1,2,3]In [2]: b = iter(a)In [3]: type(a)Out[3]: listIn [4]: type(b)Out[4]: list_iterato......原创 2020-03-07 20:34:45 · 4818 阅读 · 0 评论 -
Python 笔记(02)— 字典创建、更新、键值对不存在时更新(setdefault)、字典并集、差集、按键排序、按值排序、值为列表 defaultdict
1. 键值不存在时更新 setdefault2. 值为列表 defaultdict# 方法 1In [2]: d.update({'c': 3})In [3]: dOut[3]: {'a': 1, 'b': 2, 'c': 3}# 方法 2In [4]: d.update([('d', 4)])In [5]: dOut[5]: {'a': 1, 'b': 2, 'c': 3, 'd': ...原创 2020-02-27 20:06:54 · 5508 阅读 · 0 评论 -
Python 笔记(01)— 动态、强类型语言
1. 什么是动态语言?在了解动态语言之前,我们首先了解下 “类型检查”。类型检查是验证类型约束的过程,编译器或解释器通常在编译阶段或运行阶段做类型检查。类型检查就是查看 “变量” 和它们的 “类型”,然后判断表达式是否合理。例如,不能拿一个 string 类型变量除以浮点数变量。类型检查发生在程序运行阶段(run time ),那么它便是“动态类型语言”(dynamically type...原创 2020-03-07 07:18:54 · 1213 阅读 · 0 评论 -
Python 程序员常见错误
与 for、while、try 搭配的 else语句在 Python 中 else 除了与 if 匹配外,还可以与 for、while、try 语句匹配。for/else只有当 for 语句执行完毕的时候,else 才会执行。除非被 break 语句打断In [1]: for i in range(3): ...: print i ...: else: .......原创 2020-02-22 10:12:02 · 235 阅读 · 0 评论 -
Python 典型错误及关键知识点
1. 不要在 for 循环后面写 else 块In [40]: for i in range(3): ....: print i ....: else: ....: print "end" ....: 012end记住一点:for 循环里面有 break 时 else 不会执行,否则执行完 for 循环会继续执行 else 语句2. ......原创 2019-04-07 15:27:11 · 311 阅读 · 0 评论 -
Python 精选笔试面试习题—类继承、方法对象、包管理、闭包、可变类型作为默认参数、列表引用、sort与sorted、 append 和 extend、深拷贝和浅拷贝
1. 类继承如下代码class A(object): def show(self): print 'This is calss A'class B(A): def show(self): print 'This is calss B'obj = B()obj.show()如何才能调用类 A 的 show 方法呢?obj.__cla...原创 2020-03-10 20:44:50 · 240 阅读 · 0 评论 -
Python 笔试面试合集
参考链接:https://gitbook.cn/gitchat/activity/5cf8ca61da0c2c41ee4697ffhttps://gitbook.cn/books/5ca40fd11763103ff10b0e43/index.html原创 2021-09-10 20:52:43 · 142 阅读 · 0 评论 -
Python 中的魔术方法(双下划线开头和结尾的方法)
https://gitbook.cn/books/5ffd564919f81e0b10c9e39f/index.htmlhttps://www.cnblogs.com/pyxiaomangshe/p/7927540.htmlhttps://rszalski.github.io/magicmethods/https://www.tutorialsteacher.com/python/magic-methods-in-python原创 2021-09-06 20:23:41 · 935 阅读 · 0 评论 -
Python 精选笔试面试习题—sorted 与 sort 单例模式、统计字符个数Count、垃圾回收、lambda函数、静态方法、类方法、实例方法、分布式锁、
1. 字典根据键从小到大排序?In[38]: dic = {"name": "Tom", "age": 30, "country": "USA"}In[39]: sorted(dic.iteritems(), key=lambda x : x[0])Out[39]: [('age', 30), ('country', 'USA'), ('name', 'Tom')]In[40]: di...原创 2020-04-19 07:55:24 · 636 阅读 · 0 评论 -
Python 常见的坑汇总
1. 列表与 * 操作Python 中,* 操作符与 list 结合使用,实现元素复制。复制 5 个空列表:In [1]: [[]] * 5Out[1]: [[], [], [], [], []]In [2]: a = [[]] * 5In [3]: aOut[3]: [[], [], [], [], []]In [4]: 填充两个元素:In [4]: a[0].e...原创 2020-03-11 19:57:29 · 380 阅读 · 0 评论 -
Python 笔试面试及常用技巧 (1)
1. 交换两个数字In [66]: x, y = 1, 2In [67]: xOut[67]: 1In [68]: yOut[68]: 2赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 x 和 y。2. 链式比较In [71]: y = 5In [72]: 1 < y < 10Out[72]: TrueIn [73......原创 2019-04-14 23:27:45 · 1013 阅读 · 0 评论