字面量
- 字面量(literal)是以变量或常量给出的原始数据。在程序中可以直接使用字面量。
- 字面量的类型:
- 数值型
- 字符型
- 布尔型
- 字面量集合:列表(List)、元组(Tuple)、字典(Dict)和集合(Set)
- 特殊字面量:None
字面量插值
- 字面量插值,就是将变量、常量以及表达式插入的一种技术,它可以避免字符串拼接的问题,很多语言都支持了此功能。
- 字面量插值方法:
- 格式化输出
- 通过string.format()方法拼接
- Formatted string literals,字符串格式化机制(>=Python3.6)
- https://docs.python.org/3/reference/lexical_analysis.html#f-strings
格式化输出—%的用法
转换说明符 | 解释 |
---|---|
%d、%i | 转换为带符号的十进制整数 |
%o | 转换为带符号的八进制整数 |
%x、%X | 转换为带符号的十六进制整数 |
%e | 转换为科学计数法表示的浮点数(e小写) |
%E | 转换为科学计数法表示的浮点数()E大写 |
%f、%F | 转换为十进制浮点数 |
%g | 只能选择使用%f或%e格式 |
%G | 只能选择使用%F或%E格式 |
%c | 格式化字符及其ASCII码 |
%r | 使用repr() 函数将表达式转换为字符串 |
%s | 使用str() 函数将表达式转换为字符串 |
- 要指定位数,可以加上
.位数
,如%.2f
即代表两位小数 - 例子
>>> print("my name is michael")
my name is michael
>>> name = 'michael'
>>> print('my name is %s'%name)
my name is michael
>>>
>>> age = 18
>>> print('my name is %s, my age is %d'%(name,age))
my name is michael, my age is 18
>>> print('my name is %s, my age is %d, number is %f'%(name,age,3.1415))
my name is michael, my age is 18, number is 3.141500
>>> print('my name is %s, my age is %d, number is %.3f'%(name,age,3.1415))
my name is michael, my age is 18, number is 3.142
缺点为必须指定字面量的类型
format()方法
- 用法:str.format() 可以将
- 字符串 举例:
print("we are the {} and {}".format('Tom','Jerry'))
- 列表 举例:
print("we are the {0} and {1}".format(*listdata))
- 字典 举例:
print("my name is {name},age is {age}".format(**dictdata))
- 字符串 举例:
>>> name = 'Jerry'
>>> print('my name is {}'.format(name))
my name is Jerry
>>> age = 20
>>> print('my name is {1}, age is {0},{1}{0}{0}'.format(name,age))
my name is 20, age is Jerry,20JerryJerry
>>>
>>> list1 = [1,2,3]
>>> dict1 = {'name':'Tom','gender':'male'}
>>> print('my list is {},dict is {}'.format(list1,dict1))
my list is [1, 2, 3],dict is {'name': 'Tom', 'gender': 'male'}
>>> print('my number is {0}{1}{2}'.format(*list1))
my number is 123
>>> print('my name is {name}, gender is {gender}'.format(**dict1))
my name is Tom, gender is male
Tips:列表解包加一个星号,字典解包加两个星号。如:
*list1
、**dict1
。
F-strings:字符串格式化机制,支持Python3.6以上版本
- 使用方法:f'变量名'
- 注意:
- 大括号里面可以是表达式或函数
- 大括号内不能转义,不能使用''
>>> print(f'my name is {name}')
my name is Jerry
>>> print(f'my first number in my list is {list1[0]}')
my first number in my list is 1
>>> print(f'my name in my dict is dict1["name"]')
my name in my dict is dict1["name"]
# 可以插入表达式或函数
>>> print(f'my name is {name.upper()}')
my name is JERRY
>>> print(f'result is {(lambda x:x+1)(2)}')
result is 3
Tips:在F-strings中大括号内不能使用':',所以使用lambda表达式的时候需要将其括起来,然后再用一个括号传入变量的值,如
f'result is {(lambda x:x+1)(2)}'
。
文件读取
- 读取文件的操作步骤:
- 第一步:打开文件,获取文件描述符
- 第二步:操作文件描述符(读|写)
- 第三部:关闭文件
- 注意:
- 文件读写操作完成后,应该及时关闭
文件读取方法
- open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- 参数说明:
- name:文件名称的字符串值
- mode:只读r,写入w,追加a,默认文件访问模式为只读(r)
- buffering:寄存区缓存
- 0:不寄存
- 1:访问文件时会寄存行
- 大于1:寄存区的缓存大小
- 负值:寄存区的缓存大小,即为系统默认
- 参数说明:
- 文件读取方法:
- f = open('test.txt', 'r')
- f.read()
- f.close()
- 最优写法:
- with open('file名称', 'r') as f:
- 读取文件常用的方法:
- read():读取文件中所有内容(缺点:当文件内容非常大,大于内存时,无法使用这个方法)
- readable():判断文件是否可读
- readline():每次读取一行(包括行结束符),返回的是一个字符串对象,保持当前行的内存
- readlines():读取所有行的内容,放到列表中
f = open('data.txt')
print(f.readable())
# print(f.readlines()) #以列表形式读
print(f.readline()) #逐行读
print(f.readline())
print(f.readline())
f.close()
# 不用再单独关闭文件,可以将文件打开后操作完毕后自动关闭
with open('data.txt') as f:
print(f.readlines())
-
结果为:
Tips:
readlines
是将文件的所有内容以列表形式读出,以换行符为分隔符;readline
是逐行读出;with open()
可以将文件自动关闭。读取图片文件,需要将mode改为rb
即二进制模式。正常的文本,可以使用rt
,也就是默认格式。
- 常用的读文件方法
# 标准的读数据方法
with open('data.txt') as f:
while True:
line = f.readline()
if line:
print(line)
else:
break
Json格式转化
- Json是什么?
- 轻量级的数据交换格式
- 友好,易于读写(比xml,protobuf要好)
- 对机器友好,易于解析和生成
- 由列表和字典组成
- 使用场景
- 生成:将对象生成为字符串,存入文件、数据库、网络传输等
- 解析:解析来自文件、数据库、网络传输的字符串为Python对象
- 跨语言的数据交换:比如Python和c / c++ / java /javascripts 的数据交换
Json使用方式
- 如何使用Json(json是标准库)
- import json
- 常用的几种方法
- json.dumps(python_obj):把数据类型转换为字符串
- json.loads(json_string):把字符串转换为json
- json.dump():把数据类型转换为字符串并存储到文件中
- json.load(file_stream):把文件打开,把里面的字符转换为数据类型
import json
data = {
'name':['jerry','nickname'],
'age':18,
'gender':'male'
}
# 转化为string类型
data1 = json.dumps((data))
print(type(data))
print(data1,type(data1))
# 转换为dict类型
data2 = json.loads(data1)
print(type(data2))
Json的其他用法后面章节详细讲解
下一节:Python错误与异常,包括语法错误与定位、异常捕获、异常处理、自定义异常。