python
文章平均质量分 65
z同学的编程之路
热爱编程、热爱生活!各种DIY设计,有想法,有行动!感谢大家关注收藏,不定期分享好项目源码及教程。
下载后,有问题请及时私信沟通,欢迎提问,欢迎来撩!
展开
-
Python学习笔记--字符集
在例子中,使用了取反字符集,也就是在左方括号 “[” 后面紧跟一个尖括号 “^”,就会对字符集取反。,就是所有小写字母中的其中一个,这里使用了连字符 “-” 定义一个连续字符的字符范围。好了,通过上面的几个实例我们初步认识了 Python 的正则表达式,可能你就会问,正则表达式还有什么规则,什么字母代表什么意思呢?注意了,字符和范围定义的先后顺序对匹配的结果是没有任何影响的。,匹配所有数字字符,其实它是等价于 [0-9],下面也写了个例子,通过字符集的形式解释了这些特殊字符。举个例子,比如你使用。原创 2023-11-19 12:30:00 · 84 阅读 · 0 评论 -
Python学习笔记--进程
Python 中的多线程其实并不是真正的多线程,如果想要充分地使用多核 CPU 的资源,在 Python 中大部分情况需要使用多进程。Python 提供了非常好用的多进程包 multiprocessing,只需要定义一个函数,Python 会完成其他所有事情。借助这个包,可以轻松完成从单进程到并发执行的转换。multiprocessing 支持子进程、通信和共享数据、执行不同形式的同步,提供了 Process、Queue、Pipe、Lock 等组件。原创 2023-11-18 15:30:00 · 74 阅读 · 0 评论 -
Python学习笔记--多线程编程
线程有着不同的状态,也有不同的类型。简单了解完这些之后,我们开始看看具体的代码使用了。原创 2023-11-18 12:30:00 · 102 阅读 · 0 评论 -
Python学习笔记--线程与进程
同时执行多个任务通常各个任务之间并不是没有关联的,而是需要相互通信和协调,有时,任务 1 必须暂停等待任务 2 完成后才能继续执行,有时,任务 3 和任务 4 又不能同时执行,所以,多进程和多线程的程序的复杂度要远远高于我们前面写的单进程单线程的程序。当然,一个进程也可以有多个线程,多个线程可以同时执行,多线程的执行方式和多进程是一样的,也是由操作系统在多个线程之间快速切换,让每个线程都短暂地交替运行,看起来就像同时执行一样。一种是启动多个进程,每个进程虽然只有一个线程,但多个进程可以一块执行多个任务。原创 2023-11-17 09:50:02 · 69 阅读 · 0 评论 -
Python学习笔记--自定义元类
当然了,为了清晰起见,这里的名字我起的比较长。属性,如果找到了,Python 就会用它来创建类 MyObject,如果没有找到,就会用内建的 type 函数来创建这个类。如果使用 super 方法的话,我们还可以使它变得更清晰一些,这会缓解继承(是的,你可以拥有元类,从元类继承,从 type 继承)采用这种方法,这个模块中的所有类都会通过这个元类来创建,我们只需要告诉元类把所有的属性都改成大写形式就万事大吉了。当我们定义了类以后,就可以根据这个类创建出实例,所以:先定义类,然后创建实例。原创 2023-11-17 09:49:11 · 73 阅读 · 0 评论 -
Python学习笔记--什么是元类
这可能是为了和 str 保持一致性,str 是用来创建字符串对象的类,而 int 是用来创建整数对象的类。通过上面的介绍,终于模模糊糊的带到元类这里来了。可以看到,上面的所有东西,也就是所有对象都是通过类来创建的,那么我们可能会好奇,也可以说是他们类的类打印结果。Python 中所有的东西,注意喔,这里是说所有的东西,他们都是对象。我们创建类的时候,大多数是为了创建类的实例对象。你也可以理解为,元类就是负责生成类的。也就是元类就是负责创建类的一种东西。一开始也提到了,元类就是类的类。原创 2023-11-12 16:30:00 · 101 阅读 · 0 评论 -
Python学习笔记--使用 `type()` 动态创建类
在之前,我们先了了解下。原创 2023-11-12 12:45:00 · 110 阅读 · 0 评论 -
Python 中类也是对象
当程序运行这段代码的时候,就会在内存中创建一个对象,名字就是ObjectCreator。这个对象(类)自身拥有创建对象(类实例)的能力,而这就是为什么它是一个类的原因。在了解元类之前,我们先进一步理解 Python 中的类,在大多数编程语言中,类就是一组用来描述如何生成一个对象的代码段。但是,Python 中的类有一点跟大多数的编程语言不同,在 Python 中,可以把类理解成也是一种对象。对的,这里没有写错,就是对象。,Python 解释器在执行的时候就会创建一个对象。原创 2023-11-11 18:45:00 · 80 阅读 · 0 评论 -
Python学习笔记--自定义类型的枚举
通过上面的例子,可以知道枚举模块定义了具有迭代 (interator) 和比较(comparison) 功能的枚举类型。它可以用来为值创建明确定义的符号,而不是使用具体的整数或字符串。但有些时候我们需要控制枚举的类型,那么我们可以 Enum 派生出自定义类来满足这种需要。原创 2023-11-11 12:45:00 · 93 阅读 · 0 评论 -
Python学习笔记--枚举类的使用
上面的代码,我们创建了一个有关月份的枚举类型 Month ,这里要注意的是构造参数,第一个参数 Month 表示的是该枚举类的类名,第二个 tuple 参数,表示的是枚举类的值;这时候我们定义一个 class 类型,每个常量都是 class 里面唯一的实例。类型的常量,默认是从 1 开始的。当然这样做简单快捷,缺点是类型是。遍历它的所有成员的方法。那有没有什么好的方法呢?来定义了一个枚举类。原创 2023-11-10 11:15:00 · 72 阅读 · 0 评论 -
Python学习笔记--运算符相关的魔术方法
这个公号可能很少更新,但是一更新,就是把整理的一系列文章更新上去。原创 2023-11-10 09:30:00 · 37 阅读 · 0 评论 -
Python学习笔记--自定义容器(Container)
经过之前编章的介绍,我们知道在 Python 中,常见的容器类型有: dict, tuple, list, string。其中也提到过可容器和不可变容器的概念。其中 tuple, string 是不可变容器,dict, list 是可变容器。可变容器和不可变容器的区别在于,不可变容器一旦赋值后,不可对其中的某个元素进行修改。当然具体的介绍,可以看回之前的文章,有图文介绍。不够的时候,或者说有些特殊的需求不能单单只使用这些基本的容器解决的时候,该怎么办呢?这个时候就需要自定义容器了,那么具体我们该怎么做呢?原创 2023-11-09 16:00:00 · 146 阅读 · 0 评论 -
Python学习笔记--对象的描述器
在面向对象编程时,如果一个类的属性有相互依赖的关系时,使用描述器来编写代码可以很巧妙的组织逻辑。在之前的篇节中已经提到新式类和旧式类的,有兴趣可以查看之前的篇节来看看,至于新式类最大的特点就是所有类都继承自 type 或者 object 的类。的父类 ( 不包括元类 (metaclass) ).如果查找到的值是一个描述器, Python 就会调用描述器的方法来重写默认的控制行为。一般来说,一个描述器是一个有“绑定行为”的对象属性 (object attribute),它的访问控制被描述器协议方法重写。原创 2023-11-09 11:00:00 · 109 阅读 · 0 评论 -
Python学习笔记--属性的访问控制
之前也有讲到过,Python 没有真正意义上的私有属性。然后这就导致了对 Python 类的封装性比较差。我们有时候会希望 Python 能够定义私有属性,然后提供公共可访问的 get 方法和 set 方法。Python 其实可以通过魔术方法来实现封装。原创 2023-11-08 16:00:00 · 161 阅读 · 0 评论 -
Python学习笔记--构造(`__new__`)和初始化(`__init__`)
通过之前的学习,我们已经知道定义一个类时,我们经常会通过 的方法在实例化对象的时候,对属性进行设置。比如下面的例子:实际上,创建一个类的过程是分为两步的,一步是创建类的对象,还有一步就是对类进行初始化。 是用来创建类并返回这个类的实例, 而 只是将传入的参数来初始化该实例. 在创建一个实例的过程中必定会被调用,但 就不一定,比如通过 pickle.load 的方式反序列化一个实例时就不会调用 方法。 是在 方法之前调用的,作用是返回一个实例对象。还有一点需要注意的是: 方法总是需要返回该类的一个实原创 2023-11-08 11:00:00 · 109 阅读 · 0 评论 -
Python学习笔记--模块简介
我们可以尝试找下这些模块,比如我的 Python 安装目录是默认的安装目录,在 C:\Users\Administrator\AppData\Local\Programs\Python\Python36 ,然后找到 Lib 目录,就可以发现里面全部都是模块,没错,这些。相同名字的函数和变量完全可以分别存在不同的模块中,因此,我们自己在编写模块时,不必考虑名字会与其他模块冲突。通过上面的定义,不难发现,函数和模块都是用来实现功能的,只是模块的范围比函数广,在模块中,可以有多个函数。原创 2023-11-07 16:00:00 · 223 阅读 · 2 评论 -
Python学习笔记--类的访问控制
在 Java 中,有 public (公共)属性 和 private (私有)属性,这可以对属性进行访问控制。那么在 Python 中有没有属性的访问控制呢?一般情况下,我们会使用两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问。在类内部的方法中使用时。为什么只能说一般情况下呢?因为实际上, Python 中是没有提供私有属性等功能的。但是 Python 对属性的访问控制是靠程序员自觉的。为什么这么说呢?看看下面的示例:仔细看图片,为什么说双下划线不是真正的私有属性呢?原创 2023-11-07 11:00:00 · 210 阅读 · 0 评论 -
Python学习笔记--类的多态
可以看到,userVip 和 userGeneral 是两个不同的对象,对它们调用 printUserInfo 方法,它们会自动调用实际类型的 printUser 方法,作出不同的响应。多态的概念其实不难理解,它是指对不同类型的变量进行相同的操作,它会根据对象(或类)类型的不同而表现出不同的行为。可以看到,我们对两个整数进行 + 操作,会返回它们的和,对两个字符进行相同的 + 操作,会返回拼接后的字符串。要注意喔,有了继承,才有了多态,也会有不同类的对象对同一消息会作出不同的相应。原创 2023-11-06 16:40:01 · 89 阅读 · 0 评论 -
Python学习笔记--类的继承
说到继承,你一定会联想到继承你老爸的家产之类的。类的继承也是一样。比如有一个旧类,是可以算平均数的。然后这时候有一个新类,也要用到算平均数,那么这时候我们就可以使用继承的方式。新类继承旧类,这样子新类也就有这个功能了。通常情况下,我们叫旧类为父类,新类为子类。在定义类的时候,可以在括号里写继承的类,如果不用继承类的时候,也要写继承 object 类,因为在 Python 中 object 类是一切类的父类。原创 2023-11-06 16:39:26 · 163 阅读 · 0 评论 -
Python学习笔记--初始化函数
usr/bin/env python # -*- coding: UTF-8 -*- # 旧式类 class OldClass : pass # 新式类 class NewClass(object) : pass可以看到,这里使用了两者中不同的方式定义类,可以看到最大的不同就是,新式类继承了object类,在 Python2 中,我们定义类的时候最好定义新式类,当然在 Python3 中不存在这个问题了,因为 Python3 中所有类都是新式类。那么新式类和旧式类有什么区别呢?# 旧式类# 新式类。原创 2023-10-29 13:00:00 · 1444 阅读 · 0 评论 -
Python学习笔记--类和对象
这部分内容主要讲类和对象,我们先来说说类和对象之间的关系。我们得先有了类,才能制作出对象。类就相对于工厂里面的模具,对象就是根据模具制造出来的产品。原创 2023-10-29 08:45:00 · 93 阅读 · 0 评论 -
Python学习笔记--类的定义和调用
知道了类是什么样子的,我们接下来就要学习怎么去定义类了。可以看到,我们是用class语句来自定义一个类的,其实这就好比我们是用def语句来定义一个函数一样。竟然说类是变量和方法的集合包,那么我们来创建一个类。var1 = 100var3 = '两点水'print('我是 fun1')print('我是 fun1')print('我是 fun1')你看,上面我们就定义了一个类,类名叫做ClassA, 类里面的变量我们称之为属性,那么就是这个类里面有 3 个属性,分别是var1var2和var3。原创 2023-10-28 13:15:00 · 390 阅读 · 0 评论 -
Python学习笔记--面向对象的概念
编程语言中,一般有两种编程思维,面向过程和面向对象。面向过程,看重的是解决问题的过程。这好比我们解决日常生活问题差不多,分析解决问题的步骤,然后一步一步的解决。而面向对象是一种抽象,抽象是指用分类的眼光去看世界的一种方法。Python 就是一门面向对象的语言,如果你学过 Java ,就知道 Java 的编程思想就是:万事万物皆对象。Python 也不例外,在解决实际问题的过程中,可以把构成问题事务分解成各个对象。面向对象都有两个基本的概念,分别是类和对象。原创 2023-10-28 09:30:00 · 57 阅读 · 0 评论 -
Python学习笔记--生成器
通过上面的学习,可以知道列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含 1000 万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。这样就不必创建完整的 list,从而节省大量的空间。在 Python 中,使用了 yield 的函数被称为生成器(generator)。跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。原创 2023-10-27 13:00:00 · 152 阅读 · 0 评论 -
Python学习笔记--list 生成式(列表生成式)
之前经过我们的学习,都知道如何创建一个 list ,可是有些情况,用赋值的形式创建一个 list 太麻烦了,特别是有规律的 list ,一个一个的写,一个一个赋值,太麻烦了。比如要生成一个有 30 个元素的 list ,里面的元素为 1 - 30。但是,如果用到 list 生成式,可以一句代码就生成九九乘法表了。你没听错,就是一句代码。不过,这里我们先要了解如何创建 list 生成式。原创 2023-10-27 12:15:00 · 133 阅读 · 0 评论 -
Python学习笔记---Python 迭代器
迭代器有两个基本的方法:iter() 和 next(),且字符串,列表或元组对象都可用于创建迭代器,迭代器对象可以使用常规 for 语句进行遍历,也可以使用 next() 函数来遍历。上面简单的介绍了一下迭代,迭代是 Python 最强大的功能之一,是访问集合元素的一种方式。现在正式进入主题:迭代器,迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。原创 2023-10-26 14:45:00 · 49 阅读 · 0 评论 -
Python学习笔记--迭代器和生成器综合例子
因为迭代器和生成器基本是互通的,因此有些知识点需要综合在一起。原创 2023-10-26 10:15:00 · 45 阅读 · 0 评论 -
Python学习笔记--迭代
比如在 Java 中,我们通过 List 集合的下标来遍历 List 集合中的元素,在 Python 中,给定一个 list 或 tuple,我们可以通过 for 循环来遍历这个 list 或 tuple ,这种遍历就是迭代。循环不仅可以用在 list 或tuple 上,还可以作用在其他可迭代对象上。也就是说,只要是可迭代的对象,无论有没有下标,都是可以迭代的。循环的,为什么这么说呢?因为 Python 的。循环抽象程度要高于 Java 的。可是,Python 的。原创 2023-10-25 16:00:00 · 90 阅读 · 0 评论 -
Python学习--匿名函数
python 使用 lambda 来创建匿名函数,也就是不再使用 def 语句这样标准的形式定义一个函数。你会认为输出什么呢?的形式去写一个那么长的函数,那么有没有快捷方式呢?有没有想过定义一个很短的回调函数,但又不想用。原创 2023-10-25 09:45:00 · 64 阅读 · 0 评论 -
Python学习--函数传值问题
创建了一个整形对象 1 ,变量 b 指向了这个对象,然后通过函数 chagne_number 时,按传值的方式复制了变量 b ,传递的只是 b 的值,并没有影响到 b 的本身。如fun(a),传递的只是 a 的值,没有影响 a 对象本身。其实就是再生成一个整形对象 1000,然后改变 a 的指向,不再指向整形对象 1 ,而是指向 1000,最后 1 会被丢弃。则是将 list a 的第三个元素值更改,这里跟上面是不同的,并不是将 a 重新指向,而是直接修改 list 中的元素值。因此,在一开始的例子中,原创 2023-10-24 16:00:00 · 82 阅读 · 0 评论 -
Python学习--函数返回值
回忆一下,元组是可以直接用逗号来创建的,观察例子中的 ruturn ,可以发现实际上我们使用的是逗号来生成一个元组。不知道此刻你还记不记得元组的相关知识,如果不记得,建议现在立刻写几个例子回忆一下,比如如何获取元组的第一个元素出来。Python 语言中的函数返回值可以是多个,而其他语言都不行,这是Python 相比其他语言的简便和灵活之处。认真观察就可以发现,尽管从第一个输出值来看,返回了多个值,实际上是先创建了一个元组然后返回的。如果参数类型不对,会报错,提示。这个示例,还通过内置函数。原创 2023-10-24 11:45:00 · 70 阅读 · 0 评论 -
Python学习--函数的参数
设置与传递参数是函数的重点,而 Python 的函数对参数的支持非常的灵活。主要的参数类型有:默认参数、关键字参数(位置参数)、不定长参数。下面我们将一一了解这几种参数。原创 2023-10-23 12:03:20 · 213 阅读 · 1 评论 -
Python 自定义函数的基本步骤
怎么自定义函数?要知道怎么定义函数,就要知道函数的组成部分是怎样的。def 函数名(参数1,参数2....参数n):函数体return 语句这就是 Python 函数的组成部分。函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数函数的第一行语句可以选择性地使用文档字符串(用于存放函数说明)函数内容以冒号起始,并且缩进return [表达式] 结束函数,选择性地返回一个值给调用方。原创 2023-10-23 12:02:33 · 229 阅读 · 0 评论 -
Python中的If条件语句学习
Python 条件语句跟其他语言基本一致的,都是通过一条或多条语句的执行结果( True 或者 False )来决定执行的代码块。Python 程序语言指定任何非 0 和非空(null)值为 True,0 或者 null 为 False。原创 2023-10-19 11:00:00 · 203 阅读 · 0 评论 -
Python中的循环语句Cycle学习
一般编程语言都有循环语句,为什么呢?那就问一下自己,我们弄程序是为了干什么?那肯定是为了方便我们工作,优化我们的工作效率啊。而计算机和人类不同,计算机不怕苦也不怕累,也不需要休息,可以一直做。你要知道,计算机最擅长就是做重复的事情。所以这时候需要用到循环语句,循环语句允许我们执行一个语句或语句组多次。循环语句的一般形式如下:在 Python 提供了 for 循环和 while 循环。这里又有一个问题了,如果我想让他运行了一百次之后停止,那该怎么做呢?原创 2023-10-18 16:30:00 · 212 阅读 · 3 评论 -
Python中Set()学习
python 的 set 和其他语言类似, 是一个无序不重复元素集, 基本功能包括关系测试和消除重复元素。set 和 dict 类似,但是 set 不存储 value 值的。原创 2023-10-19 09:45:00 · 67 阅读 · 0 评论 -
Python中的字典(Dictionary)学习
上一章节,我们学习了列表(List) 和 元组(tuple) 来表示有序集合。而我们在讲列表(list)的时候,我们用了列表(list) 来存储用户的姓名。那么如果我们为了方便联系这些童鞋,要把电话号码也添加进去,该怎么做呢?但是这样很不方便,我们把电话号码记录下来,就是为了有什么事能及时联系上这些童鞋。如果用列表来存储这些,列表越长,我们查找起来耗时就越长。原创 2023-10-18 09:00:00 · 219 阅读 · 11 评论 -
Python中的tuple(元组)学习
上一节刚说了一个有序列表 List ,现在说另一种有序列表叫元组:tuple。tuple 和 List 非常类似,但是 tuple 一旦初始化就不能修改。也就是说元组(tuple)是不可变的,那么不可变是指什么意思呢?元组(tuple) 不可变是指当你创建了 tuple 时候,它就不能改变了,也就是说它也没有 append(),insert() 这样的方法,但它也有获取某个索引值的方法,但是不能赋值。那么为什么要有 tuple 呢?那是因为 tuple 是不可变的,所以代码更安全。原创 2023-10-17 11:45:00 · 73 阅读 · 0 评论 -
Python中的List
List (列表)是 Python 内置的一种数据类型。它是一种有序的集合,可以随时添加和删除其中的元素。那为什么要有 List (列表)呢?我们用一个例子来说明。现在有一个团队要出去玩,要先报名。如果用我们之前学过的知识,那么就是用一个字符串变量把他们都记录起来。但是这样太麻烦了,而且也不美观。在编程中,一定要学会偷懒,避免「重复性工作」。如果有一百个成员,那么你及时是复制粘贴,也会把你写烦。这时候就可以使用列表了。就这样,一行代码就可以存放 N 多个名字了。原创 2023-10-17 11:00:00 · 110 阅读 · 0 评论 -
Python 中的变量Variable
a = 88这里的a就是一个变量,代表一个整数,注意一点是 Python 是不用声明数据类型的。在 Python 中是赋值语句,跟其他的编程语言也是一样的,因为 Python 定义变量时不需要声明数据类型,因此可以把任意的数据类型赋值给变量,且同一个变量可以反复赋值,而且可以是不同的数据类型。这种变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错。例如 Java 是静态语言。原创 2023-10-16 17:30:00 · 523 阅读 · 0 评论