
Python
文章平均质量分 72
Python零基础基础教程,由浅到深,由易到难,其中还运用了各种案例教学,适合刚入门或有点基础想学习Python的你。
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
菜鸟之编程
不积跬步,无以至千里,不积小流,无以成江海。学习永无止境。
展开
-
Python之网络协议
TCP协议和UDP协议是传输层的两种协议。Socket是传输层供给应用层的编程接口,所以Socket编程就分为TCP编程和UDP编程两类。Socket编程封装了常见的TCP、UDP操作,可以实现非常方便的网络编程。在Python语言标准库中,通过使用socket模块提供的socket对象,可以在计算机网络中建立可以互相通信的服务器与客户端。在服务器端需要建立一个socket对象,并等待客户端的连接。客户端使用socket对象与服务器端进行连接,一旦连接成功,客户端和服务器端就可以进行通信了。原创 2023-09-24 17:13:26 · 329 阅读 · 1 评论 -
Python之网络编程
IP地址就像是我们的家庭住址一样,如果你要写信给一个人,你就要知道他(她)的地址,这样邮递员才能把信送到。只不过我们的地址是用文字来表示的,计算机的地址用二进制数字表示。我们可以把“个人电脑”比作“一台电话”,那么“IP地址”就相当于“电话号码”,而Internet中的路由器,就相当于电信局的“程控式交换机”。端口的表示是一个16位的二进制整数,对应十进制的0-65535。目前主流使用的IP地址是IPV4,但是随着网络规模的不断扩大,IPV4面临着枯竭的危险,所以推出了IPV6。因此,它也被称为程序地址。原创 2023-09-23 11:05:23 · 326 阅读 · 0 评论 -
Python之协程Coroutines
当出现IO阻塞时,CPU一直等待IO返回,处于空转状态。比如,有3个任务需要完成,每个任务都在等待I/O操作时阻塞自身。协程,全称是“协同程序”,用来实现任务协作。基于yield并发执行,多任务之间来回切换,这就是个简单的协程的体现,但是他能够节省I/O时间吗?只有生产线是不够的,所以找五个工人来进行生产,这个工人能够利用这些材料最终一步步的将手机做出来,乔布斯想开工厂生产手机,费劲力气,制作一条生产线,这个生产线上有很多的器件以及材料。使用asyncio,整体执行完,耗时3秒,效率极大提高。原创 2023-09-18 22:06:02 · 242 阅读 · 0 评论 -
Python之进程Process
进程(Process):拥有自己独立的堆和栈,既不共享堆,也不共享栈,进程由操作系统调度;进程切换需要的资源很最大,效率低。对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,就启动了一个记事本进程,打开两个记事本就启动了两个记事本进程,打开一个Word就启动了一个Word进程。原创 2023-09-15 20:22:48 · 399 阅读 · 0 评论 -
Python之线程(三)
生产者指的是负责生产数据的模块(这里模块可能是:方法、对象、线程、进程)。原创 2023-09-12 21:02:41 · 142 阅读 · 0 评论 -
Python之线程(二)
线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面的线程使用完毕后,下一个线程再使用。前一人使用完后,后一人再使用。没有线程同步机制,两个线程同时操作同一个账户对象,竟然从只有100元的账户,轻松取出80*2=160元,账户余额竟然成为了-60。死锁是由于“同步块需要同时持有多个锁造成”的,要解决这个问题,思路很简单,就是:同一个代码块,不要同时持有两个对象锁。,抢到锁的线程先执行,没有抢到锁的线程需要等待,等互斥锁使用完释放后,其它等待的线程再去抢这个锁。原创 2023-09-11 21:17:30 · 197 阅读 · 0 评论 -
Python之线程Thread(一)
线程(Thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位;一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线;拥有自己独立的栈和共享的堆,共享堆,不共享栈,标准线程由操作系统调度;调度和切换:线程上下文切换比进程上下文切换要快得多。原创 2023-09-10 14:45:45 · 284 阅读 · 0 评论 -
Python之并发编程介绍
串行(serial):一个CPU上,按顺序完成多个任务并行(parallelism):指的是任务数小于等于cpu核数,即任务真的是一起执行的并发(concurrency):一个CPU采用时间片管理方式,交替的处理多个任务。一般是是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已)原创 2023-09-09 21:00:59 · 1139 阅读 · 7 评论 -
Python之设计模式
设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计模式有很多种,比较流行的是:GOF(Goup Of Four)23种设计模式。当一个对象的产生需要比较多的资源,如读取配置文件、产生其他依赖对象时,可以产生一个“单例对象”,然后永久驻留内存中,从而极大的降低开销。单例模式(Singleton Pattern)的核心作用是确保一个类只有一个实例,并且提供一个访问该实例的全局访问点。工厂模式实现了创建者和调用者的分离,使用专门的工厂类将选择实现类、创建对象进行统一的管理和控制。原创 2023-09-09 15:30:11 · 444 阅读 · 0 评论 -
Python之特殊属性、对象的浅拷贝和深拷贝
Python对象中包含了很多双下划线开始和结束的属性,这些是特殊属性,有特殊用法。除了继承,“组合”也能实现代码的复用!“组合”核心是“将父类对象作为子类的属性”。浅拷贝:拷贝时,拷贝源对象,但对象包含的子对象内容不拷贝。深拷贝:拷贝时,拷贝源对象,也递归拷贝对象中包含的子对象。两人组合后,可以复用对方的属性和方法!函数,递归拷贝对象中包含的子对象。Python拷贝一般都是浅拷贝。原创 2023-08-09 19:50:24 · 406 阅读 · 0 评论 -
Python之多重继承
在子类中,如果想要获得父类的方法时,我们可以通过super()来做。super()代表父类的定义,不是父类对象。super(子类名称,self).__init__(参数列表)class A:print("A的构造方法")super(B,self).__init__() #调用父类的构造方法print("B的构造方法")#A.say(self) 调用父类的say方法super().say() #通过super()调用父类的方法b = B()b.say()say AAA。原创 2023-08-08 19:38:59 · 3490 阅读 · 0 评论 -
Python之面向对象和继承
Python是面向对象的语言,支持面向对象编程的三大特性:继承、封装(隐藏)、多态。2.1、封装(隐藏)隐藏对象的属性和实现细节,只对外提供必要的方法。相当于将“细节封装起来”,只对外暴露“相关调用方法”。通过前面学习的“私有属性、私有方法”的方式,实现“封装”。Python追求简洁的语法,没有严格的语法级别的“访问控制符”,更多的是依靠程序员自觉实现。2.2、继承继承可以让子类具有父类的特性,提高了代码的重用性。从设计上是一种增量进化,原有父类设计不变的情况下,可以增加新的功能,或者改进已有的算法。原创 2023-06-17 19:54:56 · 569 阅读 · 0 评论 -
Python之私有属性、私有方法、装饰器及属性和类的命名规则
xxx:保护成员,不能用导入,只有类对象和子类对象能访问这些成员。(⚠️讲完模块再看)__xxx__:系统定义的特殊成员__xxx: 类中的私有成员,只有类对象自己能访问,子类对象也不能访问。(但,在类外部可以通过对象名. _类名__xxx这种特殊方式访问。Python不存在严格意义的私有成员)⚠️ 再次强调,方法和属性都遵循上面的规则。原创 2023-06-16 21:06:03 · 1205 阅读 · 0 评论 -
Python之del析构方法_、call__方法、方法没有重载
比如:释放对象占用的资源,例如:打开的文件资源、网络连接等。Python实现自动的垃圾回收,当对象没有被引用时(引用计数为0),由垃圾回收器调用。Python是动态语言,我们可以动态的为类添加新的方法,或者动态的修改类的已有的方法。可调用对象包括自定义的函数、Python 内置函数、以及本节所讲的实例对象。该方法使得实例对象可以像调用普通函数那样,以“对象名()”的形式使用。如果我们在类体中定义了多个重名的方法,只有最后一个方法有效。的对象,称为“可调用对象”,即该对象可以像函数一样被调用。原创 2023-06-14 21:08:11 · 659 阅读 · 0 评论 -
Python实例属性和实例方法_类对象、类属性、类方法、静态方法
实例属性是从属于实例对象的属性,也称为“实例变量”。他的使用有如下几个要点:实例属性一般在__init__()在本类的其他实例方法中,也是通过self进行访问:self.实例属性名#创建和初始化对象,调用__init__()初始化属性#可以给已有属性赋值,也可以新加属性实例方法是从属于实例对象的方法。方法的调用格式如下:selfselfselfself。原创 2023-06-12 20:37:49 · 1054 阅读 · 0 评论 -
Python类的定义_类和对象的关系_对象的内存模型
类可以看做是一个模版,或者图纸,系统根据类的定义来造出对象。我们要造一个汽车,怎么样造?类就是这个图纸,规定了汽车的详细信息,然后根据图纸将汽车造出来。类:我们叫做class。对象:我们叫做objectinstance(实例)。以后我们说某个类的对象,某个类的实例。是一样的意思。我们把对象比作一个“饼干”,类就是制造这个饼干的“模具”。原创 2023-06-05 20:18:48 · 137 阅读 · 0 评论 -
Python面向对象和面向过程的区别
Python完全采用了面向对象的思想,是真正面向对象的编程语言,完全支持面向对象的基本功能,例如:继承、多态、封装等。Python中,一切皆对象。我们在前面学习的数据类型、函数等,都是对象。面向对象(Object oriented Programming,OOP)编程的思想主要是针对大型软件设计而来的。面向对象编程使程序的扩展性更强、可读性更好,使编程可以像搭积木一样简单。面向对象编程将数据和操作数据相关的方法封装到对象中,组织代码和数据的方式更加接近人的思维,从而大大提高了编程的效率。原创 2023-05-30 20:46:47 · 653 阅读 · 0 评论 -
Python递归函数和嵌套函数
递归(recursion)是一种常见的算法思路,在很多算法中都会用到。比如:深度优先搜索(DFS:Depth First Search)等。递归的基本思想就是“自己调用自己”递归函数指的是:自己调用自己的函数,在函数体内部直接或间接的自己调用自己。每个递归函数必须包含两个部分:终止条件表示递归什么时候结束。一般用于返回值,不再调用自己。递归步骤把第n步的值和第n-1步相关联。⚠️递归函数由于会创建大量的函数对象、过量的消耗内存和运算能力。在处理大量数据时,谨慎使用。原创 2023-05-17 22:03:39 · 311 阅读 · 0 评论 -
Python参数的类型
我们可以为某些参数设置默认值,这样这些参数在传递时就是可选的。按位置传递的参数,称为:“位置参数”。表达式只允许包含一个表达式,不能包含复杂语句,该表达式的计算结果就是函数的返回值。在带星号的“可变参数”后面增加新的参数,必须在调用的时候“强制命名参数”。我们也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。我们也可以按照形参的名称传递参数,称为“命名参数”,也称“关键字参数”。运算结果是:表达式的运算结果。可变参数指的是“可变数量的参数”。函数是一种简单的、在同一行中定义函数的方法。原创 2023-05-16 21:22:45 · 105 阅读 · 0 评论 -
Python参数的传递
函数的参数传递本质上就是:从实参到形参的赋值操作。Python中“一切皆对象”,所有的赋值操作都是“引用的赋值”。所以,Python中参数的传递都是“引用传递”,不是“值传递”。字典、列表、集合、自定义的对象等数字、字符串、元组、function等。原创 2023-05-15 21:22:12 · 4263 阅读 · 0 评论 -
Python函数的基本概念
Python函数分为如下几类:内置函数我们前面使用的、、等这些都是内置函数,我们可以拿来直接使用。标准库函数我们可以通过语句导入库,然后使用其中定义的函数第三方库函数Python社区也提供了很多高质量的库。下载安装这些库后,也是通过语句导入,然后可以使用这些第三方库的函数用户自定义函数用户自己定义的函数,显然也是开发中适应用户自身需求定义的函数。今天我们学习的就是如何自定义函数。Python中,定义函数的语法如下: 简单定义一个函数:要点:我们使用来定义函数,然后就是一个空格和函数名称;参数列表原创 2023-05-13 21:19:28 · 785 阅读 · 0 评论 -
Python控制语句和逻辑思维(三)
如果for、while语句没有被break语句结束,则会执行else子句,否则不执行。录入这4位员工的薪资。全部录入后,打印提示“您已经全部录入4名员工的薪资”。多个循环嵌套时,continue也是应用于最近的一层循环。【操作】要求输入员工的薪资,若薪资小于0则重新输入。最后打印出录入员工的数量和薪资明细,以及平均薪资。❤️推导式是典型的Python风格,会使用它,代表你已经超过Python初学者的水平。类似于列表推导式,字典推导也可以增加if条件判断、多个for循环。显然,元组是没有推导式的。原创 2023-05-12 22:44:54 · 136 阅读 · 0 评论 -
Python控制语句和逻辑思维(二)
表达这样的逻辑:如果符合条件,则反复执行循环体里的语句。【操作】利用while循环,计算1-100之间数字的累加和;计算1-100之间偶数的累加和,计算1-100之间奇数的累加和。【操作】利用for循环,计算1-100之间数字的累加和;计算1-100之间偶数的累加和,计算1-100之间奇数的累加和。循环体里面的语句至少应该包含改变条件表达式的语句,以使循环趋于结束;一个循环体内可以嵌入另一个循环,一般称为“嵌套循环”,或者“多重循环”。是一个迭代器对象,用来产生指定范围的数字序列。是可选的步长,默认为1。原创 2023-05-11 20:19:50 · 245 阅读 · 0 评论 -
Python控制语句和逻辑思维(一)
控制语句:把语句组合成能完成一定功能的小逻辑模块。分为三类:顺序、选择和循环。学会控制语句,是真正跨入编程界的“门槛”,是成为“程序猿”的“门票”。“如果…,则…”很神奇的是,三种流程控制语句就能表示所有的事情!不信,你可以试试拆分你遇到的各种事情。实际上,任何软件和程序,小到一个练习,大到一个操作系统,本质上都是由“变量、选择语句、循环语句”组成。选择结构通过判断条件是否成立,来决定执行哪个分支。选择结构有多种形式,分为:单分支、双分支、多分支。原创 2023-05-10 21:30:20 · 218 阅读 · 0 评论 -
Python字典
字典在内存中开销巨大,典型的空间换时间。键查询速度很快往字典里面添加新键值对可能导致扩容,导致散列表中键的次序变化。因此,不要在遍历字典的同时进行字典的修改键必须可散列数字、字符串、元组,都是可散列的自定义对象需要支持下面三点:(面向对象章节中再展开说)原创 2023-05-09 22:56:05 · 367 阅读 · 2 评论 -
Python列表_元组
列表关于排序的方法list.sorted()是修改原列表对象,元组没有该方法。如果要对元组排序,只能使用内置函数sorted(tupleObj),并生成新的列表对象。zip(列表1,列表2,...)将多个列表对应位置的元素组合成为元组,并返回这个zip对象。因此,我们只需学元组的创建和删除,元素的访问和计数即可。元组的元素访问、index()、count()、切片等操作,和列表一样。因此,元组没有增加元素、修改元素、删除元素相关的方法。元组属于不可变序列,不能修改元组中的元素。【操作】生成器的使用测试。原创 2023-05-08 22:36:36 · 99 阅读 · 0 评论 -
Python列表_遍历_排序
内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象。只是将list2也指向了列表对象,也就是说list2和list2持有地址值是相同的,列表对象本身的元素并没有复制。我们也可以通过内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改。通过上面操作,我们可以看出,生成的列表对象b和c都是完全新的列表对象。对数值型列表的所有元素进行求和操作,对非数值型列表运算则会报错。原创 2023-05-06 22:16:52 · 322 阅读 · 0 评论 -
Python列表元素访问和计数_切片slice操作
可以获取指定元素首次出现的索引位置。语法是:index(value,[start,[end]])切片是Python序列及其重要的操作,适用于列表、元组、字符串等等。索引的区间在[0, 列表长度-1]切片slice操作可以让我们快速提取子列表或修改。切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]判断列表中是否存在指定的元素,我们可以使用count()类似字符串的切片操作,对于列表的切片操作和字符串类似。返回列表长度,即列表中包含元素的个数。可以返回指定元素在列表中出现的次数。原创 2023-05-05 17:16:40 · 226 阅读 · 0 评论 -
Python列表_元素的5种添加方式_列表删除的三种方式
并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和新列表的元素依次复制到新的列表对象中。这样,会涉及大量的复制操作,对于操作大量元素不建议使用。当列表增加和删除元素时,列表会自动进行内存管理,大大减少了程序员的负担。⚠️除非必要,我们一般只在列表的尾部添加元素或删除元素,这会大大提高列表的操作效率。将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象。使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复。原地修改列表对象,是真正的列表尾部添加新的元素,原创 2023-05-04 21:29:55 · 854 阅读 · 0 评论 -
Python列表_特点_内存分析_创建列表的4种方式_
列表:用于存储任意数目、任意类型的数据集合。列表是内置可变序列,是包含多个元素的有序连续的内存空间。原创 2023-05-03 23:27:51 · 161 阅读 · 0 评论 -
Python字符串_format格式化_数字格式化操作_可变字符串_类型转换
与C++、Java等高级程序设计语言一样,Python语言同样也支持数据类型转换。类型转换将x转换为一个整数将x转换为一个长整数float(x)将x转换到一个浮点数创建一个复数str(x)将对象 x 转换为字符串repr(x)将对象 x 转换为表达式字符串eval(str)用来计算在字符串中的有效Python表达式,并返回一个对象Complex(A)将参数转换为复数型tuple(s)将序列 s 转换为一个元组list(s)将序列 s 转换为一个列表set(s)原创 2023-05-02 15:38:48 · 450 阅读 · 0 评论 -
Python字符串_常用查找方法_去除首尾信息_大小写转换_排版_特征判断
我们可以通过strip()去除字符串首尾指定信息。通过lstrip()去除字符串左边指定信息,rstrip()去除字符串右边指定信息。字符串有很多常用的方法,我们需要熟悉。我们通过表格将这些方法汇总起来,方便大家查阅。希望大家针对每个方法都做一次测试。编程中关于字符串大小写转换的情况,经常遇到。我们将相关方法汇总到这里。这三个函数用于对字符串实现排版。【操作】去除字符串首尾信息。原创 2023-05-01 09:19:41 · 176 阅读 · 0 评论 -
Python字符串切片slice操作_split()分割_join()合并_代码效率测试
切片操作时,起始偏移量和终止偏移量不在[0,字符串长度-1]这个范围,也不会报错。split()可以基于指定分隔符将字符串分隔成多个子字符串(存储到列表中)。join()的作用和split()作用刚好相反,用于将一系列子字符串连接起来。函数在拼接字符串之前会计算所有字符串的长度,然后逐一拷贝,仅新建一次对象。【操作】测试+拼接符和join(),不同的效率 (mypy_07.py)关键字,判断某个字符(子字符串)是否存在于字符串中。,会生成新的字符串对象,因此不推荐使用。拼接字符串要点: 使用字符串拼接符。原创 2023-04-30 21:26:55 · 717 阅读 · 0 评论 -
Python字符串_str()_字符提取_replace()替换_内存分析
replace()原创 2023-04-30 20:59:17 · 146 阅读 · 0 评论 -
Python字符串_unicode字符集_三种创建字符串的方式_len()
实际上,大多数程序员打交道最多的是“字符串”而不是“数学”。因为,编程是用来解决现实问题的,因此逻辑思维的重要性远远超过数学能力。Python3的字符默认就是16位Unicode编码,ASCII码是Unicode编码的子集。⚠️Python的字符串是不可变的,我们无法对原字符串做任何修改。但,可以将字符串的一部分复制到新创建的字符串,达到“看起来修改”的效果。使用两种引号的好处是可以创建本身就包含引号的字符串,而不用使用转义字符。Python允许空字符串的存在,不包含任何字符且长度为0。原创 2023-04-27 09:00:12 · 151 阅读 · 0 评论 -
Python同一运算符_身份运算符_优先级问题
运算符说明布尔与、布尔或、布尔非同一性判断,判断是否为同一个对象判断是否在指定序列中=,!原创 2023-04-26 08:58:12 · 337 阅读 · 2 评论 -
Python布尔值本质_逻辑运算符_位运算符_比较运算符
Python2中没有布尔值,直接用数字0表示False, 用数字1表示True。Python3中,把True和False定义成了关键字,但他们的本质还是1和0,甚至可以和数字相加。在Python语言底层,会将布尔值True看作1,将布尔值False看作0,尽管从表面上看,True和1、False和0是完全不同的两个值,但实际上,它们是相同的。原创 2023-04-25 09:20:59 · 130 阅读 · 0 评论 -
Python时间的表示_unix时间点_毫秒微秒_time模块
python中可以通过time.time() 获得当前时刻,返回的值是以秒为单位,带微秒(1/1000毫秒)精度的浮点值。例如:1635063628.5632517。计算机中时间的表示是从“1970年1月1日 00:00:00”开始,以毫秒(1/1000秒)进行计算。我们也把1970年这个时刻称为“unix时间点”。⚠️刚开始,我们简单认识一下时间,是为了让大家更深刻认识“一切都是数字”。关于时间格式化问题、日期问题。这样,我们就把时间全部用数字来表示了。原创 2023-04-24 12:28:09 · 301 阅读 · 0 评论 -
Python整数_不同进制_其他类型转成整数
Python3中可以做超大数的计算,而不会造成“整数溢出”,这也是Python特别适合科学运算的特点。Googol也是Google最初的名字,这也是Google最初的含义。整数和浮点数混合运算时,表达式结果自动转型成浮点数。这三种进制可以非常方便的进行“位运算”操作。位运算后续将会介绍。是32位,可以存储从-2147483648。可以存储任意大小的整数,long。Python2中,int。Python3中,int。到2147483647。的整数(约±21亿)。【操作】测试不同进制。原创 2023-04-21 10:01:18 · 122 阅读 · 0 评论 -
Python内置数据类型_基本算术运算符
是一个函数,我们以后会详细介绍。他返回的是一个元组(后续将会学习)。Python支持整数(如:50。),我们可以对数字做如下运算。或者科学计数法314e-2。表示真假,仅包含:True。)和浮点数(如:3.14。【操作】基本运算符的使用。使用divmod()原创 2023-04-19 08:56:56 · 152 阅读 · 0 评论