- 博客(42)
- 收藏
- 关注
原创 从零开始学 Python 之 Queue 进阶用法
上一篇文章简单介绍了 Queue 的入门操作,今天我们学习下 Queue 的进阶用法。生产者消费者模型在并发编程中,比如爬虫,有的线程负责爬取数据,有的线程负责对爬取到的数据做处理(清洗、分类和入库)。假如他们是直接交互的,那么当二者的速度不匹配时势必出现等待现象,这也就产生了资源的浪费。抽象是一种很重要的通用能力,而生产者消费者模型是前人将一系列同类型的具体的问题抽象出来的一个一致的最佳解决方案。该模型有三个重要角色,容器,生产者和消费者,顾名思义,生产者就是负责生产数据或任务的,消费者就是负责
2022-05-30 16:17:01
246
原创 从零开始学 Python 之多线程之 threading 模块
在之前的文章中,我们已经介绍了 Python 通过 _thread 和 threading 模块提供了对多线程的支持,threading 模块兼具了 _thread 模块的现有功能,又扩展了一些新的功能,具有十分丰富的线程操作功能,本节我们就来详细学习一下 threading 模块。1 创建线程使用 threading 模块创建线程通常有两种方式:1)使用 threading 模块中 Thread 类的构造器创建线程,即直接对类 threading.Thread 进行实例化,并调用实例化对象的 sta
2022-05-30 16:15:58
269
原创 从零开始学 Python 之 初识 Python 多线程
我们知道,多线程与单线程相比,可以提高 CPU 利用率,加快程序的响应速度。单线程是按顺序执行的,比如用单线程执行如下操作:6秒读取文件19秒处理文件15秒读取文件28秒处理文件2总共用时 28 秒,如果开启两条线程来执行上面的操作(假设处理器为多核 CPU),如下所示:6秒读取文件1 + 5秒读取文件29秒处理文件1 + 8秒处理文件2只需 15 秒就可完成。1 线程与进程1.1 简介说到线程就不得不提与之相关的另一概念:进程,那么什么是进程?与线程有什么关系呢?简单来说一个
2022-05-30 16:15:05
197
原创 从零开始学 Python 之 Web 开发 RESTful
现在单页 Web 项目很流行,使用各种 Js 框架,通过 Ajax 和服务器的 Api 进行交互,实现类似原生 app 效果,很酷,对 Flask 来说小菜一碟,是时候了解下 Flask-RESTful 了开始前先了解下 RESTful,阮一峰老师有这样的解释:网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备…)。因此,必须有一种统一的机制,方便不同的前端设备与后端进行通信。这导致API构架的流行,甚至出现"API First"的设计思
2022-05-30 16:14:20
407
原创 从零开始学 Python 之 Flask数据持久化
Web 应用离不开数据存储,今天就来学习下 Flask 中如何与数据库交互,最后我们将做一个提交的实例Flask 中最方便用的数据库框架是 flask_sqlalchamy,是对 SQLAlchamy 在 Flask 中的扩展, SQLAlchemy 是一个 Python 数据库工具(ORM,即对象关系映射)。借助 SQLAlchemy,通过定义 Python 类来表示数据库里的一张表(类属性表示表中的字段 或者 列),通过对这个类进行各种操作来代替写 SQL 语句。这个类我们称之为模型类,类中的属性
2022-05-30 16:13:30
358
原创 从零开始学 Python 之 Web 开发 Form
在了解了 Flask Bootstrap 基本框架之后,我们来了解一下 Flask 框架的 表单( form ),以帮助我们创建交互式的 Web 应用,最后会有个提交个人信息的例子。Flask-WTF 是 Flask 框架的一个扩展,用来做表单的交互,是对 WTForms 的集成,默认支持 CSRF 安全签名,并且继承文件上传功能。安装使用 pip 安装pip install Flask-WTF验证>>> from flask_wtf import FlaskForm&g
2022-05-30 16:12:27
510
原创 从零开始学 Python 之 Web 开发 Bootstrap
前面学习了 Flask 框架的基本用法,以及模板引擎 Jinja2,按理说可以开始自己的 Web 之旅了,不过在启程之前,还有个重要的武器需要了解一下,就是著名的 Bootstrap 框架和 Flask 的结合,这将大大提高开发 Web 应用的效率。简介Bootstrap 是 Twitter 公司的设计师 Mark Otto 和 Jacob Thornton 开发的 Web 项目开发框架,简洁、直观、强悍,使得 Web 开发更加快捷,一经推出后颇受欢迎,一直是 GitHub 上的热门开源项目,这么好的
2022-05-30 16:11:37
789
原创 从零开始学 Python 之 filecmp&difflib
本节主要介绍两个 Python 中常用于比较数据的模块,一个是 filecmp 模块,另一个是 difflib 模块。其中,前者主要用于比较文件及目录,后者主要用于比较序列的类和函数,下面具体介绍两者的区别。filecmp 模块filecmp 模块作为 Python 提供的标准库之一,无需安装,模块定义了用于比较文件及目录的函数,对服务器上的文件目录的校验非常实用。cmp(f1,f2)函数cmp(f1,f2)函数用于比较两个文件是否相同,如果 f1 和 f2 相等则返回True,否则返回False。
2022-05-30 16:10:45
207
原创 从零开始学 Python 之 paramiko 模块
paramiko 模块paramiko 是一个用 Python 语言编写的、遵循 SSH2 协议、支持以加密和认证方式进行连接远程服务器的模块。改模块可以对远程服务器进行一些命令或文件操作。安装使用 pip3 安装 paramiko 模块pip3 install paramiko常用函数SSHclient 类SSH 客户端1.connect:远程连接服务器# hostname:主机IP地址# port:ssh服务的端口号,默认为22# username和password:用户名和密
2022-05-30 16:08:50
2227
原创 从零开始学 Python 之 operator 模块
operator模块operator 模块提供了一套与 Python 的内置运算符对应的高效率函数。函数的种类函数包含的种类有:对象的比较运算、逻辑运算、数学运算和序列运算比较运算运算函数语法小于lt(a, b)a < b小于等于le(a, b)a <= b大于gt(a, b)a > b大于等于ge(a, b)a >= b等于eq(a, b)a == b不等于ne(a, b)a != b实例
2022-05-30 16:08:01
953
原创 从零开始学 Python 之 math 模块
我们知道 Python 有很多运算符可以进行数学运算,如果是简单的问题还好说,但是要处理一些相对复杂的问题也要我们自己一行一行手动的来编写吗?答案当然不是,Python 提供了 math 模块对一些数学运算提供了支持。1 简介math 模块提供了对 C 标准定义的数学函数的访问,但该模块并不支持复数运算,如果想使用复数预算需使用 cmath 模块,将支持计算复数的函数区分开的目的,来自于大多数开发者并不愿意像数学家一样需要学习复数的概念,说白了就是我们开发工作几乎用不到复数,得到一个异常而不是一个复数
2022-05-29 18:09:08
192
原创 从零开始学 Python 之 calendar 模块
calendar 是与日历相关的模块,该模块定义了很多类型,主要包括:Calendar、TextCalendar、HTMLCalendar,其中 Calendar 是 TextCalendar 和 HTMLCalendar 的基类,这些类有着十分丰富的日历处理方法。1 calendar 模块对于简单的文本日历,我们使用 calendar 模块直接调用的方法或属性即可,下面来具体看一下。setfirstweekday(firstweekday)设置每一周的开始(0 表示星期一,6 表示星期天),ca
2022-05-29 18:06:34
1656
原创 从零开始学 Python 之 json&pickle
在日常开发中,对数据进行序列化和反序列化是常见的数据操作,Python提供了两个模块方便开发者实现数据的序列化操作,即 json 模块和 pickle 模块。这两个模块主要区别如下:json 是一个文本序列化格式,而 pickle 是一个二进制序列化格式;json 是我们可以直观阅读的,而 pickle 不可以;json 是可互操作的,在 Python 系统之外广泛使用,而 pickle 则是 Python 专用的;默认情况下,json 只能表示 Python 内置类型的子集,不能表示自定义的类;
2022-05-29 18:04:13
181
原创 从零开始学 Python 之 枚举
enum 是一组绑定到唯一常数值的符号名称,并且具备可迭代性和可比较性的特性。我们可以使用 enum 创建具有良好定义的标识符,而不是直接使用魔法字符串或整数,也便于开发工程师的代码维护。创建枚举我们可以使用 class 语法创建一个枚举类型,方便我们进行读写,另外,根据函数 API 的描述定义,我们可以创建一个 enum 的子类,如下:from enum import Enumclass HttpStatus(Enum): OK = 200 BAD_REQUEST = 400
2022-05-29 18:03:28
421
原创 从零开始学 Python 之 logging 模块详解
This module defines functions and classes which implement a flexible event logging system for applications and libraries.Python logging 模块定义了为应用程序和库实现灵活的事件日志记录的函数和类。程序开发过程中,很多程序都有记录日志的需求,并且日志包含的信息有正常的程序访问日志还可能有错误、警告等信息输出,Python 的 logging 模块提供了标准的日志接口,可.
2022-05-29 17:56:15
1091
2
原创 从零开始学 Python 之 statistics 模块
简介随着互联网的普及,整个互联网每天都会产生海量的数据,如何有效地处理这些数据成为了互联网人的必备技能,而 Python 内置的 statistics 模块提供了基本的数据统计操作。常用功能mean(data)mean(data) 用于求给定序列或者迭代器的算术平均数。import statisticsexample_list = [1,2,3,4,5,6]x = statistics.mean(example_list)print(x)# 输出结果3.5harmonic_mea
2022-05-29 17:43:23
332
原创 从零开始学 Python 之 random
layout: posttitle: 第31天:python randomcategory: python randomcopyright: pythontagline: by 千阳tags:-python100在本节中继续介绍 Python 提供的常用模块 random 模块,它的主要功能是用来生成伪随机数的。random 模块Python 提供的 random 模块实现了各种分布式的伪随机数生成器。该模块主要包含以下几种常用的函数。random()函数random()函数可以随.
2022-05-29 17:41:42
149
原创 从零开始学 Python 之 collections 模块
1.简介collections 是 python 的内置模块,提供了很多方便且高性能的关于集合的操作,掌握这些知识有助于提高代码的性能和可读性。2.常用功能2.1 namedtuple 功能详解namedtuple() 返回一个新的元组子类,且规定了元组的元素的个数,同时除了使用下标获取元素之外,还可以通过属性直接获取。from collections import namedtupleUser = namedtuple("User",["name", "age", "weight"])us
2022-05-27 16:31:05
164
原创 从零开始学 Python 之 queue 模块详解
queue 模块即队列,特别适合处理信息在多个线程间安全交换的多线程程序中。下面我们对 queue 模块进行一个详细的使用介绍。1 queue 模块定义的类和异常queue 模块定义了以下四种不同类型的队列,它们之间的区别在于数据入队列之后出队列的顺序不同。1.1 queue.Queue(maxsize=0)先进先出(First In First Out: FIFO)队列,最早进入队列的数据拥有出队列的优先权,就像看电影入场时排队一样,排在队伍前头的优先进入电影院。入参 maxsize 是一个整
2022-05-27 16:30:15
1919
原创 从零开始学 Python 之 shutil 模块
shutil 可以看作 sh + util,即 shell 工具之意,该模块提供了一些针对文件和文件夹的高级操作,如:拷贝、删除、移动等,shutil 模块是对 os 模块的补充。1 文件和文件夹操作1)copyfileobj(fsrc, fdst, length=16*1024)复制对象 fsrc 的内容到 fdst,如果 fdst 不存在则自动创建,length 表示缓冲大小,如果是负数表示直接复制,默认为值为 16*1024。示例如下:s = open('folder1/fsrc.txt',
2022-05-27 16:28:28
216
原创 从零开始学 Python 之 datetime & time
在前面的章节中已经介绍了一些 Python 常用的模块,本节再介绍两个模块 datetime 模块和 time 模块,这两个模块主要用于转换日期格式的功能。datetime模块datetime 模块是 Python 内置的功能模块,它可以实现对日期的算数运算,以指定的方式格式化日期。datetime 模块内含有一个同名的 datetime 类,该类中包含多个操作日期的函数,例如:datetime.now()、datetime.fromtimestamp()、datetime.timedelta()等,
2022-05-26 17:39:06
69
原创 从零开始学 Python 之标准库概览2
Python 的标准库非常广泛,提供了各种各样的工具。该库包含内置模块(用C编写),可以访问系统功能,例如 Python 程序员无法访问的文件 I / O,以及用 Python 编写的模块,这些模块为许多问题提供标准化解决方案。其中一些模块明确地旨在通过将平台特定的内容抽象为平台中立的 API 来鼓励和增强 Python 程序的可移植性。Python 的标准库(standard library) 是 Python 的一个组成部分,也是 Python 的利器,它可以让编程事半功倍。Python 标准库第.
2022-05-26 17:37:59
136
原创 从零开始学 Python 之标准库概览1
Python 的标准库非常广泛,提供了各种各样的工具。该库包含内置模块(用C编写),可以访问系统功能,例如 Python 程序员无法访问的文件 I / O,以及用 Python 编写的模块,这些模块为许多问题提供标准化解决方案。其中一些模块明确地旨在通过将平台特定的内容抽象为平台中立的 API 来鼓励和增强 Python 程序的可移植性。Python 的标准库(standard library) 是 Python 的一个组成部分,也是 Python 的利器,它可以让编程事半功倍。本章节就 Python.
2022-05-26 17:37:04
149
原创 从零开始学 Python 之命名空间和作用域
命名空间定义了在某个作用域内变量名和绑定值之间的对应关系,命名空间是键值对的集合,变量名与值是一一对应关系。作用域定义了命名空间中的变量能够在多大范围内起作用。命名空间在 Python 解释器中是以字典的形式存在的,是以一种可以看得见摸得着的实体存在的。作用域是 Python 解释器定义的一种规则,该规则确定了运行时变量查找的顺序,是一种形而上的虚的规定。一、命名空间1、概述A namespace is a mapping from names to objects.Most namespace
2022-05-26 17:35:39
100
原创 从零开始学 Python 之 Web 开发 Jinja2 模板引擎
被之前的文章中,简单介绍了 Python Web 开发框架 Flask,知道了如何写个 Hello World,但是距离用 Flask 开发真正的项目,还有段距离,现在我们目标更靠近一些 —— 学习下 Jinja2 模板。模板的作用模板是用来做什么的呢?模板是用来更高效地生成相应时的 Html 文本的,没有模板,可以手写,比如之前的 hello world 示例,写段 html 代码:<h1>Hello world!</h1>对于简单的练习还行,但对于规模大的,动态化程度
2022-05-26 17:34:39
347
原创 从零开始学 Python 之装饰器
Python 之装饰器1. 概念介绍装饰器(decorator),又称“装饰函数”,即一种返回值也是函数的函数,可以称之为“函数的函数”。其目的是在不对现有函数进行修改的情况下,实现额外的功能。最基本的理念来自于一种被称为“装饰模式”的设计模式。在 Python 中,装饰器属于纯粹的“语法糖”,不使用也没关系,但是使用的话能够大大简化代码,使代码更加易读——当然,是对知道这是怎么回事儿的人而言。想必经过一段时间的学习,大概率已经在 Python 代码中见过@这个符号。没错,这个符号正是使用装饰器的
2022-05-26 17:32:37
157
原创 从零开始学 Python 之迭代器
Python 之迭代器1 概念引入在之前的教程中,我们已经接触过一些典型的for语句,比如:>>> list_example = [0, 1, 2, 3, 4]>>> for i in list_example:... print(i)...01234通过简单地使用for和in两个关键字,我们可以很轻松地实现在 C 语言中繁琐的遍历操作。相比较而言,C 语言中要实现相同的功能,需要这样写(假设存在整型数组list_example):int i
2022-05-26 17:31:16
179
原创 从零开始学 Python 之函数参数
定义一个函数非常简单,但是怎么定义一个函数,需要什么参数,怎么去调用却是我们需要去思考的问题。如同大多数语言一样(如 Java),Python 也提供了多种参数的设定(如:默认值参数、关键字参数、形参等)。使用这些参数定义出来的代码,可以让我们适应不同的开放场景,也能简化我们的代码开发工作。默认值参数我们创建一个函数,定义参数中一个或多个赋予默认值后,我们可以使用比允许的更少的参数去调用此函数,举个例子(注意:以下代码都使用 python3.7 版本):def def_param_fun(prom
2022-05-25 11:25:42
357
原创 从零开始学 Python 之 set
Python 也包含有 集合 类型。集合是由不重复元素组成的无序的集。它的基本用法包括成员检测和消除重复元素。集合对象也支持像 联合,交集,差集,对称差分等数学运算。集合结构如下:set1 = {'hello', 'hello', 'word', 'word'}set1# 输出结果实现自动去重{'hello', 'word'}1、集合创建可以使用大括号 { } 或者 set() 函数创建集合,创建格式:parame = {value01,value02,...}或者set(val
2022-05-25 11:22:43
1328
原创 从零开始学 Python 之 Web 开发 Flask 介绍
WEB 开发是现在程序必会的技能,因为大部分软件都以 Web 形式提供,及时制作后台开发,或者只做前台开发,也需要了解 Web 开发的概念和特点。由于 Python 是解释性脚本语言,用来做 Web 开发非常适合,而且 Python 有上百中 Web 开发框架,以及成熟的模板技术,使得Web开发如虎添翼。今天借用 Flask 框架,快速学习一下 Python 的 Web 开发知识。Flask 框架Flask 的设计易于使用和扩展。它的初衷是为各种复杂的Web应用程序构建坚实的基础。可以自由地插入任何
2022-05-25 11:20:31
438
原创 从零开始学 Python 之 Pyhton 引用
layout: postcategory: pythontitle: 第12天:Python 之引用tagline: by 轩辕御龙tags:python100Python 之引用1. 引用简介与工具引入Python 中对于变量的处理与 C 语言有着很大的不同,Python 中的变量具有一个特殊的属性:identity,即“身份标识”。这种特殊的属性也在很多地方被称为“引用”。为了更加清晰地说明引用相关的问题,我们首先要介绍两个工具:一个Python的内置函数:id();一个运算.
2022-05-24 10:43:37
196
原创 从零开始学 Python 之字典
Python 中的字典提供了一种灵活的访问和组织数据的方式字典是由很多值组成的集合字典的索引可以是不同的数据类型,同样也不止是整数,也有字符串字典的索引被称为“键”,键及键所关联的值叫键值对(类似于 Java 中的 Map 集合)字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:dictionary = {'url1':'baidu', 'url'
2022-05-24 10:41:41
498
原创 从零开始学 Python 之 Python 类与对象
在刚接触编程时,我们就了解到编程界有两大思想:面向过程与面向对象,Python 就是一门面向对象的语言,如果你了解过面向对象的思想,自然就知道面向对象思想包含两个基本概念:类与对象 ,下面我们就一起详细学习下 Python 的类与对象吧!1 基本概念1.1 面向对象面向对象是一种抽象,是一种用分类的方式看待问题的方法,用 Java 的编程思想来说就是:万物皆对象;面向对象有三大特性:封装、继承、多态。1.2 类上面说了面向对象是一种用分类的方式看待问题的方法,一个分类就是一个类,可以把类看作是一
2022-05-24 10:39:53
77
原创 从零开始学 Python 之元组
Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构在 Python 中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从 0 开始,以此类推…Python 的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号(),列表使用方括号[]。1. 元组基本操作1.1 创建元组元组创建很简单,只需要在括号中添加元素(不需要括号也可以),并使用逗号隔
2022-05-24 10:38:47
267
原创 从零开始学 Python 之列表
Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构在 Python 中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从 0 开始,以此类推…列表俗称是 Python 中的苦力,列表可变(可以改变列表的内容)列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型创建一个列表,只要把逗号分隔的不同的数据项
2022-05-24 10:36:57
384
原创 从零开始学 Python 之 Python 数据结构--序列
Python 中的数据结构是通过某种方式组织在一起的数据元素的集合,这些数据元素可以是数字、字符、甚至可以是其他数据结构在 Python 中,最基本的数据结构是序列(列表和元组),序列中的每个元素都有一个序号(元素的具体位置),这个序号叫索引,索引下标从 0 开始,以此类推… 本文着重介绍 Python 的序列及其实际应用。序列概览Python 中有6种内建的序列。其中列表和元组是最常见的类型。其他包括字符串、Unicode 字符串、buffer 对象和 xrange 对象。列表和元组的主要区别
2022-05-24 10:35:17
236
原创 从零开始学 Python 之 Python 模块和包
模块与包是任何大型程序的核心,就连 Python 安装程序本身也是一个包。重点涉及有关模块和包的常用编程技术,例如如何组织包、把大型模块分割成多个文件、创建命名空间包。同时,也给出了让你自定义导入语句的秘籍。先给大家解释一下模块、包、库之间的概念:模块(module)其实就是 py 文件,里面定义了一些函数、类、变量等包(package)是多个模块的聚合体形成的文件夹,里面可以是多个 py 文件,也可以嵌套文件夹库是参考其他编程语言的说法,是指完成一定功能的代码集合,在 Python 中的形式
2022-05-23 16:40:42
103
原创 从零开始学 Python 之 Python 函数
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段,所以我经常说函数是程序员规模化使用的基础。函数能提高应用的模块性,和代码的重复利用率。在程序设计中,常将一些常用的功能模块编写成函数,放在函数库中供公共选用。善于利用函数,可以减少重复编写程序段的工作量。如何定义一个函数定义一个函数有如下几个步骤函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存
2022-05-23 16:39:50
94
原创 从零开始学 Python 之 Python 流程控制
在编程的世界中,流程控制是程序员运行的基础,流程控制决定了程序按照什么样的方式去执行,本节给大家介绍 Python 流程控制相关语法。if 语句if 语句表示如何发生什么样的条件,执行什么样的逻辑。语法:if 判断条件: 执行语句……else: 执行语句……示例:# x = int(input("Please enter an integer: "))x = -5if x < 0: x = 0 print('Negative changed to zero'
2022-05-23 16:38:42
74
原创 从零开始学 Python 之 Python 变量与数据类型
这篇文章我们学习 Python 变量与数据类型变量变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念,变量可以通过变量名访问。在 Python 中 变量命名规定,必须是大小写英文,数字和 下划线(_)的组合,并且不能用数字开头。变量命名规则:变量名只能是字母,数字和下划线的任意组合变量名第一个字符不能是数字变量名区分大小写,大小写字母被认为是两个不同的字符特殊关键字不能命名为变量名声明变量Python 中的变量不需要声明,每个变量在使用前都必须赋值,变量赋值以后该变量才会
2022-05-23 16:37:14
224
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人