微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码能借用就借用. -- Tom Duff 目录 编程可分为面向过程编程和面向对象编程,它们是两种不同的编程方式,当然背后的思维方式也是不同的.面向过程编程是一种传统的编程方式,面向对象编程是一个更高级的编程方式. 1,面向过程编程 面向过程编程(POP)的重点在于过程二字. 面向过程比较好理解,就是按照人们通常的思维方式,在做一件事情的时候,将这件事情划分为多个步骤,一步一步来做. 面向过程编程…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果你发现特殊情况太多,那很可能是用错算法了. -- Carig Zerouni 目录 前几节我们介绍了Python 中四种数据结构的特性和基本用法,本节介绍与数据结构相关的高级特性. 序列 迭代器 列表生成式 生成器 强制类型转换 1,序列 Python 序列是指,其中存放的元素是有序排列的,可用下标访问,字符串,列表,元组都是序列. 而字典与集合中的元素是无序排列的,因此一般不归在序列中. P…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 对于那些快速算法,我们总是可以拿一些速度差不多但是更容易理解的算法来替代它们. -- Douglas Jones 目录 高阶函数一般以函数为参数. 本节我们介绍Python 中三个方便的高阶函数,分别是: map reduce filter 如果你了解过分布式系统框架---Hadoop,你应该知道map/reduce 的概念. Python 中的map/reduce 函数与Hadoop 中的map…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 正确的判断来源于经验,然而经验来源于错误的判断. -- Fred Brooks 目录 我们已经知道函数是一种重复利用代码的机制. 本节我们来介绍模块,Python 中的模块,也是一种重复利用代码的机制.我们可以将有特定功能的代码(比如函数,类等)写在模块中,供他人使用,便于重复利用,便于维护. 在前面的章节中,我们也接触过模块.Python 功能强大的一个重要的原因,就是它有各种方便使用的模块.…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术.一个社区. -- Joshua Bloch 目录 1,什么是计算机编码 编码 信息从一种形式转换到另一种形式的过程,就叫做编码.说白了,编码就是信息的一种转换过程. 比如,信息的加密解密,这就是信息的一种转换过程,它是信息的明文与密文之间的转换过程. 还有不同国家文字的翻译,这是语言之间的一种转换过程. 那么,编码也是一种信息的转换过程. 计算机编码…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序 = 算法 + 数据结构 -- Nicklaus Wirth 目录 从这句话程序 = 算法 + 数据结构 可以看出数据结构对于编程的重要性.数据结构就是数据的组织/存储方式. 从本节开始我们将介绍Python 中的数据结构: 列表 list 元组 tuple 字典 dict 集合 set 这些数据结构在Python3.x 中都是一个类class: >>> list <class…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 任何一个人都会写出能够让机器理解的代码,只有好的程序员才能写出人类可以理解的代码. -- Martin Fowler 1,什么是变量 计算机的本质是处理数据,数据可以存储在内存和磁盘,只有加载到内存的数据才能被处理. 变量用于代指某块内存数据,比如数字123,字符串abc,如下: n = 123 s = 'abc' 这里的n 和 s 就是变量. Python 是动态类型语言,所以,Python 中…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过早的优化代码是罪恶之源. -- Donald Knuth 目录 无论哪种编程语言,字符串处理都是最重要的内容之一.当然,Python 也不例外. 1,Python 字符串 在这节内容中,我们已经知道了Python 字符串是用以下引号引住的一串字符: 单引号'' 双引号"" 三单引号''' 三双引号""" Python3 中的字符串类型统一采用Unicode…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 那些能用计算机迅速解决的问题,就别用手做了. -- Tom Duff 目录 上一节 我们介绍了Python 面向对象的相关概念,我们已经知道类与对象是面向对象编程中非常重要的概念. 类就是一个模板,是抽象的.对象是由类创建出来的实例,是具体的.由同一个类创建出来的对象拥有相同的方法和属性,但属性的值可以是不同的.不同的对象是不同的实例,互不干扰. 1,类的定义 如下,是一个最简单的类,实际上是一个…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 与客户保持良好的关系可以使生产率加倍. -- Larry Bernstain 目录 类中的变量称为属性,类中的函数称为方法. 类中的属性分为: 实例属性:对象所有,互不干扰 类属性:类所有,所有对象共享 类中的方法分为: 实例方法:定义中有self 参数 类方法:定义中有cls 参数,使用@classmethod 装饰器 静态方法:定义中即没有self 参数,也没有cls 参数,使用@static…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 程序不是年轻的专利,但是,它属于年轻. 目录 我们已经知道封装,继承和多态 是面向对象的三大特征,面向对象语言都会提供这些机制. 1,封装 在这一节介绍类的私有属性和方法的时候,我们已经讲到过封装. 封装就是在设计一个类的时候,只允许使用者访问他需要的方法,将复杂的,没有必要让使用者知道的方法隐藏起来.这样,使用者只需关注他需要的东西,为其屏蔽了复杂性. 私有性就是实现封装的一种手段,这样,类的设…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 当你选择了一种语言,意味着你还选择了一组技术.一个社区. 目录 本节我们来介绍闭包与装饰器. 闭包与装饰器是函数的高级用法,其实在介绍完Python 函数我们就可以介绍本节的内容,但由于Python中的类也可以用来实现装饰器,所以我们等到介绍完了Python 类再来统一介绍闭包与装饰器. 装饰器使用的是闭包的特性,我们先来介绍闭包,再来介绍装饰器. 1,什么是闭包 Python 的函数内部还允许嵌…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 要么做第一个,要么做最好的一个. 目录 我们在编写程序时,总会不自觉的出现一些错误,比如逻辑错误,语法错误和一些其它的运行时错误等. 逻辑错误: 这种错误不会导致程序崩溃,它不容易被发现,只有在执行结果不是我们预期的时候,才会被发现. 语法错误: 这种错误是不符合语法规定的错误,说白了,就是编译器或者解释器无法理解的代码.出现这种错误时,程序是不能运行的. 其它运行时错误: 这种错误是程序在运行的…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 过去的代码都是未经测试的代码. 目录 无论是哪种编程语言,IO 操作都是非常重要的部分.I 即Input(输入),O 即Output(输出). IO 操作一般分为以下两种: 磁盘IO: 即在磁盘上读写文件.读文件是指将文件内容从磁盘读入内存,写文件是指将内存中的内容写到磁盘. 网络IO: 即文件在网络上传输.网络传输一般会有两种角色,分别是服务端(如HTTP Server)和客户端(如浏览器).…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 学编程最有效的方法是动手敲代码. 目录 1,什么是多进程 我们所写的Python 代码就是一个程序,Python 程序用Python 解释器来执行.程序是存储在磁盘上的一个文件,Python 程序需要通过Python 解释器将其读入内存,然后进行解释并执行. 处于执行(运行)状态的程序叫做进程.进程是由操作系统分配资源并进行调度才能执行.操作系统会为每个进程分配进程ID(非负整数),作为进程的唯一…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 如果代码和注释不一致,那很可能两者都错了. -- Norm Schryer 目录 前几节我们已经介绍了Python 中的列表list,元组tuple 和 字典dict,本节来介绍Python 中的最后一种数据结构--集合set. >>> set <type 'set'> 1,Python 集合 Python 中的set 与 dict 很像,唯一的不同是,dict 中保存的是键值…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 测试只能证明程序有错误,而不能证明程序没有错误. -- Edsger Dijkstra 目录 本节我们来介绍函数,在前边的章节我们已经接触了挺多函数了,比如print(),len() 等. 函数是编程语言中非常重要的概念,函数是一段可重复利用的,提供特定功能的代码段. 函数是一种模块化的手段,可提高代码的利用率,避免重复代码,便于使用,便于维护. Python 中,不仅提供了许多现成可用的内建函数…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 好代码本身就是最好的文档.当你需要添加一个注释时,你应该考虑如何修改代码才能不需要注释. -- Steve McConnell 目录 字符串有很多操作函数,所以,这里我们专门用一节来介绍这些函数. 建议: 由于字符串函数较多,对于新手来说,不必要一开就掌握所有的函数用法,可以先粗略的看一遍,有个大概印象,到真正用的着的时候,再来详细查看也可.用的次数多了,自然就记住了. 我们可以通过dir() 函…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 软件工程的目标是控制复杂度,而不是增加复杂性. -- Dr. Pamela Zave 目录 我们在上一节介绍了Python 列表list 数据结构,本节来介绍一下元组tuple. 1,Python 元组 元组与列表有些相似,它们之间最显著的不同是,元组一旦定义了以后,就不能再修改(增加/删除其中的元素),而列表可以被任意的改. Python 元组有如下特点: 元组中的元素可以是任意类型的数据 可使…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 代码写的越急,程序跑得越慢. -- Roy Carlson 目录 Python 字典是另一种非常实用的数据结构,在Python 中用dict 表示,是英文dictionary 的缩写. >>> dict <class 'dict'> Python 中的dict 在其它编程语言中一般用map 表示,虽然叫法不同,但基本原来是相通的. 1,Python 字典 Python 字典中的…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 靠代码行数来衡量开发进度,就像是凭重量来衡量飞机制造的进度. -- Bill Gates 目录 1,什么是表达式 表达式是代码的重要组成部分,一个表达式由运算符和操作数两部分组成. 一个表达式就描述了对哪些数据,进行了什么样的操作. 如下就是一个表达式: sum = 1 + 2 其中,=和+ 都是运算符,=是赋值运算符,+ 是相加运算符,sum,1,2 都是操作数. 这句话的含义是,将1 与 2…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io Talk is cheap, show me the code. -- Linus Torvalds 目录 控制流用来控制程序的处理流程,即当程序满足或不满足某一条件时,让程序去做哪些事情. 控制流语句使得我们可以处理丰富的代码逻辑. 基本的控制流语句有三种,分别是: if 条件语句 for 循环语句 while 循环语句 1,if 条件语句 if 语句用于判断一个条件,当条件为True 时,执行…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 做技术一定要一颗恒心,这样才不会半途而废. 目录 上一节我们介绍了文件相关的操作,本节我们来介绍目录相关的操作. 1,os 模块 os 模块是Python 中的内建模块,该模块中包含许多系统相关的操作.我们要介绍的目录相关的操作,也都包含在该模块中. 我们可以使用dir(os) 来查看该模块中所有属性和函数,共有几百个属性和函数.这里我们只介绍一部分函数,可以使用help(os.函数名) 来查看某…
微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io 控制复杂性是计算机编程的本质. -- Brian Kernighan 了解了如何编写第一个Python 程序,接下来,我们来学习更多的Python 知识. 本篇内容,我们来介绍一些Python 基础概念. 1,注释 每种编程语言中都有注释,代码注释的主要作用是解释某段代码的含义,以供其他维护人员参考.Python 解释器在遇到注释时,会将其忽略,而不会当做代码来执行. 注释可分为单行注释和多行注释…
一.开始 Python 之旅交互模式 1.Ctrl + D 输入一个 EOF 字符来退出解释器,也可以键入 exit() 来退出 2.#!/usr/bin/env python3 中#!称为 Shebang,目的是告诉shell使用Python 解释器执行其下面的代码. 3.注意遵守以下约定: 使用 4 个空格来缩进 永远不要混用空格和制表符 在函数之间空一行 在类之间空两行 字典,列表,元组以及参数列表中,在 , 后添加一个空格.对于字典,: 后面也添加一个空格 在赋值运算符和比较运算符周围要…
第一个Python程序 作为我们第一个Python程序——打印"Hello  World!". 在终端输入Python3进入交互界面: 输入print("Hello  World!")并回车,就打印出了"Hello World!" 如何退出解释器呢?可按 Ctrl+D 输入一个EOF字符来退出解释器,也可以输入 exit() 来退出. 解释器与脚本文件 Python是一个编程语言,你可以在Python解释器中直接写代码或者将代码写到一个文件里,然…
Python是由吉多·范罗苏姆(Guido Van Rossum)在90年代早期设计.它是如今最常用的编程 语言之一.它的语法简洁且优美,几乎就是可执行的伪代码. 注意:这篇教程是特别为Python3写的.如果你想学旧版Python2,我们特别有另一篇教程. # 用井字符开头的是单行注释 """ 多行字符串用三个引号 包裹,也常被用来做多 行注释 """ ##############################################…
简单的来说,数据结构(data structure)是计算机中存储.组织数据的方式.比如我们之前使用过的列表就是一种数据结构,在这里我们还会深入学习它.之前也有简单的介绍. 列表 >>> a = [23, 45, 1, -3434, 43624356, 234] >>> a.append(45) >>> a [23, 45, 1, -3434, 43624356, 234, 45] 首先我们建立了一个列表 a.然后调用列表的方法 a.append(45…
collections 是 Python 内建的一个集合模块,提供了许多有用的集合类. 在这个实验我们会学习 Collections 模块.这个模块实现了一些很好的数据结构,它们能帮助你解决各种实际问题. >>> import collections 这是如何导入这个模块,现在我们来看看其中的一些类. Counter Counter 是一个有助于 hashable 对象计数的 dict 子类.它是一个无序的集合,其中 hashable 对象的元素存储为字典的键,它们的计数存储为字典的值,…
在这节我们将要学习 Python 模块相关知识.包括模块的概念和导入方法,包的概念和使用,第三方模块的介绍,命令行参数的使用等. 模块 到目前为止,我们在 Python 解释器中写的所有代码都在我们退出解释器的时候丢失了.但是当人们编写大型程序的时候他们会倾向于将代码分为多个不同的文件以便使用,调试以及拥有更好的可读性.在 Python 中我们使用模块来到达这些目的.模块是包括 Python 定义和声明的文件.文件名就是模块名加上 .py 后缀. 你可以由全局变量 __name__ 得到模块的模…