timeit:需要增加 @property 类的继承 多重继承 方法重写 子类中调用父类方法 super的用法:需要增加 slots的用法 metaclass的用法 多态 查看子类和父类:subclasses
Python 有两种错误很容易辨认:语法错误和异常。 Python assert(断言)用于判断一个表达式,在表达式条件为 false 的时候触发异常。...concatenate str (not "int") to str 异常以不同的类型出现,这些类型都作为信息的一部分打印出来: 例子中的类型有 ZeroDivisionError,NameError 和...try 语句按照如下方式工作; 首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。 如果没有异常发生,忽略 except 子句,try 子句执行后结束。...如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。 如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。...如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后被抛出。
def 定义函数 image.png 写函数文档 image.png 递归函数 image.png 带参数函数 image.png 指定默认值 image.pn...
import random from random import random from random import *
pydoc生成文档 image.png 单元测试
python -m pip install r requirements . txt --target dbapp
Python3 == 和 is 的区别 ---- 本文由 Luzhuo 编写,转发请保留该信息....usr/bin/env python # coding=utf-8 __author__ = 'Luzhuo' __date__ = '2017/5/19' # equal_is_demo.py == 和...is 的区别 # == 和 is 的区别: # is 判断两个对象是否为同一对象, 是通过id来判断的; 当两个基本类型数据(或元组)内容相同时, id会相同, 但并不代表a会随b的改变而改变 # ==...format(id(temp_1), id(temp_2), temp_1 is temp_2, temp_1 == temp_2)) # 输出结果: 此时他们具有相同的id, 相同的值, 所以is和=..., 所以is和==都返回False # temp_1: 123; temp_2: 456 # id_temp_1: 1485463184; id_temp_2: 109502000; temp
Python3 错误和异常 这个例子中,函数 print() 被检查到有错误,是它前面缺少了一个冒号(:)。 语法分析器指出了出错的一行,并且在最先找到的错误的位置标记了一个小小的箭头。...如果你在学习Python的过程中遇见了很多疑问和难题,可以加-q-u-n 227 -435-450里面有软件视频资料免费 try语句按照如下方式工作; 首先,执行try子句(在关键字try和关键字except...Python3 错误和异常 ? Python3 错误和异常 ? Python3 错误和异常 用户自定义异常 你可以通过创建一个新的异常类来拥有自己的异常。...Python3 错误和异常 在这个例子中,类 Exception 默认的 init() 被覆盖。...下面是一个更加复杂的例子(在同一个 try 语句里包含 except 和 finally 子句): ?
在解释进程之前,我们要知道在操作系统中存在就绪队列和阻塞队列 进程 进程基本概念 进程是执行中的程序, 也就是说进程是动态的, 程序是静态的 进程是操作系统分配资源的最小单位,有一个进程控制块(PCB)...时间片轮转: 给每个进程分配一个时间片, 如果进程在时间片内执行完就直接执行下一个进程, 如果没执行完, 进程释放CPU给下一个进程 优先级队列: 在优先级队列中, 每个进程都会被分配优先级(优先级有静态和动态之分...非抢占式和抢占式区别: 非抢占式: 在进程运行时, 不允许别的进程剥夺当前运行进程的处理器, 在这种情况下, 在用优先级分配处理机时, 正在运行的进程优先级不一定是当前所有进程中优先级最高的, 因为可能在进程运行过程中有更高的进程被加入到就绪队列中...线程基本概念 线程是CPU的基本调度单位 一个进程一般包含多个线程, 一个进程下的多个线程共享进程的资源 不同进程之间的线程相互不可见 线程不能独立执行 一个线程可以创建和撤销另外一个线程 ---- 进程和线程的区别
Edit 笔记内容:Python3 错误和异常 笔记日期:2017-11-12 ---- Python3 错误和异常 语法错误 异常 异常处理 抛出异常 用户自定义异常 finally语句 预定义的清理行为...通过异常处理,我们可以对用户在程序中的非法输入进行控制和提示,以防程序崩溃。...try语句按照如下方式工作; 首先,执行try子句(在关键字try和关键字except之间的语句) 如果没有异常发生,会忽略except子句,try子句执行后就结束。...如果异常的类型和 except 之后的名称相符,那么对应的except子句将被执行。最后执行 try 语句之后的代码。 如果一个异常没有与任何的except匹配,那么这个异常将会被抛出。...如果一个异常在 try 子句里(或者在 except 和 else 子句里)被抛出,而又没有任何的 except 把它截住,那么这个异常会在 finally 子句执行后再次被抛出。
最经使用到了一些时间相关的包和函数,以后使用到更多,再补充 import datetime import time # 获取当前时间, 其中中包含了year, month, hour, 需要import
判断 a 和 a 是否是同一内存空间(或者叫做是否是同一对象),如果是则返回 True (第 8 行) 也可以对 is 这个关键字取反 is not,结果与 is 相反(第 9、10 行) 第 11...、12 行,为什么 a 和 b 一样,结果却是 False?...第 13、14 行, c = a,是完全相等的意思,包括内存地址和列表里面的内容。 3....坑 需要注意的一点,in 和 not in 是包含与取反, is 和 is not 是判断内存与取反 in 的 not 在前,is 的 not 在后,是因为内存空间不能 not 的,图中 a is not
参考链接: Python | PostgreSQL中的数据库管理 在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。 1....函数形参 *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。...其实并不是必须写成 *args 和 **kwargs。 *(星号) 才是必须的. 你也可以写成 *ar 和 **k 。而写成 *args 和**kwargs 只是一个通俗的命名约定。...kwargs 的区别,两者都是 python 中的可变参数: *args 表示任何多个无名参数,它本质是一个 tuple**kwargs 表示关键字参数,它本质上是一个 dict 如果同时使用 *args 和...函数实参 如果函数的形参是定长参数,也可以使用 *args 和 **kwargs 调用函数,类似对元组和字典进行解引用: >>> def fun(data1, data2, data3): ...
在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。 1. 算数运算 * 代表乘法 ** 代表乘方 >>> 2 * 5 10 >>> 2 ** 5 32 2....函数形参 *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。...其实并不是必须写成 *args 和 **kwargs。 *(星号) 才是必须的. 你也可以写成 *ar 和 **k 。而写成 *args 和**kwargs 只是一个通俗的命名约定。...kwargs 的区别,两者都是 python 中的可变参数: *args 表示任何多个无名参数,它本质是一个 tuple **kwargs 表示关键字参数,它本质上是一个 dict 如果同时使用 *args 和...函数实参 如果函数的形参是定长参数,也可以使用 *args 和 **kwargs 调用函数,类似对元组和字典进行解引用: >>> def fun(data1, data2, data3): ...
安装 前提: python3和pip3都已经安装。...localhost]$ vi ~/.bashrc 添加下面三行内容到文件末尾 #此目录为上述创建的目录 export WORKON_HOME=$HOME/.local/virtualenv #默认建立python3...虚拟环境 export VIRTUALENVWRAPPER_PYTHON=/usr/bin/python3 #此目录为上述which命令看到的 .
False) # list类的sort方法原型 sorted(iterable, /, *, key=None, reverse=False) # sorted方法原型 其中参数/和*
Python2 中有 str 和 Unicode 两种类型,而 Python3已经严格区分了 bytes 和 str 两种数据类型,str为原来的unicode,bytes代替了之前的str。...在将字符串存入磁盘和从磁盘读取字符串的过程中,Python 自动地帮你完成了编码和解码的工作,你不需要关心它的过程,例如你能把一个中文赋值给字符串。...str.translate(...)就不适合使用deletechar,因为一个Unicode字符经过编码后可能会和一些英文ACSII码混淆,而bytes中对单个字节操作不会有这种问题。
参考链接: Python | 使用openweathermap API查找任何城市的当前天气 在 Python 中,* 和 ** 具有语法多义性,具体来说是有四类用法。 1....函数形参 *args 和 **kwargs 主要用于函数定义。 你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。...其实并不是必须写成 *args 和 **kwargs。 *(星号) 才是必须的. 你也可以写成 *ar 和 **k 。而写成 *args 和**kwargs 只是一个通俗的命名约定。...kwargs 的区别,两者都是 python 中的可变参数: *args 表示任何多个无名参数,它本质是一个 tuple**kwargs 表示关键字参数,它本质上是一个 dict 如果同时使用 *args 和...函数实参 如果函数的形参是定长参数,也可以使用 *args 和 **kwargs 调用函数,类似对元组和字典进行解引用: >>> def fun(data1, data2, data3): ...
bytes.decode(encoding="utf-8", errors="strict")
邮件格式 (RFC 2822) 每封邮件都有两个部分:邮件头和邮件体,两者使用一个空行分隔。 邮件头每个字段 (Field) 包括两部分:字段名和字段值,两者使用冒号分隔。...有两个字段需要注意:From和Sender字段。From字段指明的是邮件的作者,Sender字段指明的是邮件的发送者。...如果From字段包含多于一个的作者,必须指定Sender字段;如果From字段只有一个作者并且作者和发送者相同,那么不应该再使用Sender字段,否则From字段和Sender字段应该同时使用。 .../usr/bin/env python3 #coding: utf-8 import smtplib from email.mime.text import MIMEText.../usr/bin/env python3 #coding: utf-8 import smtplib from email.mime.text import MIMEText
领取专属 10元无门槛券
手把手带您无忧上云