中文编码
- 文件开头加 # -- coding: UTF-8 -- 或者 #coding=utf-8
- #coding=utf-8 的 = 号两边不要空格
元组
list
- 集合(类似数组)
- []
- len()测长度
- list.append(),往末尾添加元素
- list.insert(num,xxx),插入
- list.pop()删除元素
- list里面的元素的数据类型也可以不同
- list元素也可以是另一个list
tuple
- 有序元组,初始化后就不可更改
- ()
- 大部分同list
有关函数
- def xx(参数):
- 在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,Python的函数返回多值其实就是返回一个tuple
先对参数的数据类型做检查
- isinstance()
函数执行完毕也没有return语句时,自动return None
- return None可以简写为return
- 定义默认参数必须指向不变对象(对象内部的数据不能修改)
- 定义可变参数 ,在参数前面加了一个*号
- 可变参数即传入的是一个tuple
- nums = [1,2,3,4,5]
- *nums表示把nums这个list的所有元素作为可变参数传进去
定义关键字参数**kw
关键字参数允许传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
若要限制关键字参数,则命名关键字参数需要一个特殊分隔符,后面的参数被视为命名关键字参数即(..*,xx,xx)xx就是关键字参数,若以有一个可变参数例如 *args,则后面的就不需要 *
- 命名关键字参数必须传入参数名
- 在Python中定义函数,可以用必选参数、默认参数、可变参数、关键字参数和命名关键字参数,这5种参数都可以组合使用。
- 但是参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
一些特性
- 切片(Slice)操作符
- list[xx:yy]
- xx,yy为索引
- 倒数第一个为-1
迭代器
凡是可作用于for循环的对象都是Iterable类型;
凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
Python的for循环本质上就是通过不断调用next()函数实现的
- 列表生成式:一个长长的语句加个[],执行的结果存放在一个list里
- 例如:[m + n for m in ‘ABC’ for n in ‘XYZ’]
- [x * x for x in range(1, 11) if x % 2 == 0]
高阶函数
- 函数名也是变量
- 高阶函数,就是让函数的参数能够接收别的函数
map(function,xx)函数
- 接收两个参数,一个是函数,一个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回
reduce(function, sequence[, initial])
- reduce把一个函数作用在一个序列[x1, x2, x3, …]上,必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算
- from functools import reduce
filter()函数
- 用于过滤序列
- 接收一个函数和一个序列。把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
sort()函数
- 对一个list进行排序
- 可接收一个key函数来实现自定义的排序
- 比如小写加反向加个:key=str.lower, reverse=True
返回函数
- 高阶函数可以返回一个函数
- 返回函数不要引用任何循环变量,或者后续会发生变化的变量。
- 若要引用循环变量,用该函数的参数绑定循环变量当前的值
匿名函数lambda
- lambda 参数:表达式,实际参数
- 关键字lambda表示匿名函数,冒号前面的x表示函数参数
- 只能有一个表达式,不需return ,返回值就是表达式结果
- 匿名函数也可做函数返回值
装饰器(decorator)
- 在代码运行期间动态增加功能的方式
- 接受一个函数作为参数
- 利用Python的@修饰符,将decorator置于函数定义处
- 例子:
def func(f):
xxx
@func
def test():
xxx
相当于执行 test = func(test),俩函数都会被执行
other tips
- elif是else if的缩写
- global语句声明全局变量