03 2020 档案

摘要:双蛋问题的 Python 递归解决 今天看了 "李永乐老师关于双蛋问题的讲解视频" ,受用很大。本着好记性不如烂笔头的精神,把这个问题记录在此。 据传某大厂有这样一个面试题:手里有 2 个鸡蛋,另外有 100 层楼。有一未知的临界楼层,鸡蛋从临界楼层以下扔下去,一定不会碎;从临界楼层以上丢下去,一定 阅读全文
posted @ 2020-03-19 16:22 shuoliuchn 阅读(1721) 评论(0) 推荐(0)
摘要:分而治之 分而治之,divide and conquer,D&C,一种著名的递归式解决问题的方法。这不是一个解决特定问题的算法,而是一种解决问题的思路。面对问题时,不再束手无策,而是会自问:“使用分而治之能解决吗?” D&C 算法是递归的,使用 D&C 解决问题的过程包括两个步骤: 1. 找出基线条 阅读全文
posted @ 2020-03-19 16:20 shuoliuchn 阅读(826) 评论(0) 推荐(0)
摘要:解决 Django 自定义用户模型之前就已经数据迁移的 BUG Django 建议我们对于 AUTH_USER_MODEL 参数的设置一定要在第一次数据库迁移之前就设置好,否则后续使用可能出现未知错误。 所以自定义用户模型以后,执行 命令时,系统报错类似如下: 这是表示有一个叫 reversion 阅读全文
posted @ 2020-03-19 01:06 shuoliuchn 阅读(483) 评论(0) 推荐(0)
摘要:Django 外部脚本调用 models 数据库 如果要在 Django 没有运行的时候,从外部调用 ORM 的 models 数据库,直接导包是不行的。因为 model 的运行需要有 Django 环境。这时,我们就需要把 Django 的环境配置到系统中。 配置的代码可以在 manage.py 阅读全文
posted @ 2020-03-19 01:05 shuoliuchn 阅读(687) 评论(0) 推荐(0)
摘要:Django 的表单 form 组件 form 组件使用方法 form 组件主要有三个用途: 1. 生成页面可用的 HTML 标签 2. 对用户提交的数据进行校验 3. 保留上次输入内容 使用步骤: 1. 在应用文件夹下创建一个文件,名字随意,比如 。 2. 创建 form 类,继承自 : 3. 在 阅读全文
posted @ 2020-03-19 01:03 shuoliuchn 阅读(327) 评论(0) 推荐(0)
摘要:Django 中间件和请求的生命周期 自定义中间件流程(以 process_request 方法为例) 1. 在应用下面创建一个文件夹,名字随便,比如 。在这个文件夹下创建一个 py 文件,名字也随便,比如叫做 。 2. 在 xx.py 文件中定义类,类方法用来处理请求,写法如下: 3. 写完中间件 阅读全文
posted @ 2020-03-19 01:01 shuoliuchn 阅读(428) 评论(0) 推荐(0)
摘要:Django 操作 Cookie 和 session Cookie 初识 Cookie 的由来 大家都知道 HTTP 协议是无状态的。 无状态的意思是每次请求都是独立的。它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不会直接影响后面的请求响应情况。 一 阅读全文
posted @ 2020-03-19 01:00 shuoliuchn 阅读(198) 评论(0) 推荐(0)
摘要:JsonResponse json json,JavaScript Object Notation,JS 对象标记,是一种通用性极强的轻量级数据交互格式。其基础数据格式与 Python 中的基本数据格式比较如下: 在 JSON 中,并不能表示所有的 Python 数据类型。比如,datetime 类 阅读全文
posted @ 2020-03-19 00:58 shuoliuchn 阅读(638) 评论(0) 推荐(0)
摘要:Django 通过 form 表单和 ajax 上传文件 在默认情况下,form 表单是无法传输文件的。即便我们在 HTML 中写了 type 类型为 file 的 input 标签。这是因为 HTML 默认的表单传输方法为 。但是这种方法是不能传输文件的。用这种方法传输文件时,我们只能在后端看到文 阅读全文
posted @ 2020-03-19 00:52 shuoliuchn 阅读(421) 评论(0) 推荐(0)
摘要:Django 使用 ajax 和通过 csrf 认证的三种方式 ajax 特点 1. 局部刷新 2. 异步请求 Django 中 ajax 的写法 ajax 是封装在 jQuery 中的,要使用 ajax,首先要引入 jQuery。 CSRF 简介 CSRF(Cross site request f 阅读全文
posted @ 2020-03-19 00:46 shuoliuchn 阅读(2064) 评论(0) 推荐(0)
摘要:ORM 事务和锁 锁 我们可以这样给代码加锁: 事务 方式 1 全局配置 方式 2 视图函数加装饰器 方式 3 上下文加装饰器 阅读全文
posted @ 2020-03-19 00:44 shuoliuchn 阅读(166) 评论(0) 推荐(0)
摘要:ORM 执行原生 SQL 语句(了解) 众所周知,Django 的 ORM 效率是比较低的。偶尔或许会有需求,要使用原生 SQL 语句提高数据库的查询效率。 方式 1 object 对象的 raw 方法 方式 2 Django 自带的连接通道(配置的 pymysql) 方式 3 pymysql 阅读全文
posted @ 2020-03-19 00:40 shuoliuchn 阅读(295) 评论(0) 推荐(0)
摘要:Django ORM 多表增删改查 [TOC] 创建关系字段 ORM 通过使用字段的方式创建多表关系。常用的多表关系有: ForeignKey 外键,一对多关系字段 OneToOneField 一对一关系字段 ManyToManyField 多对多关系字段 直接看 代码: 基本的建表语句与单表操作一 阅读全文
posted @ 2020-03-19 00:38 shuoliuchn 阅读(445) 评论(0) 推荐(0)
摘要:Django 模型 model 数据库 ORM 单表操作 ORM 的介绍和基本用法 ORM, o bject r elational m apping,对象关系映射,是 Django 中调用和使用数据库的方法。ORM 封装了连接和操作数据库的 SQL 语句,我们可以通过熟悉的 Python 面向对象 阅读全文
posted @ 2020-03-19 00:36 shuoliuchn 阅读(219) 评论(0) 推荐(0)
摘要:Django URL 路由 urls 路由 对于 Django 1.x 版本来说,路由是通过 url 方法来写的,且默认会按照正则进行匹配: url 写法 无名分组 url 路由写法: 视图函数写法: 传参方式是位置传参。 有名分组 url 路由写法: 视图函数写法: 传参方式是关键字传参,不考虑参 阅读全文
posted @ 2020-03-19 00:34 shuoliuchn 阅读(214) 评论(0) 推荐(0)
摘要:Django 模板 template settings 配置 模板语法 万能的句点号 的写法 过滤器 过滤器用法: 不是所有过滤器都有参数,没参数的话写法: 内置过滤器 safe 介绍 Django 的模板中在进行模板渲染的时候会对 HTML 标签和 JS 等语法标签进行自动转义。原因显而易见,这样 阅读全文
posted @ 2020-03-19 00:32 shuoliuchn 阅读(169) 评论(0) 推荐(0)
摘要:Django 视图 view CBV 和 FBV FBV,function based view:基于函数的视图逻辑 CBV,class based view:基于类的视图逻辑 CBV 中 url 写法 视图写法: 源码重点。当调用到 as_view 方法时,会调用 dispatch 路由分发方法。 阅读全文
posted @ 2020-03-19 00:29 shuoliuchn 阅读(150) 评论(0) 推荐(0)
摘要:Django 初识 wsgi wsgi,web service gateway interface,网络服务网关接口,是应用程序和服务器程序之间沟通数据的格式要求 返回动态页面可以通过模板渲染的方式,可以用到 Python 中的 模块。 模板渲染的含义: 模板 HTML 文件 渲染 字符串替换 MV 阅读全文
posted @ 2020-03-19 00:28 shuoliuchn 阅读(136) 评论(0) 推荐(0)
摘要:动手搭建 Web 框架深入了解 Web 框架的本质 Web 框架的本质及自定义 Web 框架 我们可以这样理解:所有的 Web 应用本质上就是一个 socket 服务端,而用户的浏览器就是一个 socket 客户端,基于请求做出响应。客户都先请求,服务端做出对应的响应,按照 HTTP 协议的请求协议 阅读全文
posted @ 2020-03-19 00:24 shuoliuchn 阅读(382) 评论(0) 推荐(0)
摘要:HTTP 协议 HTTP 协议简介 超文本传输协议(英文: H yper T ext T ransfer P rotocol,缩写: HTTP )是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP 是万维网的数据通信的基础。 HTTP 是由蒂姆·伯纳斯·李于 1989 年在欧洲核子研究组 阅读全文
posted @ 2020-03-19 00:18 shuoliuchn 阅读(228) 评论(0) 推荐(0)
摘要:递归获取目录中所有文件 获取目录中所有文件,可以进行判断筛选,全凭自己定制。 阅读全文
posted @ 2020-03-14 21:47 shuoliuchn 阅读(170) 评论(0) 推荐(0)
摘要:Django ModelForm 模型表单组件 我相信你已经发现了,form 类的写法和模型类十分相似,连字段名字都很相近。事实上,通常在 Django 项目中,我们编写的大部分都是与 Django 的模型紧密映射的表单。 举个例子,你也许会有个 Book 模型,并且你还想创建一个 form 表单用 阅读全文
posted @ 2020-03-07 00:06 shuoliuchn 阅读(363) 评论(0) 推荐(0)
摘要:使用 Python 统计中文字符的数量 方法一,排除法 假设只有中英文字符: 方法二,范围判断 Unicode 中,基本中文字符处在一个范围区间,可以参考 "汉字 Unicode 编码范围" 。写成代码就是: 参考资料: 1. "python统计中文字符数量" 2. "汉字 Unicode 编码范围 阅读全文
posted @ 2020-03-06 21:55 shuoliuchn 阅读(12751) 评论(0) 推荐(3)
摘要:RPC 的原理和简单使用 RPC 的概念 RPC,Remote Procedure Call ,翻译成中文就是远程过程调用,是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数。在调用的过程中,不用程序员显式编码这个远程调用的细节。即无论是调用本地的接口/服 阅读全文
posted @ 2020-03-06 21:18 shuoliuchn 阅读(1937) 评论(0) 推荐(0)
摘要:消息队列和 RabbitMQ 消息队列 来看这样一个例子。相信大家都用外卖软件点过外卖。当我们在手机上下单之后,都发生了什么呢? 首先,客户用手机下单,将请求发送给服务端。服务端当然要先安排订单系统确认我们的订单信息,只有当我们付款成功后,订单才会生成。订单生成后,需要做三件事(真实的系统要做的事情 阅读全文
posted @ 2020-03-06 21:16 shuoliuchn 阅读(275) 评论(0) 推荐(0)
摘要:常见设计模式 [TOC] 先想象一下这样一个场景:去麦当劳点餐,我们想吃麦辣鸡腿堡、薯条和可乐。我们当然可以单点,但是如果我们对收银小姐姐说,请给我一份麦辣鸡腿堡套餐,就会方便很多。套餐是餐厅和我们约定好了的一个规范,如果大家都按照这个规范来点餐,就能够提高点餐效率。 创建套餐是提高点餐效率的可重复 阅读全文
posted @ 2020-03-06 21:14 shuoliuchn 阅读(148) 评论(0) 推荐(0)
摘要:多态 [TOC] 多态体现一,变量可以指向任意数据类型 多态的第一种体现是,不关注对象的数据类型,同一个变量完全可以在不同的时间引用不同的对象 Python 本身就是一种多态语言,不关心对象的类型 对于弱类型的语言来说,变量并没有声明类型,因此同一个变量完全可以在不同的时间引用不同的对象 毫无疑问, 阅读全文
posted @ 2020-03-06 21:13 shuoliuchn 阅读(265) 评论(0) 推荐(0)
摘要:封装 “封装”就是将抽象得到的数据和行为相结合,形成一个有机整体 元组,列表,字典等等:数据的封装,通过引用去使用数据 函数:算法的封装 如果没有函数,功能要靠每一行代码去直接执行 没有函数的话,耦合度会很高,复用性很差,开发效率也非常低 封装的目的是简化编程和增加安全性 使用者不必关系具体的实现细 阅读全文
posted @ 2020-03-06 21:12 shuoliuchn 阅读(152) 评论(0) 推荐(0)
摘要:继承(实现)关系 [TOC] 面向对象与继承 面向对象思想有三大要素: 1. 继承 2. 封装 3. 多态 面向对象编程(OOP)语言的一个重要功能就是“继承”: 它可以使用现有类的所有功能,并在无需重新编写原来类的情况下,对这些功能进行扩展 通过继承创建的新类被称为“子类”或“派生类”,被继承的类 阅读全文
posted @ 2020-03-06 21:11 shuoliuchn 阅读(725) 评论(0) 推荐(0)
摘要:类之间的依赖关系和组合关系 [TOC] 依赖(关联)关系 类之间可以有三种关系: 1. 依赖(关联)关系 2. 组合(聚合)关系 3. 继承(实现)关系 依赖(关联)关系指的是类对象执行某个动作的时候,需要其他类的对象来帮助完成这个操作的情况,其特点为: 将一个类的对象或者类名传到另一个类的方法中使 阅读全文
posted @ 2020-03-06 21:08 shuoliuchn 阅读(1757) 评论(0) 推荐(1)
摘要:OOA、OOD 和 OOP ,Object Oriented Analysis,面向对象分析法 指的是在一个系统的开发过程中,进行了系统业务调查以后,按照面向对象的思想来分析问题 OOA的主要原则: 1. 抽象:从许多事物中舍弃个别的、非本质的特征,抽取共同的、本质的特征,就叫抽象 2. 封装:把对 阅读全文
posted @ 2020-03-06 21:07 shuoliuchn 阅读(532) 评论(0) 推荐(0)
摘要:面向对象初识 [TOC] 面向过程与面向对象 编程语言发展历程: 机器语言 汇编语言 高级语言 数学向左,上帝向右。数学家的思维总是倾向于将事物抽象化,寻求程序运行效率的最大化。但是正常人的思维赶不上数学家的思维。而且在硬件运行速度足够快,内存空间足够大的今天,已经不特别在意程序的运行速度。人们更在 阅读全文
posted @ 2020-03-06 21:06 shuoliuchn 阅读(161) 评论(0) 推荐(0)
摘要:Python 2 和 Python 3 的区别 | Python 2 | Python 3 | | | | | 源码不统一 | 源码统一 | | 有重复代码 | 没有重复代码 | | 整型的除法:整型 | 整型的除法:浮点型 | | print不加括号也可以 | print() | | input( 阅读全文
posted @ 2020-03-06 21:05 shuoliuchn 阅读(147) 评论(0) 推荐(0)
摘要:软件开发规范 软件开发规范主要采取的是分文件管理的办法,主要把 Python 项目分为多个文件,放在指定文件夹中,分类管理。主要的目录结构为: 每个文件夹的功能为: bin 用于存放启动文件 lib 用于存放公共组件 core 用于存放主逻辑程序,也就是核心代码 db 用于存放相关数据 log 用于 阅读全文
posted @ 2020-03-06 21:04 shuoliuchn 阅读(142) 评论(0) 推荐(0)
摘要:语法分析和词法分析 补充一点知识,下面这段代码: 运行过后程序并没有报错,虽然并没有变量或者函数命名为 foo。这是因为程序运行过程中,会有两个分析过程:语法分析和词法分析。 词法分析就是分析代码中是否所有的词语都符合规范,如果不规范,则会报错。 语法分析则是判断每个语句是否合乎语法规范。 上面的两 阅读全文
posted @ 2020-03-06 21:03 shuoliuchn 阅读(1071) 评论(0) 推荐(0)
摘要:循环删除的坑 有这样一个列表: ,现在我们想要把列表中的每个元素都删除掉,但是不能用 方法。我们很理所当然地会想到使用 for 循环逐个删除: 居然没有删除干净。 这是 python 中循环的自主计数和列表的自动补位共同影响下的结果。在循环第一圈时,循环操作从索引值为 0 的位置找元素,返回了 11 阅读全文
posted @ 2020-03-06 21:02 shuoliuchn 阅读(201) 评论(0) 推荐(0)
摘要:深浅拷贝 [TOC] 同驻留机制一样,深浅拷贝在编程中的应用其实也不是很多。但是我们依然需要了解。一方面是为了避免后期开发代码时出现问题却不知道原因,另一方面也是因为面试时几乎都会问到有关深浅拷贝的问题。 深浅拷贝主要分为三个方面: 1. 什么是赋值 2. 什么是浅拷贝 3. 什么是深拷贝 赋值 变 阅读全文
posted @ 2020-03-06 21:00 shuoliuchn 阅读(220) 评论(0) 推荐(0)
摘要:Python 中的驻留机制:小数据池和代码块 Python 中的驻留机制主要有两个:小数据池和代码块。驻留机制并不是学习 Python 过程中特别重要的概念,我们学习小数据池的目的主要有两个方面: 1. 解决日后写代码过程中可能出现的疑惑。在后期开发中,能 知道有些代码为什么不能正常使用 2. 找工 阅读全文
posted @ 2020-03-06 20:56 shuoliuchn 阅读(261) 评论(0) 推荐(0)
摘要:二次编码 编码回顾 二次编码 在 python 3 的内存中使用的是 Unicode 编码,而硬盘中存储时使用的是用户选择的编码方式[^1]。这样一来,就需要进行 Unicode 和其他编码方式的转变,也就涉及到 编码 和 解码 的问题。 编码是将字符转化为二进制的形式,使用的是 方法: 解码是将二 阅读全文
posted @ 2020-03-06 20:55 shuoliuchn 阅读(757) 评论(2) 推荐(1)
摘要:编码初识 常见编码集: 1. ascii: 不支持中文 一个字符占用 8 位 2. gbk(包含 ascii)国标码: 一个英文字符占用 8 位(1 字节) 一个中文字符占用 16 位(2 字节) 3. Unicode: 英文:4 个字节,32 位 中文:4 个字节,32 位 4. utf 8(最流 阅读全文
posted @ 2020-03-06 20:53 shuoliuchn 阅读(130) 评论(0) 推荐(0)
摘要:高阶内置函数 [TOC] 这一部分主要是一些 Python 中内置的高阶函数。所谓的高阶函数,就是以函数为参数的函数。 filter 函数 filter 函数用来过滤掉不符合条件的元素。filter 函数有两个参数,第一个参数为规则函数,第二个参数为可迭代对象: 输出的结果为: filter 的返回 阅读全文
posted @ 2020-03-06 20:47 shuoliuchn 阅读(305) 评论(0) 推荐(0)
摘要:基础内置函数 [TOC] 函数 all 函数用来判断可迭代对象中是否所有的元素 都 为 True: 函数 any 函数与用来判断可迭代对象中的元素是否 有一个 为 True: 函数 callable 函数用来判断变量是否可以被调用: 函数 bytes 函数可以将字符串编码为二进制形式,它的功能和字符 阅读全文
posted @ 2020-03-06 20:46 shuoliuchn 阅读(213) 评论(0) 推荐(0)
摘要:文件操作 [TOC] 文件操作初识 我们写的程序代码运行过程中的中间数据和最后的结果,都是存储在内存中。当我们终止程序之后,这些数据也都随之消失。 但是很多时候,我们需要将获得的数据存储起来,供以后使用。如果能把内存中的中间数据转移到硬盘中存储,当程序再次运行时就可以调用上次运行的结果。这就涉及到了 阅读全文
posted @ 2020-03-06 20:45 shuoliuchn 阅读(185) 评论(0) 推荐(0)
摘要:range 在 Python 中,通过 range 可以达到循环数字的效果: 输出的结果为: 对于下面一行代码: 在 Python 2 中,会打印出列表 ;在 Python 3 中则会被打印为 。可以通过 函数将 对象转化为列表: 输出的结果为: 中的参数和 极其相似,range 的索引是几,其对应 阅读全文
posted @ 2020-03-06 20:43 shuoliuchn 阅读(770) 评论(0) 推荐(0)
摘要:包 包的定义:具有 文件的文件夹就是一个包。 包的目的是用来管理模块。 包的本质就是一个模块。模块可以导入,包也可以导入。 在 Python 2 中,使用 import 导入一个包,如果包中没有 文件,会报错; 在 Python 3 中,使用 import 导入一个包,如果包中没有 文件,不会报错, 阅读全文
posted @ 2020-03-06 20:42 shuoliuchn 阅读(217) 评论(0) 推荐(0)
摘要:logging 模块和日志 [TOC] logging 也就是日志模块,其主要作用于有: 1. 记录程序运行的状态(时间,文件名,报错行数,错误信息); 2. 用户的喜好(分析用户的一些喜好和操作); 3. 银行(账户流水)。 日志一共分为五个级别: | 序号 | 错误名 | 含义 | 级别 | | 阅读全文
posted @ 2020-03-06 20:40 shuoliuchn 阅读(246) 评论(0) 推荐(0)
摘要:re 模块和正则表达式 [TOC] re 模块概述 re,也就是正则表达式,用来从字符串中获取我们想要的内容: 输出的结果为: 元字符 正则表达式的当然不仅仅能查找这种简单地字符。正则表达式真正的强大之处在于它无所不包的匹配规则。这一套匹配规则对于所有语言来说都是通用的,通过一个个元字符组合而成: 阅读全文
posted @ 2020-03-06 20:35 shuoliuchn 阅读(143) 评论(0) 推荐(0)
摘要:collections 模块 [TOC] 统计 现在有一个列表,我们需要统计每个元素出现的个数,可以通过循环来实现: 输出的结果为: 如果使用 collections 模块的统计功能,将会更便捷地获得我们想要的结果: 输出的结果为: 有序字典 Python 3 中的字典已经是有序的了,但是对于 Py 阅读全文
posted @ 2020-03-06 20:34 shuoliuchn 阅读(153) 评论(0) 推荐(0)
摘要:hashlib 模块 hashlib 也称摘要算法或加密算法,其主要功能是对数据进行加密和校验文件的一致性。 hashlib 支持的加密算法有:md5、sha1、sha256 和 sha512。加密复杂度和花费时间依次增加。 加密算法的特点有: 1. 内容相同,密文一定相同; 2. 加密的密文是不可 阅读全文
posted @ 2020-03-06 20:33 shuoliuchn 阅读(192) 评论(0) 推荐(0)
摘要:序列化 json 和 pickle [TOC] 关于序列化,我们只需要掌握两个模块,四种方法。 两个模块: 1. json 重点,只能实现字典和列表的序列化 2. pickle Python 独有 四种方法: dump 和 load 用于文件写入存储 dumps 和 loads 用于网络传输(网络编 阅读全文
posted @ 2020-03-06 20:32 shuoliuchn 阅读(181) 评论(0) 推荐(0)
摘要:os 和 sys 模块 [TOC] os 模块 os 模块主要用来进行与操作系统进行交互,它的导入方式为: os 模块主要涉及文件操作、文件夹操作、路径操作和其他操作四个方面。 文件操作 通过 os 模块对文件直接进行的操作: 文件夹操作 对文件夹进行操作: 路径操作 对路径的操作主要使用 下的各种 阅读全文
posted @ 2020-03-06 20:29 shuoliuchn 阅读(146) 评论(0) 推荐(0)
摘要:random 模块 random 模块,也就是随机数模块,用来生成一定范围内的随机数。随机数模块可以这样使用: 输出的结果为: 阅读全文
posted @ 2020-03-06 20:27 shuoliuchn 阅读(218) 评论(0) 推荐(0)
摘要:time 和 datetime 模块 [TOC] 模块 time 模块,也就是时间模块,用来进行一些与时间有关的操作。其使用方法为: 时间分类: 1. 时间戳 用于进行计算 2. 结构化时间 给程序员查看使用(命名元组) 3. 字符串时间 给用户查看的 时间模块的基本方法有: 输出的结果为: 模块 阅读全文
posted @ 2020-03-06 20:25 shuoliuchn 阅读(128) 评论(0) 推荐(0)
摘要:模块 模块的定义:模块就是一个 py 文件。 模块主要分为三类: 1. 内置模块,也称 Python 标准库,是 Python 官方已经封装在 Python 解释器中了,大约有 200 多个; 2. 第三方模块,是一些组织或个人写好的 py 文件,供我们使用; 3. 自定义模块,也就是我们自己写的 阅读全文
posted @ 2020-03-06 20:22 shuoliuchn 阅读(140) 评论(0) 推荐(0)
摘要:递归 递归的精华是一递一归。所谓递,就是不断嵌套函数;所谓归,就是逐个将值返回。递而不归,就会越嵌套越深,直至突破内存极限而出错。 递归函数的定义有两个方面: 1. 不断调用自己本身(只满足这个条件的是死递归) 2. 有明确的结束条件 例如,下面的这个函数就是一个死敌归: 程序并没有一直运行,输出1 阅读全文
posted @ 2020-03-06 20:19 shuoliuchn 阅读(153) 评论(0) 推荐(0)
摘要:装饰器 [TOC] 装饰器初识 在编程中,有很多约定俗成的规则。开放封闭原则就是其中很重要的一个。 开放封闭原则体现在两个方面: 1. 对扩展开放,支持增加新功能 2. 对修改源代码封闭,对调用方式的改变封闭 装饰器就是为了体现编程的开放封闭原则而存在的。 装饰器,顾名思义,就是在原有基础上额外添加 阅读全文
posted @ 2020-03-06 20:18 shuoliuchn 阅读(132) 评论(0) 推荐(0)
摘要:闭包 在编程时,我们会处理到很多数据。但是对于一些数据,我们只想使用,不想修改。我们可以使用 来防止不经意间的数据修改。 闭包的作用主要有两个: 1. 保护数据安全 2. 保护数据干净性 满足下面两个条件的函数就是一个实用的闭包: 1. 在嵌套函数内,使用非全局变量(且不使用本层变量) 2. 将嵌套 阅读全文
posted @ 2020-03-06 20:14 shuoliuchn 阅读(159) 评论(0) 推荐(0)
摘要:匿名函数 匿名函数的关键字是 lambda。匿名函数在高阶函数中应用十分广泛,它能极大地简化代码。 比如这个经典的函数定义和调用的代码: 如果使用匿名函数,只需要两行代码即可: 甚至一行代码就能实现: 在上面的代码中: lambda 和 def 的作用类似,用来声明要定义一个函数 和 的表达含义类似 阅读全文
posted @ 2020-03-06 20:13 shuoliuchn 阅读(291) 评论(0) 推荐(0)
摘要:迭代器和生成器 [TOC] 迭代器 迭代器就是用来将可迭代对象的值一个一个取出来的工具。 我们学过的可迭代的数据类型有:字符串、列表、字典、元组、集合 不可迭代的数据类型有:整型、布尔值 Python 中规定,只要是具有 方法就是 可迭代对象 : 可迭代对象可以通过 for 循环获取每一个元素,且可 阅读全文
posted @ 2020-03-06 20:12 shuoliuchn 阅读(164) 评论(0) 推荐(0)
摘要:函数嵌套 [TOC] 函数嵌套概述 函数的嵌套有两种方式: 1. 交叉嵌套 2. 回环嵌套 交叉嵌套 交叉嵌套的方式是在本函数中调用同一级或上一级函数的嵌套方法: 输出的结果为: 首先,程序会将 Python 文件中顶格的代码运行。函数 和 都是先开辟内存空间存储起来,但不会被执行。当程序走到赋值操 阅读全文
posted @ 2020-03-06 20:07 shuoliuchn 阅读(777) 评论(0) 推荐(0)
摘要:函数名的第一类对象及使用 函数名的第一类对象只是一种称呼,是相对于第二类对象而言的。我们目前用到的函数基本都是第一类对象。 函数名的第一类对象主要有四个方面的应用: 1. 函数名可以当作值赋值给一个变量 2. 函数名可以当做另一个函数的参数来使用 3. 函数名可以当做另一个函数的返回值 4. 函数名 阅读全文
posted @ 2020-03-06 20:05 shuoliuchn 阅读(276) 评论(0) 推荐(0)
摘要:函数的名称空间 函数的名称空间一共有三种: 1. 内置空间,用来存放 Python 自带的一些函数,Python 程序运行时会首先加载 2. 全局空间,当前 py 文件顶格编写的代码开辟的空间 3. 局部空间,函数开辟的空间 程序的加载顺序是:内置空间 全局空间 局部空间 程序的取值顺序是:局部空间 阅读全文
posted @ 2020-03-06 20:04 shuoliuchn 阅读(137) 评论(0) 推荐(0)
摘要:函数 [TOC] 函数初识 函数的作用是封装代码,大量减少重复代码,可重用性高。 我们之前写代码的方式可以说是过程式编程,有什么需求我们就写什么样的代码,一步一步写下去。之前写过的代码一旦运行过去之后就不会被再次运行到。 我们今天要学习的函数,其实也是一种新的编程思路,也就是函数式编程。 接下来,我 阅读全文
posted @ 2020-03-06 20:02 shuoliuchn 阅读(158) 评论(0) 推荐(0)
摘要:推导式 [TOC] 列表推导式 推导式用来创建一些有规律的可变数据结构,能够让代码变得更加简洁。 比如,我们想要通过循环的方法创建一个数字从 1 到 50 的列表,可以这样做: 如果使用列表推导式,我们只需要一行代码: 我们就成功创建了一个 。我们还可以运用字符串的格式化实现更多样化的输出: 前面两 阅读全文
posted @ 2020-03-06 19:58 shuoliuchn 阅读(226) 评论(0) 推荐(0)
摘要:解构 我们刚刚提到了字典的 方法会返回键值对元组的键值对元组列表: 输出的内容为: 我们得到的是一个键值对列表,每个键值对以元组的形式存在。 如果现在,我们需要提取其中的每个元素,可以这样操作: 虽然能够实现,但是十分繁琐,这就需要用到结构的方法。 结构的基本样式是这样的: 可以看出, 和 的值分别 阅读全文
posted @ 2020-03-06 19:57 shuoliuchn 阅读(217) 评论(0) 推荐(0)
摘要:for 循环 与以死循环形式存在的 不同的是, 往往以有限循环的形式存在。 的基本结构为: 其中, :关键字 :变量名 :关键字 :可迭代对象 用已有的知识,如果我们想分别打印字符串 中的每一个字符,可以使用 来实现: 如果使用 ,我们可以更简便地实现目的: 看下面这样一个例子: 最终打印出来的结果 阅读全文
posted @ 2020-03-06 19:55 shuoliuchn 阅读(250) 评论(0) 推荐(0)
摘要:运算符 [TOC] 比较运算符 比较运算符主要有六个: 1. :大于 2. :大于等于 4. ,查找顺序为从左向右。例如: 当数字之间进行逻辑运算时,有这样一套规则: 官方给出的运算规则是这个样子的: | 操作 | 结果 | | : | | | x or y | 如果 x 为假,选择 y,否则选择 阅读全文
posted @ 2020-03-06 19:54 shuoliuchn 阅读(256) 评论(0) 推荐(0)
摘要:while 循环 [TOC] while 循环基本结构 循环就是不断地重复着某件事情。 是 while 循环的关键字。 while循环的基本结构: 典型 while 循环示例: 上面的例子中,第一步,先打印 。第二步,进入 while 语句,判断 后的条件是否为真。 后的语句是 ,为真,进入循环体中 阅读全文
posted @ 2020-03-06 19:52 shuoliuchn 阅读(773) 评论(0) 推荐(0)
摘要:流程控制语句 [TOC] 流程控制语句,也就是条件语句,通过选择判断,决定下一步的操作内容。例如:如果是男的,就来看我。 流程控制语句的关键字是 ,是 的意思。流程控制语句使用冒号 表示语句结束。 Python 中使用缩进体现代码间的从属关系。一般使用四个空格或一个 键代表一次缩进。需要注意的是,编 阅读全文
posted @ 2020-03-06 19:35 shuoliuchn 阅读(256) 评论(0) 推荐(0)
摘要:索引和切片 [TOC] 索引(下标) 索引又称下标,用来表示可迭代对象中的某个元素的位置。 用正整数表示的索引值,从左向右定位,从 0 开始计数,如 0,1,2 用负整数表示的索引值,从右向左定位,从 1 开始计数,如 1, 2, 3 例如: 输出的结果为: 切片 有这样一个字符串: ,我们想要把其 阅读全文
posted @ 2020-03-06 19:34 shuoliuchn 阅读(1183) 评论(0) 推荐(0)
摘要:用户交互语句 [TOC] 语句 我们在讨论 Python 中基本数据类型时,已经讨论过 print 语句的基本用法,这里只是简单提一下: 语句 在 Python 中,用 函数实现用户和程序间的交互。 是输入的意思。使用示例如下: 当程序运行到 语句时,会发生阻塞,等待用户进行输入。程序会一直保持阻塞 阅读全文
posted @ 2020-03-06 19:32 shuoliuchn 阅读(210) 评论(0) 推荐(0)
摘要:基础数据类型补充与总结 [TOC] 整型 方法用来计算整型数字转换为二进制所占的位数: 这个方法的意思是,10 转换为二进制数是 1010,一共会占 4 位。 字符串 方法 方法用来将字符串的首字母大写: 方法 方法能将字符串每个单词的首字母大写,区分首字母的方式有空格、符号和数字等: 和 方法 方 阅读全文
posted @ 2020-03-06 16:34 shuoliuchn 阅读(191) 评论(0) 推荐(0)
摘要:Python 中表示 False 的方法 在 Python 中,所有数据类型,只要是空的,就是 False,否则就是 True。 阅读全文
posted @ 2020-03-06 16:33 shuoliuchn 阅读(5995) 评论(0) 推荐(0)
摘要:集合 [TOC] 集合概览 集合也是 Python 中的基本数据类型之一。 集合最重要的一个特点是天然去重。 集合的关键字是 set。 空集合的表示方法只有一种: 。 集合是一种无序的,可变的,可迭代的,元素唯一且不可哈希的数据类型。 集合可以被看作是一种没有值的字典: 都用 标识 集合的元素是不可 阅读全文
posted @ 2020-03-06 16:32 shuoliuchn 阅读(352) 评论(0) 推荐(0)
摘要:字典 [TOC] 字典初识 我们来看下面的一个例子: 其中,列表 中存储的是同学的名字, 中存储的是对应同学的学号。例如, 的学号是 。 如果我们要查找新力的学号,就要去另一个列表中找到其索引对应的学号值,例如: 这样的操作虽然也能满足我们的需求,但是显然有些繁琐。而且一旦任何一个列表中的索引发生了 阅读全文
posted @ 2020-03-06 16:30 shuoliuchn 阅读(338) 评论(0) 推荐(0)
摘要:元组 元组也是 Python 中的数据类型之一。元组的关键字是 。 元组的定义方法和列表极其相似,只是将 变成了 。很多时候,小括号可以省略: 元组就是一个不可变的列表。因为不可变,元组没有增删改的方法,只能进行查看。 元组也可以通过索引方式进行查找,也同样支持切片操作: 输出的结果为: 注意元组切 阅读全文
posted @ 2020-03-06 16:27 shuoliuchn 阅读(443) 评论(0) 推荐(0)
摘要:列表 [TOC] 列表的定义 同 、`字符串 布尔值 列表 列表 list 字典 列表 字符串`,可见它是十分重要的。 列表的作用更像是一种容器,形象一点说就是我们用的书包: 1. 列表能储存大量数据 2. 列表能储存不同数据类型的数据 与列表相对照,我们先来观察一下这样一个字符串: 这个字符串中包 阅读全文
posted @ 2020-03-06 16:26 shuoliuchn 阅读(267) 评论(0) 推荐(0)
摘要:整型数据详述和进制转换 [TOC] 整型数据概述 整型数字在 Python 中的关键字是 ,整形在计算机中用于计算和比较。 在 32 位机器上 int 的范围是: ,也就是 ; 在 64 位机器上 int 的范围是: ,也就是 ; 在 Python 3 中,整型统统使用 。在 Python 2 中, 阅读全文
posted @ 2020-03-06 14:53 shuoliuchn 阅读(554) 评论(0) 推荐(0)
摘要:详解 在 "字符串格式化" 的那一部分已经有所讨论。其实当时已经讨论得差不多了,今天只是稍微地有一点点补充。主要还是复习。 的基本结构是这样的: 输出的结果为: 就是在字符串的引号前面加上一个字母 。字母大小写都可以,但是推荐使用小写。 中除了可以使用变量外,还可以放入函数: 输出的结果为: 甚至可 阅读全文
posted @ 2020-03-06 14:52 shuoliuchn 阅读(1498) 评论(0) 推荐(0)
摘要:字符串方法详解 [TOC] 字符串方法有很多,本节课只讨论一些常用的,使用万能的点操作字符串的方法。 因为字符串是不可变数据类型,所以字符串方法不会在字符串本身进行修改,而是将修改后的新字符串作为返回值返回。故而若要使用字符串方法,需要使用变量来接收才行。 方法 方法可以将字符串中的所有小写字母转换 阅读全文
posted @ 2020-03-06 14:51 shuoliuchn 阅读(276) 评论(0) 推荐(0)
摘要:字符串的格式化 [TOC] 有这样一个字符串: 如果我们想让用户输入名字,年龄,性别和爱好,然后程序按照上面的格式给打印出来。从目前我们所学的知识,我们可以用这样的代码来实现: 代码运行后就是这样的: % 格式化 不过虽然我们实现了需求,但是太过繁琐。这里就可以用到格式化的方法。格式化,就是在字符串 阅读全文
posted @ 2020-03-06 14:50 shuoliuchn 阅读(150) 评论(0) 推荐(0)
摘要:整型、字符串和布尔值 在 Python 中基础的数据划分(数据类型)总共有 7 种,今天主要讨论其中的三种:str(字符串)、int(整型)和bool(布尔值)。 整型 整型数据在 Python 中的关键字为 。整型数据的主要用途是进行计算和比较。 整型数据的基本用法和操作如下: 字符串 字符串在 阅读全文
posted @ 2020-03-06 14:49 shuoliuchn 阅读(425) 评论(0) 推荐(0)
摘要:变量、常量和注释 [TOC] 变量 先介绍一个 函数,用来打印(输出)数据。 变量的官方定义:将程序中运行的中间值,临时存储起来,以便再次使用。 通俗来讲,变量就是给数据起一个昵称,方便调用。 下面的是一个典型的赋值变量的语句: 其中, 是赋值给变量的值,也就是数据; 代表的是赋值操作; 是变量名。 阅读全文
posted @ 2020-03-06 14:47 shuoliuchn 阅读(286) 评论(0) 推荐(0)
摘要:排 bug 技巧 [TOC] 内容不多,但都是从实践中总结出来的精华,字字珠玑。 排 bug 很需要经验,需要多练习才好。没有哪个技巧是万能的,脑子要灵光。而且光看光想是解决不了问题的,一定要多 尝试 ,错的次数多了,便对了。 初学遇到 bug 不要恼,反而要开心。每一个小 bug 都是一个财富,都 阅读全文
posted @ 2020-03-06 14:42 shuoliuchn 阅读(180) 评论(0) 推荐(0)
摘要:思维导图 [TOC] 思维导图的作用主要是理清思路,用的时候顺藤摸瓜,能够随时联想到需要用到的知识点。 此外,也能更快索引。查阅笔记资料时,更加得心应手,效率高。 推荐平台 "ProcessOn" 在线编辑,随处任何一台电脑都可以操作 分享方便,任何人不许额外安装任何程序即可查看 随时自动保存,文件 阅读全文
posted @ 2020-03-06 14:39 shuoliuchn 阅读(209) 评论(0) 推荐(0)
摘要:技术博客制作 [TOC] 制作步骤 1. 使用 Typora 等 markdown 文本编译工具整理好博客内容 2. 全选 复制 粘贴到 CSDN 或博客园等博客网站发布 制作技巧 1. 能用图片少用文字 2. 能用代码也少用文字 3. 能用 gif 的尽量花时间做一个 gif(进阶) 推荐平台 1 阅读全文
posted @ 2020-03-06 14:38 shuoliuchn 阅读(173) 评论(0) 推荐(0)
摘要:Markdown 常用语法 [TOC] 这里介绍的都是日常经常会用到的一些 markdown 语法。若需要了解更详细的 markdown 语法,可以参见我翻译的 "Typora官方Markdown教程" 以及转载的 "CSDN 官方的 Markdown 教程" 标题 一级标题 二级标题 三级标题 四 阅读全文
posted @ 2020-03-06 14:32 shuoliuchn 阅读(250) 评论(0) 推荐(0)
摘要:码云初识 [TOC] 本文仅讨论一些码云和 git 的初级用法,仅供初学者参考。 码云官网:https://gitee.com/ 码云注册 点击右上角“注册”按钮,开始注册一个码云账号,建议使用邮箱注册账号。 新建一个库,“是否开源”处选择“公开” 将默认勾选的“使用 Readme 文件初始化这个仓 阅读全文
posted @ 2020-03-06 14:29 shuoliuchn 阅读(368) 评论(0) 推荐(0)
摘要:Visual Studio Code Python 环境部署 简单说两句 一直以来都在用 PyCharm,但是随着学生身份的消失,不能合法免费使用了。而社区版本的 PyCharm 功能又太不完善。当然,这些还不是主要问题,因为 PyCharm 太好用,这些都不是阻碍我继续使用 PyCharm 的理由 阅读全文
posted @ 2020-03-06 14:22 shuoliuchn 阅读(606) 评论(0) 推荐(0)
摘要:后缀名显示方法 由于设置原因,我们可能看不到文件的后缀名。但有时我们又要用到后缀名,就需要通过设置,让后缀名显示出来。 Windows 系统通用 如果文件后缀名默认没有显示,可以打开 ,将查看方式调为 。 找到 (Win 7 中是 ) 在 标签中,将 前的复选框取消勾选,然后就能查看和编辑文件的扩展 阅读全文
posted @ 2020-03-06 14:14 shuoliuchn 阅读(974) 评论(0) 推荐(0)
摘要:Windows 系统环境变量的配置 Windows 系统中的可执行程序一般以 做后缀。 把 exe 文件所在的文件夹放在系统环境变量的 path 变量中,就可以使用终端直接输入程序名执行该程序了。 例如,如果没有将 Python 所在目录放到环境变量中,在终端直接输入 python 命令就会提示 : 阅读全文
posted @ 2020-03-06 14:12 shuoliuchn 阅读(1953) 评论(0) 推荐(0)
摘要:Python 的版本选择与安装细节 [TOC] Python 版本选择 因程序开发者未必及时更新 Python 程序,安装新版本 Python 可能会遇到兼容性问题,故而不建议安装最新版本的 Python。 Win 10 安装 Python 3.6.8( "官方下载链接" ) Win 7 & Win 阅读全文
posted @ 2020-03-06 14:09 shuoliuchn 阅读(6674) 评论(0) 推荐(1)
摘要:计算机基础知识总结 [TOC] 这里走马观花总结了一点计算机基础知识。但是是完全不够的。如果想要深入了解计算机的组成原理,建议阅读《编码:隐匿在计算机软硬件背后的语言》这本书。 计算机组成结构 硬件:CPU,硬盘,内存,输入输出设备,主板,电源 CPU:运算器 + 控制器 内存:断电后存储内容丢失 阅读全文
posted @ 2020-03-06 14:04 shuoliuchn 阅读(395) 评论(0) 推荐(0)
摘要:下面的链接一直到 Django 已经可以使用。余下的暂时还不能用,我正在努力把博客往博客园同步。 已经把 Python 基础和进阶的部分转移过来,还有很多要转移的,好累。 我的个人博客在 https://sliu.vip/toc/ 这里是正常运行的,若有需求,可以访问这里 即便我把博客全搞过来,还是 阅读全文
posted @ 2020-03-06 00:52 shuoliuchn 阅读(353) 评论(0) 推荐(0)