
Python手把手教程
文章平均质量分 93
剖析Python与C/C++等其他语言用法上的不同
安然无虞
你好,我是安然无虞。2025年,我们一起打上凌霄宝殿!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
31天Python入门——第27天: Socket编程·TCP&UDP
现在的软件开发基本都需要网络通讯不管是传统计算机软件, 还是手机软件, 或是物联网嵌入系统软件, 都要和其他网络系统进行通讯.而当今网络世界基本上都是使用 TCP/IP 协议进行通讯的.任何应用, 比如 浏览网页、微信、抖音、支付宝或是我们开发的软件等等, 都是通过TCP/IP协议进行通讯的.TCP/IP 协议 就是一种传输数据的方案.我们可以用发快递来打比方:在 南京的安然 要寄一个物品 给 在上海的无虞.原创 2025-04-10 09:05:17 · 1911 阅读 · 33 评论 -
31天Python入门——第26天:日期和时间
开发程序时, 经常需要获取两个代码位置在执行时的时间差, 比如, 我们想知道某个函数执行大概耗费了多少时间, 就可以使用。会返回从 1970年1月1日0点 (所谓的epoch时间点) 到当前时间 经过的秒数, 可以简称为 秒数时间.如果要获取的是 某个指定时间, 比如: ‘2018-7-8’, 而不是当前时间, 对应的星期几, 怎么办?以指定格式的字符串显示时间, 是非常实用的, 比如日志里面的时间戳.有的时候, 我们的程序获取的时间是 ISO 8601 格式的字符串.原创 2025-04-06 07:00:00 · 462 阅读 · 2 评论 -
31天Python入门——第25天:文件和目录操作
运行之后会在当前目录下面创建 tmp 目录, 在 tmp目录下面创建 python 目录, 在 python 目录下面创建 fileop 目录.我们要拷贝一个目录里面所有的内容 (包括子目录和文件, 子目录里面的子目录和文件等) 到另外一个目录中, 可以使用 shutil 模块的。注意: 参数 ignore_errors 值设置为 True, 表示忽略删除过程中的错误 (比如要删除的目录不存在), 不会抛出异常.假如我们要获取某个目录中所有的 文件, 包括子目录里面的文件. 可以使用 os库中的。原创 2025-04-05 06:54:32 · 1167 阅读 · 0 评论 -
31天Python入门——第24天:挑战一口气把多线程和多进程讲明白
我们前面一直写的 Python 程序, 里面虽然没有创建线程的代码, 但实际上, 当 Python 解释器运行起来(成为一个进程), OS 就自动创建一个线程, 通常称为主线程, 在这个主线程里面执行代码指令.比如, 下面这个程序, 运行起来后, 只有一个线程, 就是主线程, 在主线程里面执行代码, 顺序下来, 一直执行到结束, 主线程就退出了. 同时进程也结束了.别的线程B已经申请到了这个锁, 并且还没有释放, 那么线程A的代码就在此处等待线程B释放锁, 不去执行后面的代码了.原创 2025-04-04 07:42:27 · 1443 阅读 · 29 评论 -
31天Python入门——第23天:调用其他程序
前面在 编解码文章 中已经学过, bytes要解码为 str, 就需要调用 decode方法. 我们是中文Windows, 所以通常外部程序输出的都是 gbk 编码的字节串, 所以这里decode参数要指定为 gbk.首先, 我们可以获取外部程序输出到屏幕的内容. 这在自动化的时候非常有用. 可以用来判断外部程序执行是否成功 或者获取我们要分析的数据.这是因为, os.system函数调用外部程序的时候, 必须要等被调用程序执行结束, 才会接着往下执行代码, 否则会一直等待.原创 2025-04-04 07:11:58 · 820 阅读 · 0 评论 -
31天Python入门——第22天:JSON详解
这个过程,就好像 两个人聊天时,双方 需要把自己脑子中的 事物 转化为 语言描述传递给对方, 接收到对方的语言描述,再转化为自己的脑子中的事物一样.而且 不同的客户端、服务端程序可能使用不同的语言. 为了方便 不同的编程语言 处理, 这个序列化后的 格式 应该是各种语言都 方便 处理的.接收方如果也是Python开发的,可以使用 JSON库中的 loads方法,把JSON格式的字符串变为 Python中的数据对象.现在的问题是,我们怎么把这样的一个 存在于内存中的数据对象传递给 客户端呢?原创 2025-04-02 06:55:03 · 785 阅读 · 13 评论 -
31天Python入门——第21天:字符编码
这个字符集里面包括了现今世界上的常用文字符号 和 其对应的数字表示.这样就解决了在一篇文章中包含多国文字的问题了.原创 2025-04-01 07:01:21 · 1008 阅读 · 12 评论 -
31天Python入门——第20天:魔法方法详解
当对象被释放的时候, 会执行. 它通常用于执行一些资源释放或清理操作, 如关闭文件、释放网络连接等. 但是, 但并不保证一定会调用, 因为垃圾回收可能由不同的策略来管理. python中对象的释放是一个比较复杂的过程. 一个对象有可能在引用到0的时候被释放, 且这个释放是可能在任意一个地方发生.开头和结尾, 用于实现类的特殊行为.这些魔法方法在Python中具有特殊的含义, 可以让你自定义类的行为, 使其更符合你的需求, 它们一般是自动调用, 也可以通过内置函数来显式调用.原创 2025-04-01 06:23:46 · 1877 阅读 · 17 评论 -
31天Python入门——第19天:再学面向对象·一切皆对象
获取对象的类型. 函数和模块也是对象. 我们可以像操作其他对象一样对函数和模块进行操作. 函数可以赋值给变量、作为参数传递给其他函数、作为返回值返回等. 类也是对象. 我们可以用类创建实例,实例也是对象. 类是对象的模板,实例是根据类创建的具体对象. 类可以拥有属性和方法,实例可以调用类的方法和访问属性.类方法通常用于执行与类相关的操作,而不需要依赖于类的实例. 常见的用途包括创建类的实例的辅助方法,或者在类级别上管理类的状态.静态方法通常用于执行与类相关的任务,但不依赖于类的实例状态或属性的操作.原创 2025-04-01 06:01:05 · 1432 阅读 · 13 评论 -
31天Python入门——第18天:面向对象三大特性·封装继承多态
在Python中, 多态性是由动态类型和动态绑定实现的.具体来说, Python是一种动态类型语言, 这意味着变量的类型在运行时根据赋值而确定, 而不是在编译时确定.因此, 同一个方法名可以在不同的类中实现, 并且可以根据对象的类型调用不同类的方法。: 默认情况下, 类中的属性和方法都是公有的, 它们的名字前都没有下划线, 这类型的属性和方法在类的外部, 内部, 子类中, 都是可以正常访问的.子类可以重写父类的方法, 即在子类中重新实现与父类同名的方法.这样做可以根据子类的需要修改或扩展方法的行为.原创 2025-03-31 20:49:40 · 1156 阅读 · 9 评论 -
31天Python入门——第17天:初识面向对象
面向对象编程是一种编程思想,它将现实世界的概念和关系映射到代码中.在面向对象编程中,我们通过创建对象来表示现实世界中的事物,并通过定义对象的属性和方法来描述它们的状态和行为面向对象编程强调了代码的模块化、封装、抽象、继承和多态等概念.例如, 在现实世界中我们需要去记录一名学生的基本信息, 如果使用文本来记录: 例如有一名学生叫张三, 来自北京, 性别男. 这样可以轻松记录一名学生的信息.但是使用如下表格, 结构会更加的清晰.姓名张三年龄20籍贯北京性别男品牌型号排量车架号。原创 2025-03-31 20:27:11 · 2274 阅读 · 11 评论 -
31天Python入门——第16天:模块与库详解
实际开发中, 一个大型的项目往往需要使用到很多的Python模块, 如果将这些模块都堆放在一起, 势必不好管理.而且, 使用模块可以有效避免变量名或函数名重名引发的冲突, 但是如果模块名重复怎么办呢?使用模块的主要优势之一是代码的可重用性.通过将相关的代码组织在模块中, 可以在不同的程序或项目中重复使用, 减少代码重复编写的工作量, 并提高代码的可维护性和可扩展性.如果你写的 模块文件 里面的函数, 实现了通用的功能,经常被其它模块所调用, 我们就可以把这些被调用的模块文件称之为 库。原创 2025-03-27 18:50:34 · 1023 阅读 · 0 评论 -
31天Python入门——第15天:日志记录
模块用于处理和输出日志消息的组件.我们可以为日志记录器添加一个或多个处理程序, 以决定日志消息的输出位置.可以设置日志记录器的级别, 以决定哪些级别的日志消息会被记录.默认情况下, 日志记录器的级别是。通过适当的日志记录, 我们可以追踪应用程序的行为、排查问题和监控系统状态.模块, 它是一个强大而灵活的日志记录工具.要使用。要将日志写入到文件只需要将创建日志处理程序的。模块, 使得日志记录变得简单而强大,模块, 先导入, 然后创建日志记录器。将处理程序添加到日志记录器.级别的消息会被记录.原创 2025-03-26 17:50:14 · 1686 阅读 · 2 评论 -
31天Python入门——第14天:异常处理
异常类型都是 继承自Exception的类,表示各种类型的错误.我们也可以自己定义异常,比如我们写一个用户注册的函数, 要求用户输入的电话号码只能是中国的电话号码,并且电话号码中不能有非数字字符.# 异常对象,代表电话号码有非法字符pass# 异常对象,代表电话号码非中国号码pass定义了上面的异常,当用户输入电话号码时,出现相应错误的时候,我们就可以使用raise 关键字来抛出对应的自定义异常.tel = input('请注册您的电话号码:')# 如果有非数字字符。原创 2025-03-26 17:14:02 · 1487 阅读 · 0 评论 -
31天Python入门——第13天:文件操作
简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。(是字符数还是字节数和读取的文件类型相关联), 指定要读取的最大字符数或字节数.如果省略参数或指定为负数(默认值), 则会读取全部内容.返回值是一个包含读取行内容的字符串.JSON的语法规则与Python中的字典(dict)非常相似,因此我们可以将Python中的字典转换为JSON格式,以便在不同的系统或应用程序之间进行数据交换.现在要求你写一个函数,参数是图片文件的路径,函数根据文件的开头8个字节的信息,判断该文件是不是png文件.原创 2025-03-25 07:27:26 · 1636 阅读 · 0 评论 -
31天Python入门——第12天:迭代器·生成器底层竟是这样子的
生成器是Python中非常强大和灵活的工具,可以优化代码的性能和内存消耗,并简化处理大型数据集和无限序列的操作。当调用者请求下一个值时,生成器函数会从上次暂停的地方继续执行,生成下一个值,并再次暂停。生成器是一种特殊类型的函数,可以按需生成一系列的值,而不是一次性将所有值都计算出来并存储在内存中.这种逐步生成值的方式使得生成器可以有效地处理大量的数据或无限的序列,而不会一次性占用大量的内存空间。当生成器函数被调用时,它不会立即执行函数体的所有代码,而是在每次调用生成器的。生成器函数是一种定义生成器的方法。原创 2025-03-24 18:30:00 · 1705 阅读 · 0 评论 -
31天Python入门——第11天:挑战一口气把闭包·装饰器讲明白
装饰器提供了一种简洁而灵活的方式来修改函数的功能,使得我们可以在不改变原代码的情况下添加额外的功能. 用一句话来说就是: 装饰器就是创建一个闭包函数, 在闭包函数的内部调用目标函数, 然后添加相应的功能.. 装饰器函数通常在内部定义一个闭包函数,用于包装原始函数,添加额外的逻辑或功能. 装饰器函数可以访问原始函数的参数和返回值,并可以在调用前后执行自定义的操作.某公司要开发一个 系统, 这个系统运行的时候, 用户输入指令,比如,查询价格,就由相应的查询价格的业务代码去处理。原创 2025-03-24 07:06:52 · 1354 阅读 · 36 评论 -
31天Python入门——第10天:深入理解值传递·引用传递以及深浅拷贝问题
如果你学过驾驶,八成被教练骂过吧?踩离合器,档位杆 推到1挡位置!!慢慢抬起脚,松离合器仔细分析上面的话,大家可以发现,我们的语言描述 通常 会涉及到 对象 :对象 就是语言描述中涉及的 物体比如上面的 离合器、档位杆,就是 对象,而且这是两种 不同类型 的对象相应的,在Python语言中也会涉及到 对象, 这些对象 包含了一定的 数据 信息Python语言中,所有的 数据 都被称之为 对象我们写的Python代码, 就是要 处理各种 对象 ,从而完成具体的任务比如,我们的语句。原创 2025-03-22 07:37:20 · 2185 阅读 · 0 评论 -
31天Python入门——第9天:再学函数
args 和 kwargs 是作为普通变量使用的,而不是作为参数传递给函数. 这里的 args 是一个元组,kwargs 是一个字典,它们已经被函数定义中的 *args 和 **kwargs 收集并存储了。: **kwargs, 在参数是key=value的情况下, 所有的key-value都会被kwargs接收, 同时会将key-value组成一个字典.只能被1跟它本身整除的数. 2, 3, 4, 5 ,6 ,7 ,8 ,9, 10 每一次取余的结果都不是0, 那么它就是质数. 反之, 就不是质数.原创 2025-03-21 07:37:18 · 2785 阅读 · 11 评论 -
31天Python入门——第8天:初学函数时你有什么疑问吗?
"""注释"""# 函数体函数代码块以def关键词开头,后接函数标识符名称和小括号()任何传入参数必须放在小括号中间。小括号之间可以用于定义参数函数的第一行语句可以选择性地使用文档字符串——用于存放函数说明函数内容以冒号起始,并且缩进return [表达式]结束函数,选择性地返回一个值给调用方, 不带表达式的return相当于返回 None定义一个函数只给了函数一个名称,指定了函数里包含的参数和代码块结构.这个函数的基本结构完成以后,可以通过函数名+小括号来调用此函数.原创 2025-03-21 07:00:00 · 1083 阅读 · 0 评论 -
31天Python入门——第7天:集合·字典你真的懂了吗?
变量名称 = {元素1, 元素2, 元素3, ....}# 定义空集合变量名称 = set()注意:Python的集合(set)可以容纳任何可哈希(hashable)的数据类型的元素(key),例如数字、字符串、元组等. 不可哈希(unhashable)的数据类型,例如列表、字典、集合等,则不能作为集合的元素(key). 这是因为集合的元素(key)需要能够进行哈希运算,以便于进行快速的查找和去重.# 最常见的创建字典的方式dic = {'name': '张三','age': 18。原创 2025-03-20 07:31:28 · 1151 阅读 · 9 评论 -
31天Python入门——第6天:一文讲透列表·元组
列表(List)对象 经常被用来 存储 数据对象我们可以把列表想象为 一连串的储物格,就像下面这样其中每个储物格里面都可以存储 任何类型 的对象注意:是任何类型的对象, 整数、小数、字符串、函数、等等 都可以, 也可以存储另一个列表对象列表的定义语法:numlist = [元素1, 元素2, 元素3, 元素4…]其中, 元素就是列表内的每一个单个的数据, 既然是数据, 那么肯定就有数据类型了, 元素的数据类型无限制, 可以是任意类型的数据# 定义列表变量.原创 2025-03-19 20:27:08 · 1081 阅读 · 0 评论 -
31天Python入门——第5天:循环那些事儿
for循环通常有一个循环变量, 一个序列,和一个代码块组成, 循环变量用于存储当前迭代的元素, 序列是要遍历的容器类型, 代码块则是在每个迭代步骤中要执行的操作, 在每个迭代步骤中, 循环变量都会被赋值为序列中的下一个元素, 然后执行代码块. 当序列中的所有元素都被遍历完成后, 循环结束.等容器类型中的元素, 并将这些元素逐一赋值给循环中的临时变量. 然后执行特定的操作, 循环会一直重复执行, 直到序列中的所有元素都被遍历完成. 对于序列中的每个元素, 都会执行一次循环体中的代码块.原创 2025-03-19 07:00:00 · 1210 阅读 · 7 评论 -
31天Python入门——第4天:判断语句精讲
当变量var 作为数字 是 0 , 或者作为字符串、列表、元组、字典 为 空 , 或者为 None , 效果就类似于 False。那么,结果这个 if not var 就等同于 if not False, 也就是等同于 if True , 判断条件就会成立,当变量var 作为数字不是0 或者 None, 作为字符串、列表、元组、字典 非空 , 效果就类似于 True。有时候我们需要判断一个变量对象是否为: 数字0、空字符串、空列表、空元组、空字典,当然可以这样写。: 表示真. (对, 肯定, 是.)原创 2025-03-18 17:40:39 · 870 阅读 · 0 评论 -
31天Python入门——第3天:对象的方法
前面我们已经学习过了好几种类型的对象了,比如:整数类型对象、字符串类型对象、列表类型对象、元组类型的对象等等对象通常都拥有属于自己的方法(英文叫 method )对象的方法其实可以看成是对象所拥有的函数也就是说 这个方法,是 属于 这个对象的函数调用对象的方法,和调用函数差不多,只要在前面加上 所属对象 和 一个点# var1 是一个列表对象# 列表对象都有 reverse方法这里, reverse就是列表对象的一个方法,该方法将列表元素倒过来。原创 2025-03-18 07:30:00 · 1455 阅读 · 14 评论 -
31天Python入门——第2天:格式化字符串
为了节省大小, 就出现了utf-8, 使用1到4个字节进行存储,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4个字节.当然可以开发一个带图形界面的程序,但是图形界面的开发需要更多的基础知识,我们先学习如何在终端上,让用户用键盘输入信息。上面这段代码中 input 函数里面的参数是个字符串, 它是让用户在输入之前,显示在屏幕上的提示信息.即使用户输入的是一个数字,返回的也是 一个 内容为数字 的 字符串。要注意,input函数返回的用户输入的内容,都是 字符串。原创 2025-03-17 07:30:00 · 1171 阅读 · 0 评论 -
31天Python入门——第1天:入门必备
的选项勾上. 这样就把python解释器加入了环境变量. 如果没有勾上这个选项, 后续也可以手动的把python添加到系统环境变量. 如果不会添加环境变量也可以把现有的装好的python卸载掉重新安装.编程语言是人与计算机进行交流的一种语言. 通过编写编程语言去指挥计算机如何工作, 但是它无法直接和计算机交流. 需要一个翻译的工具将代码译成二进制. 这个工具叫做编译器.语言的替代品. ABC语言是由吉多参与设计的一种教学语言, 是专门为非专业程序员设计的. 但是ABC并不是很成功.原创 2025-03-14 08:00:00 · 1292 阅读 · 0 评论 -
为什么在Python中总是使用【字典】这种类型呢?
但并不是所有的类型都可以做=作为字典的key,因为字典本质上是一个哈希表,而哈希表的key要求是可哈希的,因此字典中的key也必须是可哈希的,所谓的可哈希就是可以计算出一个哈希值。代码中的for循环对items的返回值执行遍历,也就是对列表中的一个个元组在进行遍历,每次遍历时将元组中的键和值分别赋值给key和value变量。使用 [ ] 可以根据key来新增或修改value,如果指定的key不存在,则为新增键值对,如果指定的key存在,则为修改键值对的值。原创 2024-03-30 19:32:51 · 2163 阅读 · 35 评论 -
Python中的列表跟C/C++里面的数组什么关系?
在Python中表示一个空列表。比如:还可以通过的方式来创建一个空列表,比如:创建列表时可以在中设置列表的初始值。比如:需要注意的是,列表可以存放不同类型的元素。比如:新增列表元素append方法比如:insert方法使用insert方法可以指定下标位置新增元素。比如:说明一下:比如:比如:remove方法比如:比如:查找列表元素in相关比如:index方法使用index方法也可以判断某个元素在列表中是否存在。比如:说明一下:这个就不用代码演示了,与C/C++中数组的原创 2024-01-13 17:59:37 · 1414 阅读 · 4 评论 -
啥,凭什么Python中函数的返回值可以有多个?
def 函数名(形参列表) : 函数体 return 语句一个函数可以有一个或者多个形参,也可以没有形参一个函数中可以有一个或者多个return语句,执行到return语句时函数会立即执行结束,返回到调用位置Python是动态类型语言,函数的形参和返回值都不必指定类型,因此一个函数可以支持多种不同类型的参数多个返回值Python中的函数可以有一个或者多个返回值,当有多个返回值时,使用 , 进行分隔。原创 2024-01-12 21:04:42 · 1551 阅读 · 1 评论 -
学完C/C++,再学Python是一种什么体验?
对于range函数的第三种使用方式,如果step的值为正数,那么start + n * step < end,如果step的值为负数,那么start + n * step > end.Python中浮点数在内存中存储的时候遵循IEEE754标准,这套标准在表示浮点数时可能会存在微小的误差,但这个误差在实际开发中不会造成太大的影响。字符串可以是用“单引号”,“双引号”,“三单引号”以及“三双引号”引起来的一串字符序列。Python中的算术运算符包括 +,-,*,/,%,**(幂),//(地板除)原创 2024-01-12 15:54:27 · 2634 阅读 · 29 评论