- 博客(62)
- 收藏
- 关注
原创 Python的Pandas库(一)基础使用
data:输入的数据,可以是 ndarray,series,list,dict,标量以及一个 DataFrame。index:行标签,如果没有传递 index 值,则默认行标签是 np.arange(n),n 代表 data 的元素个数。columns:列标签,如果没有传递 columns 值,则默认列标签是 np.arange(n)。dtype:dtype表示每一列的数据类型。copy:默认为 False,表示复制数据 data。
2023-10-26 20:49:47 4208
原创 Python的NumPy库(二)进阶用法
接续前面的基础用法,本文学习NumPy的一些进阶用法,部分方法或函数或有重复,但主要是侧重于换个角度对这些方法的组织和学习。
2023-10-06 18:27:21 269
原创 Python的NumPy库(一)基础用法
NumPy是Python中科学计算的基础包,它代表 “Numeric Python”。Numeric,即 NumPy 的前身,是由 Jim Hugunin 开发的。也开发了另一个包 Numarray ,它拥有一些额外的功能。2005年,Travis Oliphant 通过将 Numarray 的功能集成到 Numeric 包中来创建 NumPy 包。NumPy的核心是多维数组(ndarray)
2023-10-05 20:54:24 293
原创 Python对象序列化和反序列化pickle和marshal
在开展跨机器交互时,常常要在机器之间传递“对象”,而不仅仅是数据,这样我们就需要将Python对象进行序列化和反系列化,前面的json其实提供了一种序列化和反序列化的机制,但仅仅支持Python的简单对象,对于复杂的对象需要自己实现序列化和反序列化编码。Python提供了一种内部格式的序列化和反序列化机制。
2023-10-02 21:28:32 514
原创 Python之json模块
json表达的数据是键值数据,与python中的dict十分相识;数据项之间使用逗号分割;使用斜杆来转义\字符数据项的值支持整数、浮点数、字符串、逻辑值,null等数据项的值支持数组,数组数据使用中括号括起来多个数据项可以组合成一个对象,对象数据使用大括号括起来。
2023-10-01 12:42:33 324
原创 Python函数式编程(三)操作符函数(operator)
operator 模块提供了一套与Python的内置运算符对应的高效率函数。例如,operator.add(x, y) 与表达式 x+y 相同。许多函数名与特殊方法名相同,只是没有双下划线。为了向后兼容性,也保留了许多包含双下划线的函数。为了表述清楚,建议使用没有双下划线的函数。函数包含的种类有:对象的比较运算、逻辑运算、数学运算以及序列运算。对象比较函数适用于所有的对象,函数名根据它们对应的比较运算符命名。
2023-09-29 23:14:23 497
原创 Python函数式编程(二)高阶函数functools
前面一篇中对map()、filter()等高阶函数进行了介绍,在functools模块中python提供了更多的高阶函数。高阶函数是函数式编程的重要基础,高阶函数的理解往往也比较困难。高阶函数的特点在前面已经介绍过了,这里就不再重复。
2023-09-28 21:11:25 295
原创 Python函数式编程(一)概念和itertools
Python函数式编程是一种编程范式,它强调使用纯函数来处理数据。函数是程序的基本构建块,并且尽可能避免或最小化可变状态和副作用。在函数式编程中,函数被视为一等公民,可以像值一样传递和存储。
2023-09-25 21:56:53 879
原创 Python多重继承
前面介绍的大部分的继承都是单继承,既一个子类只有一个父类,但是Python也支持多重继承,既一个子类可以有多个父类。多继承有许多复杂的问题,大部分的面向对象语言都仅仅支持单继承,Python是为数不多支持多继承的语言,本文对此展开学习。
2023-09-24 12:18:50 1282
原创 Python协程(asyncio)(四)同步原语
asyncio 同步原语被设计为与 threading 模块的类似,但有两个关键注意事项:asyncio 原语不是线程安全的,因此它们不应被用于 OS 线程同步 (而应当使用 threading);这些同步原语的方法不接受 timeout 参数;请使用 asyncio.wait_for() 函数来执行带有超时的操作。
2023-09-23 23:20:27 666
原创 Python协程(asyncio)(三)异步应用对象
流是用于处理网络连接的支持 async/await 的高层级原语。流允许发送和接收数据,而不需要使用回调或低级协议和传输。asyncio 函数可以用来创建和处理异步网络流。
2023-09-23 22:50:22 906
原创 Python协程(asyncio)(二)高级开发
事件循环是每个 asyncio 应用的核心。事件循环会运行异步任务和回调,执行网络 IO 操作,以及运行子进程。应用开发者通常应当使用高层级的 asyncio 函数,例如 asyncio.run(),应当很少有必要引用循环对象或调用其方法。本文学习的内容所针对的主要是低层级代码、库和框架的编写者,他们需要更细致地控制事件循环行为。事件循环是一种处理多并发量的有效方式,一种等待程序分配事件或消息的编程架构,可以定义事件循环来简化使用轮询方法来监控事件,通俗的说法就是「当A发生时,执行B」。
2023-09-23 10:27:48 285
原创 Python协程(asyncio)(一)协程开发
协程是python个中另外一种实现多任务的方式,只不过比线程更小占用更小执行单元(理解为需要的资源)。为啥说它是一个执行单元,因为它自带CPU上下文。这样只要在合适的时机, 我们可以把一个协程 切换到另一个协程。只要这个过程中保存或恢复 CPU上下文那么程序还是可以运行的。通俗的理解:在一个线程中的某个函数,可以在任何地方保存当前函数的一些临时变量等信息,然后切换到另外一个函数中执行,注意不是通过调用函数的方式做到的,并且切换的次数以及什么时候再切换到原来的函数都由开发者自己确定。
2023-09-21 23:10:40 526
原创 Python网络编程(socket)
网络编程指的是:在程序中实现两台计算机之间的通信。Python提供了大量网络编程的工具和库,本文重点学习socket和select模块。网络编程涉及许多关于TCPIP的基础知识,本文默认对这些知识已经了解了,不再对TCPIP相关的知识进行学习。
2023-09-20 20:50:15 431
原创 Python正则表达式(re)
正则表达式,又称规则表达式,(Regular Expression,在代码中常简写为regex、regexp或RE),是一种文本模式,包括普通字符(例如,a 到 z 之间的字母)和特殊字符(称为"元字符"),是计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列匹配某个句法规则的字符串,通常被用来检索、替换那些符合某个模式(规则)的文本。正则表达式的“鼻祖”或许可一直追溯到科学家对人类神经系统工作原理的早期研究。
2023-09-17 13:27:04 383
原创 Python多进程(process)(三)子进程与并行
subprocess模块允许你生成新的进程,连接它们的输入、输出、错误管道,并且获取它们的返回码。此模块打算代替一些老旧的模块与功能:os.systemos.spawn*
2023-09-16 16:32:25 628
原创 Python多进程(process)(二)进程间通讯
前面一篇对子进程的创建、进程池的管理进行了学习,在实践中,如果可能,尽可能使用进程池的提交方式将数据传递给子进程,再使用返回值收集的方式将子进程处理的结果收集上来,这样处理既安全又比较优雅。但有些场景需要子进程或者父子进程之间进行比较复杂的数据交换,这就需要使用进程间通讯来实现。进程与线程不一样,线程之间可以通过进程内部的共享数据进行数据的访问和共享,但一个进程如果要访问其他进程的信息,需要通过操作系统提供的方法进行访问。
2023-09-16 15:08:48 531
原创 Python多进程(process)(一)进程和进程池
在Python中因为有GIL的原因,线程能提供的并发效果并不理想,Python在多核上如果要释放并发的性能,更多的依靠多进程,我们会比线程更深入的去学习多进程。进程(Process),顾名思义,就是进行中的程序。。进程是资源分配的最小单元,也就是说每个进程都有其单独的内存空间。Unix/Linux系统通过fork系统调用创建一个进程,但是在Windows中并没有fork调用。但是别担心,Python中内置的的,我们可以。
2023-09-15 10:31:56 1686
原创 Python线程(thread)
在Python3中,通过threading模块提供线程的功能。原来的thread模块已废弃。但是threading模块中有个Thread类(大写的T,类名),是模块中最主要的线程类,一定要分清楚了,千万不要搞混了。
2023-09-09 23:41:48 1594
原创 Python断言(assert)
默认的,__debug__是常量,包括None、False、True这些常量不能重新赋值(即使作为属性名赋值给它们,也会引发),因此可以将它们视为“True”常量。print('debug模式')关于-O,在命令行的环境下,使用时,将会删除(可以理解为忽略)assert语句和任何基于__debug__值的代码。详见PEP 488。关于-OO,在命令行的环境下,使用时,将会丢弃文档字符串。详见PEP 488。def foo():passhelp(foo)上述代码,使用会返回foo函数的文档信息。
2023-09-09 22:17:44 19523 1
原创 Python上下文管理和with
有一些任务,可能事先需要设置,事后做清理工作。可以通过try…except…上面长长的一段代码,写的很复杂麻烦。python使用with语句对try…except…finally进行了大幅的简化,并且使过程更容易理解。语句使代码更清晰、更具可读性, 它简化了文件流等公共资源的管理。在处理文件对象时使用 with 关键字是一种很好的做法。
2023-09-09 21:52:29 318
原创 Python的命名空间和作用域
所谓作用域就是指变量名/对象名在多大范围内是可见的/有效的,一个变量名既不能作用域太大,这样会引发广泛的命名冲突,也不能太小,这样很难实现变量的共享,所以一般都有多层次的作用域。一个层次的作用域,在Python里称为命名空间。
2023-09-09 16:40:47 209
原创 Python 反射和动态执行
反射主要应用于类的对象上,在运行时,将对象中的属性和方法反射出来,通过字符串对对象成员(属性、方法)进行查找、获取、删除、添加成员等动作,是一种基于字符串的事件驱动技术。python是一门动态语言,有许多支持反射和动态执行的方法。一般使用场景:动态的向对象中添加属性和方法;也可以动态的调用对象中的方法或者属性。
2023-09-09 15:47:20 666
原创 Python元类(metaclass)
在 Python 中,一切皆对象,包括类本身。类定义了对象的行为,而元类则定义了类的行为。简而言之,元类就是创建类的“类”。符合Python对象的条件能够直接赋值给一个变量可以添加到集合对象中能作为函数参数进行传递可以作为函数返回值从这里,大家就可以看出,Python中一切皆为对象,一切都符合这些条件Python对象都会有三个特征身份,即是存储地址,可以通过id()方法查询类型,即对象所属的类型,可以用type()方法来查询值,都会有各自的数据passj = Job()
2023-09-09 09:39:47 608
原创 Python中的日期和时间(二)time和calendar模块
time 模块既有时间处理的,也有转换时间格式的。time模块有许多UNIX和C的痕迹,它们很像的与UNIX和C的函数,可以和C进行通用。理解上如果对C不是很了解,可能会存在一些困难,在写C接口时,可能会用到它们,其他场景建议不要直接使用,以免出现问题难以解决。
2023-09-08 21:50:39 318
原创 Python中的日期和时间(一)datetime模块
Python处理时间的对象很多,常用的有time、datetime和calendar等。本文对常用的时间对象的使用进行学习。在开始学习具体的对象前,先学习几个计算机的时间概念。:是全球范围内计时的科学标准,它基于精心维护的原子钟,在全球范围内精确到微秒,由于英文(CUT)和法文(TUC)的缩写不同,作为妥协,简称UTC。
2023-09-07 21:27:40 477
原创 Python二进制序列类型(二)array、struct和memoryview
语法:classtypecode[,])一个由 typecode 限制类型的新数组,并通过可选的 initializer 进行初始化。initializer 必须为一个列表、bytes-like object 或在合适类型元素上迭代的可迭代对象。如果是一个列表或字符串,该 initializer 会被传给新数组的 fromlist(),frombytes() 或 fromunicode() 方法(见下)以将初始项添加到数组中。其它将可迭代对象将被传给 extend() 方法。
2023-09-06 22:26:27 564
原创 Python二进制序列类型(一)bytes与bytearray
语法:classbytes([source[,encoding[,errors]]])通过bytes()函数显示声明一个bytes类型首先,表示 bytes 字面值的语法与字符串字面值的大致相同,只是添加了一个b单引号:b'同样允许嵌入 "双" 引号'。双引号:b"仍然允许嵌入 '单' 引号"三重引号:b'''三重单引号'''b"""三重双引号"""bytes 字面值中只允许 ASCII 字符(无论源代码声明的编码为何)。
2023-09-06 18:28:12 972
原创 Python的io模块
io 模块提供了 Python 用于处理各种 I/O 类型的主要工具。三种主要的 I/O类型分别为: 文本 I/O, 二进制 I/O 和 原始 I/O。
2023-09-04 20:06:03 777
原创 类和对象的进阶
鸭子类型)在程序设计中是动态类型的一种风格。在这种风格中,一个对象有效的语义,不是由继承自特定的类或实现特定的接口,而是由“当前方法和属性的集合”决定在鸭子类型中,关注点在于对象的行为能做什么;而不是关注对象所属的类型。例如,在不使用鸭子类型的语言中,我们可以编写一个函数,它接受一个类型为"鸭子"的对象,并调用它的"走"和"叫"方法。在使用鸭子类型的语言中,这样的一个函数可以接受一个任意类型的对象,并调用它的"走"和"叫"方法。如果这些需要被调用的方法不存在,那么将引发一个运行时错误。
2023-09-03 11:01:48 214
原创 Python魔术方法
所有以双下划线__包起来的方法,统称为,它是一种的特殊方法,普通方法需要调用,而魔术方法不需要调用就可以执行。魔术方法在类或对象的某些事件出发后会自动执行,让类具有神奇的“魔力”。如果希望根据自己的程序定制自己特殊功能的类,那么就需要对这些方法进行重写。
2023-08-30 21:56:06 5410 1
原创 Python常用内置函数
通过对象类的特殊方法return repr(f'我是{self.name}')me = Student('大明')str(me)# "'我是大明'"通过重载特殊方法__repr__()可自定义对象的repr()返回值。return repr(f'我是{self.name}')me = Student('大明')repr(me)# "'我是大明'"repr()返回的有得于解释器读取的形式,string 格式,因此将 string 格式可以传给eval()进行执行。如果我们使用repr()
2023-08-29 21:40:13 653
原创 format()和f-string格式化
f-string 可以用设置字符串的格式,format 为格式描述符。string --- 常见的字符串操作 — Python 3.11.5 文档。
2023-08-28 22:33:58 130
原创 Python异常处理
通过创建一个新的异常类,程序可以命名它们自己的异常。异常应该是典型的继承自Exception类,通过直接或间接的方式。以下为与RuntimeError相关的实例,实例中创建了一个类,基类为RuntimeError,用于在异常触发时输出更多的信息。在try语句块中,用户自定义的异常后执行except块语句,变量 e 是用于创建Networkerror类的实例。
2023-08-27 21:16:45 223
原创 Python序列类型
序列(Sequence)是有顺序的数据列,Python 有三种基本序列类型:list, tuple 和 range 对象,序列(Sequence)是有顺序的数据列,二进制数据(bytes) 和 文本字符串(str)也是序列类型,它们是特殊序列类型,会有一些特殊的性质和操作。在实际的使用中,我们并不直接使用序列(Sequence)类型,而是具体使用list、tuple和range对象等等,本文主要是做一个归纳、概括性的说明。
2023-08-27 20:20:51 1430
原创 Python的Number类型
Python 的数字类型可以存储在数学上的各种数字,包括常见的自然数、复数中的虚数、巨大的数字、正负数、带小数点的数、不同进制的数等等,非常灵活丰富。
2023-08-27 16:55:04 165
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人