Fork me on GitHub

python教程

每天5分钟玩转Python(19) - 安装虚拟环境

如果正常使用pip安装会将软件包安装到python系统包目录下面,也就是site-packages目录。 通常我们需要对环境进行隔离以防止别的包影响到。这时候需要安装虚拟环境virtualenv了。 安装virtualenvvirtualenv可用于创建独立的 Python 环境,它会创建一个包含项目所必须要的执行文件。 sudo pip install -U virtualenv 创建虚拟环境如下命令表示在当前目录下创建一个名叫 myenv 的目录(虚拟环境), 该...

每天5分钟玩转Python(18) - 包管理工具pip

安装完python后就已经安装了所有的内置模块,如果只是需要内置模块之间导入即可, 而当我们需要第三方模块的时候就需要自己去安装了。python里面最常用的是使用pip在线安装第三方模块。 其实,pip就是Python标准库中的一个包,这个包比较特殊,用它可以来管理Python标准库中其他的包。 pip支持从PyPI(https://pypi.org/)、版本控制以及直接从分发文件进行安装。 pip是一个命令行程序。安装pip后,会向系统添加一个pip命令,该命令可以从...

每天5分钟玩转Python(17) - 模块和包

模块和包都是用来组织代码用的,在python中一个模块就是一个.py文件, 而一个包就是一个包含了__init__.py的文件夹。 使用模块最大的好处就是提高代码可维护性,我们在编写代码的时候通常会引用内置模块或第三方模块。 引入包是为了解决命名冲突问题,你可以把包当成是命名空间, 比如你写的abc.py模块和其他人写的abc.py模块只要在不同的包中就不会冲突。 只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。 比如我现在有这样一个目录结构: winhong/...

每天5分钟玩转Python(16) - 装饰器

Python有着强大的表达式语法和函数特性,其中一个我的最爱便是装饰器。 在设计模式中,装饰器能够在不使用子类的情况下动态的修改函数、方法或类的功能。 当你需要扩展某个函数的功能却不想直接修改这个函数的时候,装饰器就可以派上用场了。 实现装饰器模式有很多种方法,但是Python通过强大的语法支持来让这个变得相当容易。 本质上来讲,装饰器是以包装器形式工作的,其实就是在执行目标函数之前或之后加入自己的逻辑, 而不需要改变目标函数本身就可以增强它的功能,也就是说装饰了它。 ...

每天5分钟玩转Python(15) - 闭包

闭包跟函数式紧密联系在一起的,介绍闭包之前先了解一下python中函数的高阶用法。比如嵌套函数、变量作用域等等。 变量作用域变量作用域是程序运行时变量可被访问的范围,定义在函数内的变量是局部变量, 局部变量的作用范围只能是函数内部范围内,它不能在函数外引用。 def test(): num = 10 # 局部变量 print(num) # NameError: name 'num' is not defined 定义在模块最外层的变量是全局变...

每天5分钟玩转Python(14) - 函数式编程之filter/sorted

这一篇再讲两个高阶函数,一个是过滤器函数,一个是排序函数。这些都是使用最频繁的函数,也很具有代表性。 filter()函数filter()函数用于过滤序列,跟map()一样,也是接受一个函数,一个Iterable。 它将传入的函数依次作用于序列每个元素如果函数返回值为True则保留元素,否则丢弃元素。 最终的返回值仍然是一个Iterable。 比如在一个从0到10的列表中,只保留偶数。则正是过滤器函数用武之地: print(list(filter(lambda x: x...

每天5分钟玩转Python(13) - 函数式编程之map/reduce

函数式(Functional Programming)编程是一种抽象程度非常高的编程范式,纯粹的函数式编程中没有变量。 对于任意一个函数,输入确定则输出也确定,这种纯函数没有任何副作用,非常适合高并发场景。 比如Lisp语言就是一个纯粹的函数式编程语言。 另外函数式编程中,函数可作为参数传入另外一个函数,也可作为返回值,跟变量一样。 由于Python中存在变量,因此并不是纯函数式编程语言。 map/reduce这个东西最初出自于Google的论文《MapReduce: ...

每天5分钟玩转Python(12) - 生成器(下)

这一章开始介绍生成器函数和yield关键字,以及Python中的协程的概念。 yield关键字当我们调用一个普通的函数时,执行过程从第一条语句开始,直到碰到一个return语句或者遇到一个异常抛出, 再或者到了函数最后一条语句(实际上相对于一个隐式的return None)的时候结束。 一旦这个函数返回后将控制权交还给它的调用者,它里面所有的局部变量值都消失了,当你重新调用它的时候,一切又将重新开始。 这就是我们通常意义上面所认识的函数(或者说是子程序),但有时候我们需...

每天5分钟玩转Python(11) - 生成器(上)

这篇开始要展示python这门语言真正的魅力所在了。python有一些高级功能, 让我们的代码写起来超级爽,所以才会有这么多人喜欢它。 这篇先介绍生成器这个东东,学会你就知道它有多强大了,不过对于生成器的讲解稍微有点长, 可能看完不止5分钟,所以我分了上下两篇。建议读者耐心看完,这是进阶的必经之路。 列表推导在讲生成器之前,先讲讲python里面常用的几个常见的推导式: 列表推导式(list comprehension) my_list = [f(x) for x in...

每天5分钟玩转Python(10) - 迭代器

迭代(iteration)指的是去获取元素的一种方式,一个接一个。当你显式或隐式的使用循环来遍历某个元素集的时候,那就是迭代。 之前我们学习for循环迭代的时候知道,操作对象可以是list、tuple、dict、set、str类型。 实际上除了这几类内置类型外,for循环还能操作generator类型,也就是迭代器类型。 generator类型包括生成器和带yield的生成器函数。 在Python里面,可迭代对象(iterable)和迭代器(iterator)有着特殊的...

每天5分钟玩转Python(09) - 切片

我们经常会遇见只取列表、元组或者字符串中一部分的场景。比如一个列表如下: _list = ['a', 'b', 'c', 'd', 'e'] 如果只想取前面3个元素咋整。最笨的方法就是创建一个新的列表,通过下标引用来填充这个列表: sub_list = [_list[0], _list[1], _list[2]] 这样几个元素还好,如果几百个元素你还不得累死。 有人说我可以用循环啊,就像...

每天5分钟玩转Python(08) - 函数

函数是组织好的、可重复使用的、用来实现单一或相关联功能的代码段。 函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数, 比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。 定义函数在python中定义函数使用def开头,紧接着就是函数名称和圆括号(),在括号可以增加参数。 函数第一行语句可使用三引号格式的文档字符串来定义函数的说明。使用return语句定义函数返回值。 def hello(name): &quo...

每天5分钟玩转Python(07) - 基本数据类型(下)

继续上一篇的数据结构讲解,这篇讲解Set(集合)和Dictionary(字典)的使用方法。 Set(集合)大家都知道数学中集合的定义为:将数个对象归类而分成为一个或数个形态各异的大小整体。 一个集合中,任何两个元素都认为是不相同的,即每个元素只能出现一次。 Python中通过内置函数set()可获取到集合这种数据类型。参数可以是一个list s = set([1, 2, 3]) 通过add(key)方法可以添加元素到set中,可以重复添加,但不会有效果: s.add(...

每天5分钟玩转Python(06) - 基本数据类型(中)

继续上一篇的数据结构讲解,这篇讲解列表List(列表)和Tuple(元组)的使用方法。 List(列表)列表应该是Python中使用最频繁的数据类型了。列表可以完成大多数集合类的数据结构实现。 列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。 列表是写在方括号 [] 之间、用逗号分隔开的元素列表。 list1 = ['abcd', 123 , 3.14, 'test', True, 70.2 + 3.2j] l...

每天5分钟玩转Python(05) - 基本数据类型(上)

在介绍数据类型之前,有必要先讲一下变量赋值语法。 变量赋值Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。 变量并没有类型,我们所说的”类型”是变量所指的内存中对象的类型。你可以认为变量就是指向内存中对象的一个指针。 使用等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。 counter = 100 # 整型变量 miles = 1000.0 ...

每天5分钟玩转Python(04) - 基本语法

学一门语言最开始还是得先了解一下这门语言的基本语法,Python跟C语言语法有很大差别。 并且由于是一门脚本语言,语法比较的简单。这篇系列讲的都是Python3,所以语法也最新的3.x的语法。 源文件Python的源文件一般以.py结尾,同时默认是以UTF-8编码。对于每个python源文件,在最开始声明如下两行是一个很好地习惯 #!/usr/bin/env python # -*- encoding: utf-8 -*- 标识符标识符由字母、数字和下划线组成,但是第...

每天5分钟玩转Python(03) - 安装Pycharm

安装完Python之后还需要安装集成开发环境,也就是通常所说的IDE。虽然你可以用python自带的IDLE, 或者直接使用notepad++这类本文编辑器,但是我的建议是想敲代码快一点还是用IDE吧,这里我首推Pycharm。 事实上我对Jetbrains出的编程工具系列相当偏爱,因为对比使用过后你会发现它们实在是用的太爽了。 本篇介绍如何在Windows上面安装Pycharm,以及它的一些基本使用方法。 下载和安装下载地址:https://www.jetbrains...

每天5分钟玩转Python(02) - 安装Python

要学习和运行Python得先安装才行,安装后会得到Python解释器、命令行交互环境和一个简单的集成开发环境。 由于历史原因,目前Python有两个版本:一个是2.x版,一个是3.x版。2.x版本很快就不会被支持了, 现在所有python编写的软件都会升级到3.x,所以这个教程就直接以最新的3.8版本为基础来讲解。 同时建议所有初学者直接学习python 3.x版本。 下载和安装Python是跨平台的,所以不管是windows、linux和mac都能安装。 在Mac上安...

每天5分钟玩转Python(01) - 入门简介

人生苦短,我用Python! 终于要写这个系列教程了,虽然我知道会很辛苦,也很难写的比较完美。总是有其他的事情干扰, 不过我有个特点就是一旦开始就停不下来,我相信自己会坚持写完这个入门教程的。 市面上有好多Python入门书籍,还有各种培训课程上面的教程,可能有人问我为啥还要写这个玩意。 我的解释是,总会有那么一小部分人看得懂我在写啥,喜欢这种风格,就足够了。 之前看过《每天5分钟玩转docker容器》和《每天5分钟玩转kubernetes》两个系列,我比较喜欢他这种风...