数据类型和变量
字符串
- 用
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
作为key
set
set同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部“不会有重复元素”
如何理解
str
是不可变的,list
是可变的?a = 'abc'
a.replace('a','A')
print(a) #'abc'
a
本身是一个变量,它指向的对象的内容才是'abc'
,调用的replace
是作用在字符串对象'abc'
上的,replace
方法并没有改变原字符串对象,而是创建了一个新字符串'Abc'
并返回,变量a
仍指向原有的字符串'abc'