Python基础
文章平均质量分 71
分享一些Python相关的基础知识
smart_cat
这个作者很懒,什么都没留下…
展开
-
python优秀第三方异步日志库loguru介绍
本文对Loguru库相关主要特性进行了简要概述,如果需要了解其更详细的特性说明,可参考官方github。推荐大家在日常生活中多多使用Loguru库进行日志处理工作。转载 2022-12-21 22:31:13 · 14363 阅读 · 0 评论 -
Python面向对象编程之__slots__
最后,__slots__的存在不会对__getattribute__(), __getattr__(), __setattr__()等方法的调用产生任何影响,因为这些方法应该在类中重新定义。如果类继承自使用__slots__的基类,那么它也需要定义__slots__来存储自己的属性(即使它不会添加任何属性也是如此),这样才能充分利用__slots__提供的优势。使用__slots__的类的实例不再使用字典来存储实例数据。__slots__的使用也可以使代码不必要求实例具有底层__dict__属性。原创 2022-12-18 23:28:24 · 11022 阅读 · 0 评论 -
Python面向对象编程之对象表示和属性绑定
这些方法的默认行为是修改或删除obj的局部__dict__的值,除非请求的属性正好是一个特性或描述符。如果搜索过程失败,最终会尝试调用类的__getattr__()方法(如果已定义)来查找该属性。通过重新定义__getattr__(), __setattr__()和__delattr__(),代理可以捕获属性的访问操作,并透明地将这些操作转发给另一个对象。在类的内部,实例是使用字典来实现的,可以用实例的__dict__属性的形式访问该字典。对实例的修改始终会反映到局部__dict__属性中。原创 2022-12-18 23:13:05 · 11104 阅读 · 0 评论 -
Python基础之MySql数据库交互
在任何应用中,都需要持久化存储。一般有 3 种基础的存储机制:文件、数据库系统以及一些混合类型。这种混合类型包括现有系统上的 API、 ORM、文件管理器、电子表格、配置文件等。对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是当文件或创建的数据存储系统不适用于大项目时,我们需要转而使用数据库,大多数复杂的数据驱动的应用是需要使用全功能的关系数据库的。一个关系数据库管理系统( RDBMS)通常可以管理多个数据库,比如销售、市场、用户支持等,都可以在同一个服务端(如果 RDBMS 基于服务器,可原创 2022-12-03 03:28:28 · 15707 阅读 · 0 评论 -
Python基础之SQLite数据库
对于非常简单的应用而言,使用文件作为持久化存储通常就足够了,但是大多数复杂的数据驱动的应用则需要全功能的关系数据库。SQLite 的目标则是介于两者之间的中小系统。它量级轻、速度快,没有服务器,很少或不需要进行管理。虽然简单,但是由于各种原因这个库很有吸引力。首先,它不需要独立的数据库服务器,也不要求任何特定的配置,只要与数据库文件连接,就可以在程序中立即开始使用(如果它不存在,会生成一个新文件)。原创 2022-12-01 23:31:06 · 17773 阅读 · 0 评论 -
Python数据库编程之关系数据库API规范
对于关系数据库的访问,Python社区已经制定出一个标准,称为Python Database API Specification。Mysql,Oracal等特定数据库模块遵从这一规范,而且可以添加更多特性。高级数据库API定义了一组用于连接数据库服务器、执行SQL查询并获得结果的函数和对象。原创 2022-11-30 00:40:19 · 17043 阅读 · 1 评论 -
Python面向对象编程之对象行为与特殊方法
python中的对象通常根据它们的行为和实现的功能进行分类。例如,所有序列类型都分在一组,如字符串,列表和元组,就是因为它们都支持一组相同的序列操作,如s[n], len[s]等。所有基本的解释器操作都通过特殊的对象方法来实现。这些特殊方法的名称前后始终都带有双下划线"__"。当程序执行时,这些方法都由解释器自动触发。例如,操作x+y被映射为内部方法x.__add__(y), 而索引操作x[k]被映射为x.__getitem__(k)。每种数据类型的行为完全取决于它实现的一组特殊方法。原创 2022-11-27 19:07:08 · 17261 阅读 · 0 评论 -
Python基础-面向对象编程之装饰器
函数、方法或类定义的前面可以使用一个特殊的符号,称为装饰器,其目的是修改定义后面的行为。原创 2022-11-26 14:57:23 · 18233 阅读 · 1 评论 -
Python基础-面向对象编程之特性(property)
通常,我们访问实例或类的属性时,将返回所存储的相关值。而特性(property)是一种特殊的属性,访问它时会计算它的值。运行效果如下:从这个例子中,我们可以看到,Circle实例存储了一个变量c.radius。而c.area和c.perimeter是根据该值计算得来的。@property装饰器支持以简单属性的形式访问后面的方法,无需像平时一样添加额外的()来调用该方法。对象的使用者很难发现正在计算一个属性,除非在试图重新定义该属性时生成了错误消息。这种特性使用方式遵循所谓的。原创 2022-11-26 01:49:56 · 17893 阅读 · 0 评论 -
Python并发编程之threading模块
threading模块提供Thread类和各种同步原语,用于编写多线程的程序。Thread类用于表示单独的控制线程。使用下面的函数可以创建一个新的线程。此函数创建一个新的Thread实例。Thread的实例t支持以下方法和属性。下面这个例子说明如何以线程的形式创建和启动一个函数。如果将线程定义为类,并且定义自己的__init__()方法,必须像上面这样调用基类构造函数Thread.(), 如果忘记这一点,将导致严重错误。除了run()方法外,改写线程已经定义好的其他方法也会出现错误。原创 2022-11-21 00:03:11 · 19568 阅读 · 0 评论 -
Python并发编程之Queue队列
创建一个优先级队列,其中项目按照优先级从低到高依次排列。使用这种队列时,项目应该是(priority, data)形式的元组,其中priority是一个数字。使用队列一般可以简化多线程的程序。例如,可以使用共享队列将线程连接在一起,而不必依赖于必须有锁定保护的共享状态。maxsize是队列中可以放入的项目的最大值。如果省略maxsize或将它置为0,队列大小将是无限大。queue模块实现了各种多生产者-多消费者队列,可用于在执行的多个线程之间安全地交换信息。创建一个LIFO后进先出队列,也叫做栈。原创 2022-11-21 00:03:11 · 18822 阅读 · 0 评论 -
Python并发编程之托管对象
如果需要其他类型的共享对象,比如用户自定义类的实例,则必须创建自定义管理对象。为此,需要创建一个继承自BaseManager类的类,BaseManager类定义在multiprocessing.managers子模块中。为用户定义对象创建管理器服务器的基类。address是一个可选元组(hostname, port), 用于指定服务器的网络地址。如果省略次参数,操作系统将简单分配一个对应于某些空闲端口号的地址。authkey是一个字符串,用于对连接到服务器的客户端进行身份验证。原创 2022-11-20 22:23:32 · 18308 阅读 · 0 评论 -
Python并发编程之数据共享与同步
通常,进程之间是彼此完全孤立的,唯一的通信方式是队列或者管道。但可以使用两个对象来表示共享数据。其实,这些对象使用共享内存(通过mmap模块)使访问多个进程成为可能。在共享内存中创建ctypes对象。typecode要么是包含array模块使用的相同类型代码的字符串,要么是来吃ctypes模块的类型对象(如ctypes.c_int, ctypes.c_double等)。所有额外的位置参数arg1 … argN将传递给指定类型的构造函数。原创 2022-11-20 22:17:51 · 18433 阅读 · 0 评论 -
Python并发编程之进程池
可以用Pool类来创建进程池,可以把各种数据处理任务都提交给进程池。进程池提供的功能有点类似于列表解析和功能性编程操作提供的功能。numprocess是要创建的进程数,如果省略此参数,将使用cpu_cout()的值。initalizer是每个工作进程启动时要执行的可调用对象。initargs是要传递给initializer的参数元组。initializer默认是none。Pool类的实例p支持以下操作。方法apply_async()和map_async()的返回值是AsyncResult实例。原创 2022-11-20 22:14:09 · 18892 阅读 · 0 评论 -
Python并发编程之进程间通信
multiprocessing模块支持进程间通信的两种主要形式:管道和队列。这两种方法都是实用消息传递来实现的,但队列接口有意模仿线程程序中参见的队列用法。创建共享的进程队列。maxsize是队列中允许的最大项数,如果忽略此参数,则无大小限制。底层队列使用管道和锁定实现。Queue的实例具有以下方法创建可连接的共享进程队列。这就像是一个Queue对象,但队列允许项目的使用者通知生产者项目已经被成功处理。通知进程是使用共享的信号和条件变量来实现的。原创 2022-11-20 22:12:29 · 19173 阅读 · 0 评论 -
Python并发编程之multiprocessing模块中的进程
multiprocessing模块所有的重点都放在进程上。Process的实例p具有以下方法Process的实例p也具有以下数据属性。原创 2022-11-20 22:08:39 · 18108 阅读 · 0 评论 -
python基础-协程与yield表达式
介绍python基础知识:协程与yield表达式原创 2022-11-16 12:03:37 · 19026 阅读 · 0 评论 -
Python基础-生成器与yield
介绍python基础知识:生成器与yield原创 2022-11-16 12:00:22 · 19008 阅读 · 0 评论 -
python基础-生成器表达式
介绍python基础-生成器表达式原创 2022-11-16 11:21:19 · 21181 阅读 · 0 评论 -
python基础-列表包含
介绍python基础-列表包含的相关知识原创 2022-11-16 11:09:36 · 19526 阅读 · 0 评论