数据类型和变量
字符串
- 用
r''表示''内部的字符串默认不转义 用
'''...'''输入多行字符空值
空值用
None表示,None不同于0。0是有意义的,而None是一个特殊的空值常量
通常用全部大写的变量名表示常量,但Python根本没有任何机制保证常量不会被改变
字符串和编码
字符编码
在计算机内存中统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转为UTF-8编码
str在内存中以Unicode表示,要在网络上或保存磁盘中需要变为以字节为单位的bytes- Python对
bytes类型的数据用带b前缀的单引号或双引号表示 - 以Unicode表示的
str通过encode()方法可以编码为指定的bytes - 如果从网络或磁盘读取了字节流,那么读到的数据就是
bytes,用decode()将bytes转为str#!/usr/bin/env python3 ->告诉Linux/os X系统,这是一个Python可执行程序# -*- coding: utf-8 -*- ->按照UTF-8编码读取源代码'中文'.encode('utf-8') #b'\xe4\xb8\xad\xe6\x96\x87'b'\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')#中文
f-string
- Python对
print(f'Hello {r}')该代码中,{r}被变量r的值替换使用list和tuple
list
list.insert(1,'HHT')把'HHT'插入到索引号为1的位置list.pop(i)删除指定位置的元素,其中i是索引位置tuple
tuple一旦初始化就不能够修改,也没有
append()和insert()这样的方法- tuple所谓的“不变”是每个元素的志向永远不变,但如果指向一个list,这个list本身的元素是可变的
只有1个元素的tuple定义时必须加一个逗号
,来消除括号的歧义,如t = (1,)条件判断
if
从上往下判断,如果在某个判断上是
True,把该判断对应的语句执行后,就忽略剩下的elif和else只要
x是非零数值、非空字符串、非空list等就判断为True,否则为False循环
for, while, break, continue
list(range(5))输出为[0, 1, 2, 3, 4]使用dict和set
dict
如果
key不存在,dict会报错- 通过
'HHT' in dict判断key是否存在 - 通过
dict.get('HHT',-1)如果key不存在返回-1,或自己指定的value
- 通过
dict的key是不可变的,如字符串和整数都是不可变的,不能用list作为keyset
set同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”
如何理解
str是不可变的,list是可变的?a = 'abc'a.replace('a','A')print(a) #'abc'
a本身是一个变量,它指向的对象的内容才是'abc',调用的replace是作用在字符串对象'abc'上的,replace方法并没有改变原字符串对象,而是创建了一个新字符串'Abc'并返回,变量a仍指向原有的字符串'abc'
