
python
文章平均质量分 79
喜欢打篮球的普通人
这个作者很懒,什么都没留下…
展开
-
Python中使用logging模块
import os# 获取当前时间戳(精确到微秒)# 将时间戳转换为可读的格式seconds = int(current_time) # 获取秒部分# 格式化输出return f"global_logger = None def get_current_time() : # 获取当前时间戳(精确到微秒) import time。原创 2024-12-04 09:26:08 · 217 阅读 · 0 评论 -
windows11下面使用Pyinstaller打包python程序
其执行程序在C:\Users\script.wang\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kfra8p0\LocalCache\local-packages\Python38\Scripts\目录下面(需要自己找找看),使用pyinstaller全路径即可执行。(3)直接执行安装就好了,注意安装结束后要设置环境变量,或者安装时有选型可以勾选上不用设置环境变量也可以。(3)查看安装pyinstaller的安装位置。原创 2024-10-09 17:00:16 · 1798 阅读 · 0 评论 -
Ubuntu中Python包的寻找路径
解决办法:import之前用sys.path.append()方法加入xxx.pyd所在路径,确定当前路径推荐用os.path.realpath(‘.’)。问题:‘ImportError: No module named xxx’可能是xxx.pyd所在路径不在sys.path中。.__file__ 识别特定模块的位置。.__path__ 识别特定包的位置。原创 2024-02-25 16:20:07 · 1604 阅读 · 0 评论 -
Python使用struct模块
struct模块的主要功能是根据一些特定的格式字符串来解析和构建二进制数据。这些格式字符串指定了数据的布局和类型,以及如何将数据打包(pack)到二进制形式或从二进制形式解包(unpack)。通过socket.recv接收到了一个上面的结构体数据,存在字符串s中,现在需要把它解析出来,可以使用 unpack() 函数.把本地数据再pack成struct格式。原创 2023-08-17 13:48:07 · 697 阅读 · 0 评论 -
Python模板字符串Template
使用substitute(dict)或safe_substitute(dict)方法执行替换。使用命名格式化符,这样,对于多个相同变量的引用,在后续替换只用申明一次即可;将已定义的字符串使用Template(str)的形式转换为字符串模板。使用params={}字典键值对的形式定义变量及其需要替换的结果值;使用Template(str)定义字符串模板;使用string中的Template方法;根据需要,设置字符串中需要替换的字符以。使用$标识需替换的变量;原创 2023-05-12 22:47:06 · 1558 阅读 · 0 评论 -
Python装饰器Decorators
这样做逻辑上是没问题的,功能是实现了,但是我们调用的时候不再是调用真正的业务逻辑 foo 函数,而是换成了 use_logging 函数,这就破坏了原有的代码结构, 现在我们不得不每次都要把原来的那个 foo 函数作为参数传递给 use_logging 函数,那么有没有更好的方式的呢?当然有,答案就是装饰器。foo() 函数不需要做任何修改,只需在定义的地方加上装饰器,调用的时候还是和以前一样,如果我们有其他的类似函数,我们可以继续调用装饰器来修饰函数,而不用重复修改函数或者增加新的封装。原创 2023-04-03 19:50:03 · 373 阅读 · 0 评论 -
(P1)Python单元测试之unittest单元测试
文章目录1.unittest组件2.Unittest套件-执行指定用例3.Unittest套件-运行单个类中所有用例4.Unittest套件-批量运行用例5.Unittest生成测试报告1.unittest组件unittest测试用例,方法命名基于test开头;测试用例自行排序执行顺序规则:A-Z,a-z,0-9,eg:test01/test02;add的用力不是用test开始就不会被识别,所以不会允许;组件1设置前置条件setUp;后置条件tearDown;每条测试用例方法执行前原创 2021-09-27 00:13:15 · 294 阅读 · 0 评论 -
(P62)网页异常处理
文章目录1.URLError2.HTTPError3.网页异常的标准写法1.URLError当我们的 urlopen() 方法无法处理一个响应的时候,就会引发一个 URLError 的异常,通常在没有网络连接、或者对方服务器压根就不存在的时候,就会引发这个异常,同时,这个 URLError 的异常会同时伴随给一个 reason 属性,用于包含由错误编码和错误信息组成的元组。eg:尝试访问一个不存在的域名:http://www.cug123.edu.cn/)(URLError 是包含在 url原创 2021-09-25 10:02:10 · 195 阅读 · 0 评论 -
(P57-P61)正则表达式
文章目录1.re模块的search方法1.re模块的search方法search()方法用于在字符串中搜索正则表达式模式第一次出现的位置,如果找到了,匹配的位置是(7,12)。这里需要注意两点:1️⃣第一个参数是正则表达式模式,也就是你要描述的搜索规则,需要使用原始字符串来写,这样可以避免很多不必要的麻烦。2️⃣找到后返回的范围是以下标0开始的,这跟字符串一样。如果找不到,返回None。>>> import re>>> re.search(r'FishC原创 2021-09-22 23:41:30 · 237 阅读 · 0 评论 -
(P14)Python并发编程总结
文章目录1.并发编程介绍2.全局解释器锁GIL3.多线程编程4.多进程编程5.多协程编程1.并发编程介绍2.全局解释器锁GIL3.多线程编程4.多进程编程5.多协程编程原创 2021-05-30 15:21:45 · 157 阅读 · 0 评论 -
(P13)subprocess的实例
文章目录1.subprocess的实例1.subprocess的实例用start运行一个程序用默认的应用程序打开歌曲文件# 注:windows下是start、mac下是open、Linux是see# windows 环境需要加 shell = True##定义对象proc = subprocess.Popen(['start', '余生一个浪.mp3'], shell=True)##执行程序proc.communicate()用可执行程序执行一个命令用7z.exe解压7z压缩文原创 2021-05-30 11:05:52 · 259 阅读 · 0 评论 -
(P11-P12)协程,通过信号量控制并发度
文章目录1.协程:在单线程内实现并发2.通过信号量控制并发度1.协程:在单线程内实现并发单线程爬虫的执行路径协程:在单线程内实现并发核心原理:用一个超级循环(其实就是while true)循环核心原理:配合IO多路复用原理(IO时CPU可以干其他事情),等待IO时,切换到下一个CPUPython 异步IO库介绍:asyncio注意:(1)要用在异步IO编程中依赖的库必须支持异步IO特性(2)爬虫引用中:requests 不支持异步需要用 aiohttpimport asy原创 2021-05-30 10:46:45 · 360 阅读 · 1 评论 -
(P9-P10)多进程multiprocessing模块
文章目录1.有了多线程threading,为什么还要用多进程multiprocessing2.multiprocessin语法VS多线程threading语法2.进程池在flask中的应用1.有了多线程threading,为什么还要用多进程multiprocessing如果遇到了CPU密集型计算,多线程反而会降低执行速度!虽然有全局解释器锁GIL,但是因为有IO的存在,多线程依然可以加速运行CPU密集型计算,线程的自动切换反而变成了负担,多线程甚至减慢了运行速度multiprocess原创 2021-05-30 10:12:20 · 256 阅读 · 1 评论 -
(P4-P8)多线程,线程池
文章目录1.Python 创建多线程的方法2.Python实现生产者消费者爬虫3.Python线程安全4.线程池5.使用线程池优化Web服务器1.Python 创建多线程的方法步骤:1、准备一个函数def my_func(a, b): do_craw(a,b)2、怎样创建一个线程import threadingt = threading.Thread(target=my_func, args=(100, 200)3、启动线程t.start()4、等待结束t.join()原创 2021-05-29 10:50:38 · 6669 阅读 · 1 评论 -
(P1-P3)并发编程引言
文章目录1.python程序提速大的方法2.Python对并发编程的支持3.CPU密集型计算、IO密集型计算?4.多线程、多进程、多协程的对比5.Python速度慢的两大原因6.GIL1.python程序提速大的方法python多线程并发 VS python多CPU并行2.Python对并发编程的支持多线程:threading,利用CPU和IO可以同时执行的原理,让CPU不会干巴巴等待IO完成多进程:multiprocessing,利用多核CPU的能力,真正的并行执行任务异步I原创 2021-05-29 08:34:46 · 209 阅读 · 1 评论 -
(P57-P58)正则表达式:正则re.search,正则re.findall
文章目录1.正则re.search2.正则1.正则re.searchsearch()方法用于在字符串中搜索正则表达式模式第一次出现的位置r表示原始字符串,找不到返回None正则表达式匹配的是字符串,对于数字而言只有0-9,比如123,是由字符1,字符2,字符3组成的。[0-255]字符类并不表示匹配0-255中的任何一个数,而表示的是0-2,还有1个5(虽然是55),即匹配的是0,1,2,5中四个数字中的任何一个。匹配IP地址2.正则匹配C3次与匹配FishC三次,且要注意空格的问题原创 2021-05-27 23:28:50 · 294 阅读 · 0 评论 -
(P53-P56)爬虫:URL,爬虫实战,修改User-Agent,延迟提交的时间和代理,爬图
文章目录1.URL2.1.URLURL的一般格式为(带方括号[]的为可选项):protocol :// hostname[:port] / path / [;parameters][?query]#fragment•URL由三部分组成:–第一部分是协议:http,https,ftp,file,ed2k…protocol :–第二部分是存放资源的服务器的域名系统或IP地址(有时候要包含端口号,各种传输协议都有默认的端口号,如http的默认端口为80)。hostname[:port]原创 2021-05-25 23:05:44 · 409 阅读 · 0 评论 -
(P50-P51)模块:什么是模块,导入模块,搜索路径
文章目录1.什么是模块2.导入模块2.__name__='__main__'1.什么是模块容器 -> 数据的封装函数 -> 语句的封装类 -> 方法和属性的封装模块 -> 模块就是程序,模块就是.py文件导入hello模块,且使用hello命名空间的hi()函数(1)hello.py模块的创建注意模块与调用的程序要在同一个文件夹下面import的时候直接写名字就行了,不用加上.py,eg:hello.py,hello就是模块名(2)执行原创 2021-05-25 22:24:04 · 293 阅读 · 0 评论 -
(P47-P49)魔法方法:协议,定制序列,迭代器,生成器
文章目录1.协议2.容器类型的协议3.迭代器1.协议•协议(Protocols)与其他编程语言中的接口很相似,它规定你哪些方法必须要定义。然而,在Python中的协议就显得不那么正式。事实上,在Python中,协议更像是一种指南。2.容器类型的协议如果说你希望定制的容器是不可变的话,你只需要定义__len__()和__getitem__()魔法方法。如果你希望定制的容器是可变的话,除了__len__()和__getitem__()方法,你还需要定义__setitem__()和__del原创 2021-05-24 22:55:13 · 232 阅读 · 1 评论 -
(P46)魔法方法:描述符类(property的原理)
文章目录1.描述符类1.描述符类描述符类要求:描述符就是将某种特殊类型的类的实例指派给另一个类的属性至少要实现以下的一个方法:•__get__(self, instance, owner)–用于访问属性,它返回属性的值•__set__(self, instance, value)–将在属性分配操作中调用,不返回任何内容•__delete__(self, instance)–控制删除操作,不返回任何内容eg:>>> class MyDecriptor:原创 2021-05-24 21:50:27 · 246 阅读 · 1 评论 -
(P45)魔法方法:旧的属性访问方法,属性访问
文章目录1.旧的属性访问方法2.属性访问1.旧的属性访问方法可以通过点操作符来访问对象属性,也可以通过一些BIF访问类和对象的属性通过property使得x与self.size挂钩,用来通过属性来设置属性>>> class C: def __init__(self,size =10): self.size = size def getSize(self): return self.size def setSize(self原创 2021-05-24 20:40:56 · 159 阅读 · 0 评论 -
(P44)魔法方法:time模块,\_\_str\_\_和\_\_repr\_\_ ,定制一个计时器的类
文章目录time模块的localtime方法获取的时间既可以用属性,也可以用索引去获取它04:27参考:小甲鱼零基础入门学习python笔记,第四十四课:魔法方法:简单定制(计时器的类)原创 2021-05-23 22:43:59 · 6796 阅读 · 1 评论 -
(P42-P43)魔法方法:算数运算符的魔法方法,反运算相关的魔法方法,增量赋值运算 ,一元操作符
文章目录1.算数运算符的魔法方法2.反运算相关的魔法方法3.增量赋值运算4.一元操作符1.算数运算符的魔法方法python2.2以后,对类和类型进行了统一,做法就是讲int()、float()、str()、list()、tuple()这些BIF转换为工厂函数(类对象)给出以下算数运算符对应的魔法方法,前面和后面都被双下划线包尾说明是魔法方法运算符对应的魔法方法中文注释+__ add__(self, other)加法-__ sub__(self, oth原创 2021-05-23 22:01:16 · 318 阅读 · 0 评论 -
(P36-P41)对象:OO特征,self ,__init__ ,公有和私有 ,继承 ,类的组合关系 ,类、类对象和实例对象 ,BIF,构造和析构
文章目录1.对象2.OO特征3.self4.__init__5.公有和私有6.继承7.类的组合关系1.对象在win下如何调试使用python写好的一个类?使用IDLE打开python代码执行Run中的Run Module调试写好的类test.py代码如下:class Turtle: # Python 中的类名约定以大写字母开头 """关于类的一个简单例子""" # 属性 color = 'green' weight = 10 legs = 4原创 2021-05-22 23:33:26 · 6869 阅读 · 1 评论 -
(P35)图形用户界面入门:EasyGui
文章目录1.EasyGui的安装2.模块的导入方法1.EasyGui的安装小甲鱼的EasyGui的总结位置步骤如下:安装完毕后的位置,easygui.py就是源码位置2.模块的导入方法导入方法一:>>> import easygui #导入EasyGui>>> easygui.msgbox('嗨,亦我飞也')导入方法二:>>> from easygui import *>>原创 2021-05-22 22:30:10 · 7106 阅读 · 0 评论 -
(P34)异常处理:else语句,with
文章目录1.else语句2.with1.else语句在Python中,else语句不仅能跟if语句搭配,构成“要么怎样,要么不怎么样”的语境;Ta还能跟循环语句(for语句或者while语句),构成“干完了能怎样,不干完就别想怎样”的语境;其实else语句还能够跟我们刚刚讲的异常处理进行搭配,构成“没有问题,那就干吧”的语境。eg:def showMaxFactor(num): count = num // 2#//为整除,判断是素数,只需依次判断当前数num除以1到(num /原创 2021-05-22 21:55:50 · 410 阅读 · 0 评论 -
(P32-P33)异常处理:Python标准异常总结,异常处理,raise
文章目录1.Python标准异常总结2.异常处理1.Python标准异常总结Python标准异常总结异常名称解释AssertionError断言语句(assert)失败:当assert关键字后边的条件为假时,程序将抛出该异常,一般用于在代码中置入检查点AttributeError尝试访问未知的对象属性:当试图访问的对象属性不存在时抛出的异常EOFError这个错误基本上是意味着它发现了一个不期望的文件尾。(UNIX上为Ctrl+d,Windows上为C原创 2021-05-21 22:47:26 · 1256 阅读 · 1 评论 -
(P31)永久存储:pickle
文章目录1.pickle1.pickle泡菜(pickle)python提供了一个标准的模块pickle,可以非常容易地将列表、字典这类复杂的数据类型存储为文件。它几乎可以把所有python的对象都转化为二进制的形式存放,这个过程称为pickling,从二进制转换回对象的过程称为unpicklingpickling过程>>> import pickle>>> my_list = [123,3,14,'小甲鱼',['another list']]>原创 2021-05-21 22:36:30 · 226 阅读 · 0 评论 -
(P28-P30)文件:打开文件,文件对象的方法 ,OS模块,os.path模块
文章目录1.打开文件2.文件对象的方法1.打开文件利用help(open)可以看到open()函数的定义:open(file,mode=‘r’,buffering=1,encoding=None,errors=None,newline=None,closefd=True,opener=None)默认打开模式是’rt’,也就是只读和文本模式。打开模式执行操作‘r’以只读方式打开文件(默认)‘w’以写入的方式打开文件,会覆盖已存在的文件(有风险**)‘x原创 2021-05-20 23:13:07 · 370 阅读 · 0 评论 -
(P27)集合:集合,如何创建一个集合有两种方法,不可变集合
文章目录1.集合2.如何创建一个集合有两种方法3.不可变集合1.集合字典的表亲–集合(在python3中,如果用大括号括起一堆数字但没有体现映射关系,那么就会认为这堆玩意儿就是个集合)集合在python中唯一的作用就是唯一集合中的元素都是唯一的(集合会自动帮我们把重复的数据清理掉,集合是无序的,所以不能试图去索引集合中的某一个元素)2.如何创建一个集合有两种方法(1)直接把一堆元素用大括号括起来;>>> set1 = {'小甲鱼','小鱿鱼','小甲鱼'}原创 2021-05-20 22:45:00 · 1217 阅读 · 1 评论 -
(P25-P26)字典:映射与序列,字典的内置方法
文章目录1.映射与序列2.字典的内置方法1.映射与序列字典是映射类型字典包含两个要素:键(key)和值(value)他们是成对出现的,用大括号括起来,多对存在时用逗号隔开字符串,列表,元组都是序列类型eg:如果是序列,也可以实现类似字典功能,但是很麻烦eg:直接使用字典,'李宁’称之为key,'一切皆有可能’称之为value,‘李宁’:‘一切皆有可能’称之为项创建字典的方式创建空字典,help(dict)可以查询字典用法只要构建一种映射关系就行,这里面使用元组(原创 2021-05-20 22:31:30 · 355 阅读 · 0 评论 -
(P17-P24)函数:形参和实参 ,关键字参数 ,默认参数,收集参数(可变参数),函数与过程,局部变量与全局变量,函数嵌套和闭包,lambda表达式,递归
文章目录1.形参和实参2.关键字参数3.默认参数4.收集参数(可变参数)1.形参和实参函数文档:对参数和返回值有介绍'函数定义过程中的name是叫形参’是函数文档,其功能与下面额注释是一样的>>> def MyFirstFunction(name): '函数定义过程中的name是叫形参' #因为Ta只是一个形式,表示占据一个参数位置 print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!')>>> MyFirstFun原创 2021-05-19 21:59:17 · 460 阅读 · 1 评论 -
(P16)序列:列表、元组和字符串的共同点,序列常见的BIF
sum(iterable[,start=0]) 返回序列iterable和可选参数start的总和。sorted()将元素从小到大重新排列,与list.sort()是一样的。tuple([iterable]) 把可迭代对象转换为元祖。list([iterable]) 把可迭代对象转换为列表。max() 返回序列或者参数集合中的最大值。min() 返回序列或者参数集合中的最小值。zip()返回由各个参数的序列组成的元组。len(string)返回字符串的长度。查手册:help(list)原创 2021-05-19 21:23:59 · 328 阅读 · 0 评论 -
(P14-P15)字符串:Python字符串所有内置方法,字符串的format方法,字符串格式化符号
文章目录下表是Python字符串所有内置方法方法含义capitalize()把字符串的第一个字符改为大写casefold()把整个字符串的所有字符改为小写center(width)将字符串居中,并使用空格填充至长度width的新字符串count(sub[,start[,end]])返回sub在字符串里边出现的次数,start和end参数表示范围,可选encode(encoding=‘utf-8’, errors=‘strict’)以enc原创 2021-05-19 19:51:54 · 233 阅读 · 0 评论 -
(P13)元组:戴上了枷锁的列表
文章目录1.元组1.元组元组是不能随意插入和删除一个元素的,元组是不可改变的,和字符串一样由于和列表是近亲关系,所以元组和列表在实际使用上是非常相似的创键和访问一个元组创建元组(括号可以没有,但逗号一定要有)访问元组前两个元素元组的拷贝创建空元组,创建只有一个元素的元组请注意加一个逗号注意,不能更改元组中的元素更新和删除一个元组(1)只能利用类似字符串的切片的方式间接的删除一个元素: 其并未对原元组进行修改,而是生成了一个新的元组,并贴上temp名字标签原创 2021-05-18 23:45:48 · 249 阅读 · 1 评论 -
(P10-P12)一个打了激素的数组:列表,向列表添加元素,从列表中获取元素,列表分片(Slice),列表的一些常用操作符,list类型的BIF内置函数
文章目录1.列表2.向列表添加元素3.从列表中获取元素4.列表分片(Slice)5.列表的一些常用操作符6.list类型的BIF内置函数1.列表由于pyhon的变量没有数据类型,所以python是没有数组的(因为数组只能存放一种类型,要么全部存放整型,要么全部存放浮点型),只有列表list,所以整数,浮点数,字符串,对象都可以塞进去创建列表创建一个普通列表创建一个混合列表创建一个空列表2.向列表添加元素向列表添加元素,append(),extend()扩张方式扩展列表,i原创 2021-05-18 22:50:53 · 7131 阅读 · 0 评论 -
(P8-P9)了不起的分支和循环:Python可以有效避免“悬挂else” ,断言(assert),while循环,break,continue
文章目录1.打飞机游戏逻辑2.Python可以有效避免“悬挂else”3.断言(assert)4.while循环1.打飞机游戏逻辑任何发生的改变都需要屏幕刷新加载背景音乐播放背景音乐(设置单曲循环)我方飞机诞生interval = 0 while True: if 用户是否点击了关闭按钮: 退出程序 interval += 1 if interval == 50: interval = 0 小飞机诞生 小飞机原创 2021-05-18 21:54:05 · 381 阅读 · 2 评论 -
(P7)Python之常用操作符:算数运算符,比较操作符,逻辑操作符
文章目录1.算数运算符2.比较操作符3.逻辑操作符1.算数运算符算术操作符注:python中 / 为除法, // 为整除 ,% 为取余幂运算(3的二次方)运算符优先级问题:幂运算 > 正负号 > 算术运算符 > 比较运算符 > 逻辑运算符3的二次方后取负3的负二次方2.比较操作符eg:等价于3.逻辑操作符参考:小甲鱼零基础入门学习python笔记,第六课:常用操作符...原创 2021-05-18 20:40:42 · 318 阅读 · 0 评论 -
(P6)闲聊之Python的数据类型:Python数据类型,类型转换,获得关于类型的信息
文章目录1.Python数据类型2.类型转换3.获得关于类型的信息1.Python数据类型Python的变量是没有类型的,Python变量更像是名字的标签Python的一些数值类型:整型、布尔类型(True与False)、浮点型、e记法、复数类型等e记法(e4相当于10的四次方,e-10相当于10的-10次方)有小数点是浮点型,没有小数点就是整型;布尔类型就是特殊的整型,True相当于整数1,False相当于整数0;实际开发别这么做2.类型转换图eg:浮点型转整原创 2021-05-18 20:23:03 · 304 阅读 · 1 评论 -
(P5)改进我们的小游戏:改进我们的小游戏,条件分支,while循环
文章目录1.改进我们的小游戏2.条件分支3.while循环1.改进我们的小游戏很多鱼油对改善这个游戏提出了建议,小甲鱼做了一下总结,大概有以下几个方面需要改进:猜错的时候程序应该给点提示,例如告诉用户输入的值是大了还是小了。每运行一次程序只能猜一次,应该提供多次机会给用户猜测。每次运行程序,答案可以是随机的。因为程序答案固定,容易导致答案外泄。2.条件分支第一个改进要求:猜错的时候程序提示用户当前的输入比答案大了还是小了。eg:与操作and,Python的and逻辑操作符可以将任原创 2021-05-18 19:59:15 · 7533 阅读 · 10 评论