看图识语法
list 可变的有序表
1 | list = ['a','B',17] |
tuple 不可变的有序列表
1 | tuple = ('a','B',17) |
dict 字典 ( map )
1 | d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} |
set 无序和无重复的集合,需要提供list作为输入
1 | s = set([1, 1, 2, 2, 3, 3])#重复元素会被过滤 |
切片
1 | L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack'] |
列表生成器
1 | L = ['Hello', 'World', 'IBM', 'Apple'] |
生成器Generator
1 | #第一种方法很简单,只要把一个列表生成式的[]改成(),就创建了一个generator: |
function
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 默认参数
def power(x, n=2,y=[]) #若不传参数n,y,则n的值为2,y为空list
# 可变参数 在函数调用时自动组装为一个tuple
def calc(*numbers)
nums = [1, 2, 3]
calc(*nums) #在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去
# 关键字参数 在函数内部自动组装为一个dict
def person(name, age, **kw)
# 命名关键字 命名关键字参数需要分隔符*,*后面的参数被视为命名关键字参数。
def person(name, age, *, city='Beijing', job)
person('Jack', 24, job='Engineer') #命名关键字参数必须传入参数名
# 参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
def f2(a, b, c=0, *, d, **kw):
模块
1 | #!/usr/bin/env python3 |
- 正常的函数和变量名是公开的(public)
- 类似xxx这样的变量是特殊变量
- 类似_xxx为约定私有,但仍可访问
- 类似__xx为私有变量,只有内部可以访问,外部不能访问
Python中,安装第三方模块,是通过包管理工具pip完成的。
继承和多态
1 | class Dog(Animal): |
Python是动态语言,根据类创建的实例可以任意绑定属性。
给实例绑定属性的方法是通过实例变量,或者通过self变量:
1 | class Student(object): |
Student类本身需要属性,可以直接在class中定义属性,这种属性是类属性,归Student类所有:( 静态 )
1 | class Student(object): |
当我们定义了一个class,创建了一个class的实例后,我们可以给该实例绑定任何属性和方法,这就是动态语言的灵活性
1 | class Student(object): |
元类
可以理解为 两种方式创建类 type和metaclass
type()
- 可以查看一个类型或变量的类型
- 可以返回一个对象的类型
- 可以创建出新的类型
1 | # 创建Hello class (类名,父类,方法) |
- metaclass metaclass允许你创建类或者修改类
1 | # metaclass是类的模板,所以必须从`type`类型派生: |
IO读写
1 | #相当于try ... finally,并且不必调用f.close()方法。 |
read() 会一次性读取文件的全部内容
read(size) 读取size大小的数据
readline() 读取一行一行
1 | w:以写方式打开 |
多线程
1 | import time, threading |
re
1 | >>> import re |
异常处理
1 | try: |
except 后面可以跟任意多个异常类型(0个也可以),表示捕获不同异常