python入门-语法介绍
数据类型
- 整数: 无范围限制
- 浮点数: 超出范围用科学计数法表示
- 字符串: 以
''
或""
括起来的文本 - 布尔值: 用
True
、False
表示, 用and
、or
、not
进行运算 - 空值: 空值是一个特殊的值,用
None
表示,不能理解为0 - 常量: 变量名全部大写,python中没有机制保证常量的值不被改变
- list: 有序集合,常用操作有
pop()
、append()
- tuple: 有序集合,一旦初始化就不能修改
- dict:
- 使用键值对(key-map)的存储格式
- 通过哈希算法(Hash)计算存储位置,因此具有极快的查找速度
- 需要占用大量内存,内存浪费很多。是一种用空间来换取时间的方法
dict = {'Michael': 95, 'Bob': 75, 'Tracy': 85} #初始化
dict['Lucy'] = 67
'Thomas' in dict #判断key是否存在
dict.get('Thomas', -1) #如果不指定返回值,则返回None
dict.pop('Bob') #删除key,对应的value也会被删除
- set:
- set和dict类似,也是一组key的集合,但不存储value
- 在set中没有重复的key,重复元素在set中自动被过滤
- set是无序的
set = set([1, 2, 3]) #要创建一个set,需要提供一个list作为输入集合
set.add(4) #添加元素
set.remove(4) #删除元素
字符编码
- 字符串类型是
str
,在内存中以Unicode表示,以字节为单位的bytes
在网络上传输或者保存到磁盘上,如x = b'string'
ord('s') #获取字符的整数表示
chr('64') #把编码转换为对应的字符
len('string') #计算字符长度,对于bytes型数据,计算的是字节长度
'string'.encode('utf-8') #编码
b'string'.decode('utf-8', errors='ignore') #解码
函数
对于任意函数,都可以通过类似
func(*args, **kw)
的形式调用它,无论它的参数是如何定义的。
- 必选参数:
def power(x):
pass
- 默认参数:放在必选参数后面,默认参数必须指向不变对象
def power(x, n=2):
pass
- 可变参数:在函数调用时,自动组装为一个tuple
def calc(*numbers):
pass
- 关键字参数:函数内部自动组装为一个dict
def person(name, age, **kw):
pass
person('Adam', 45, gender='M', job='Engineer')
- 命名关键字参数
def person(name, age, *, city, job):
pass
person('Jack', 24, city='Beijing', job='Engineer')
高级特性
- 切片
s = 'string'
s[开始索引, 结束索引]
- 迭代(iteration)
for x, y in []
- 列表生成式
[ 生成式 循环 (循环) (条件判断) ]
- 生成器(generator):将列表生成器的
[]
改为()
或者 把函数中的print语句改为yield
- 迭代器(iterator):
- 可作用于for循环的对象都是
iterable
- 可作用于next()函数的对象都
ierator
list
、dict
、str
是iterable但不是iterator
函数式编程
- 高阶函数
- list(map(
函数
,iterable
)) - reduce(
函数
,iterable
) - list(filter(
函数
,iterable
)) - sorted(
list
、 key=, reverse=) - 以函数作为返回值
- 匿名函数:
lambda x, y : x*y
- 装饰器
- 偏函数:
functools.partial()
面向对象
@property
装饰器负责把一个方法变成属性调用- 枚举
type()
metaclass
元类
IO操作
- 读写文件
with open('/gbk.tx', 'r', encoding='gbk', errors='ignore') as f:
print(f.read())
- 操作文件
- 获取当前目录的绝对路径
os.path.abspath('.')
- 合并路径
os.path.join(str, str)
- 创建目录
os.mkdir(str)
- 删掉目录
os.rmdir(str)
- 拆分路径
os.path.split(str)
- 获取文件扩展名
os.path.splitext()
- 序列化
pickle.dumps()
、pickle.dump()
反序列化pickle.loads()
、pickle.load()
- json
json.dumps()
、json.dump()
进程和线程
- 获取子进程id
os.getpid()
- 获取父进程id
os.getppid()
- 创建进程
process =Process(target= , args= )
- 启动进程
process.start()
- 进程同步
process.join()
- 创建进程池
pool = Pool(int)
- 关闭进程池
pool.close()
- 进程同步
pool.join()
- 进程间通信
Queue
、Pipes