Fork me on GitHub
一分钟了解Python3.8新特性

一分钟了解Python3.8新特性

今天Python3.8版本刚刚发布,添加了很多新功能。这里介绍几个我觉得最酷的特性,感受一下小Python的美。 更全面的特性请直接去官网看:https://docs.python.org/3.8/whatsnew/3.8.html 赋值表达式新增一个新的赋值语法:=,它将赋给左边变量并将赋值语句转换成一个表达式。该特性编号为 PEP 572就是赋值表达式,也叫“海象运算符”。 可以看到这个操作符看上去像一只横躺着的海象。 比如下面这个例子中,使用赋值表达式可以防止你调...

每天5分钟玩转Python(23) - 对象属性

每天5分钟玩转Python(23) - 对象属性

前面介绍了面向对象编程的三个基本特性:封装、继承和多态。这一章开始讲解一些高级特性,可以让我们如虎添翼, 编写更高阶的程序。包括对象属性、多继承、定制类和元类。 使用slots当我们创建了一个类的实例后,可以给这个实例绑定任何属性和方法,这是动态语言的灵活性。 比如我们定义了一个Phone类: class Phone(object): pass 我们创建一个实例,然后给它绑定新的属性和方法: p = Phone() p.name = 'Xiong Ne...

每天5分钟玩转Python(22) - 继承与多态

每天5分钟玩转Python(22) - 继承与多态

这一篇开始讲解面向对象中最核心的基础知识,包含了继承、多态以及对象的属性访问等。 继承在面向对象编程中继承是指一个新类的定义基于某个已有的类,新的类叫子类,而比继承的类称为父类或超类。 还是以手机为例,定义一个手机类,拥有品牌、颜色基本属性。 class Phone(object): def __init__(self, brand, color): self.__brand = brand self.__color = colo...

每天5分钟玩转Python(21) - 类和实例

每天5分钟玩转Python(21) - 类和实例

面向对象编程(OOP)跟面向过程编程是两种程序设计思想,OOP将计算机程序视为一组对象的集合, 这些对象直接可通过发送消息来通信,程序执行的就是这一系列的消息。而面向过程将程序视为一组命令或函数集合, 函数又划分为多个子函数以降低系统复杂度。 Python既支持面向过程编程,又支持面向对象编程。封装、继承和多态是面向对象编程的三大特点。 面向过程就是以函数为中心的编程,这个在前面已经讲过,从这篇开始正式讲解Python面向对象编程。 类和实例面向对象编程中最重要的两个概...

每天5分钟玩转Python(20) - 打包与发布

每天5分钟玩转Python(20) - 打包与发布

当需要将写的程序打包分发出去的时候,就要使用到setuptools工具了,这里我通过一个实际例子来介绍它的使用方法。 之前我自己写过一个rpc模块叫xnrpc: github项目地址:https://github.com/yidao620c/xnrpc pipi模块地址:https://pypi.python.org/pypi/xnrpc 软件包归档格式Python的软件包一开始是没有官方的标准分发格式的。比如Java有jar包或者war包作为分发格式,Python...

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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