2.1变量、名字和对象
Python所有数据——布尔值、整数、浮点数、字符串,甚至大型数据结构、函数以及程序——都是以对象(object) 的形式存在的。
Python是**强类型的(strongly typed),**你永远无法修改一个已有对象的类型。
在Python中用=给变量进行赋值。
注意:赋值操作并不会实际复制值,它只是为数据对象取个相关的名字。名字是对对象的引用,并不是对象本身。
如果想知道一个对象的类型,可以使用语句type(thing)。
type('abc')
输出:
<class ‘str’>
变量名只能包含以下字符:
- 小写字母(a~z)
- 大写字母(A~Z)
- 数字(0~9)
- 下划线(_)
python保留的关键字:
import keyword
print(keyword.kwlist)
输出:
[‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
2.2数字
Python本身支持整数以及浮点数。
运算符 | 描述 | 示例 | 运算结果 |
---|---|---|---|
/ | 浮点数除法 | 7/2 | 3.5 |
// | 整数除法 | 7//2 | 3 |
** | 幂 | 2**2 | 4 |
+、-、*和%省略。
2.2.1整数
- 0不能作为前缀放在其他数字前面
- 除数为0,任何一种除法运算都会产生Python异常
print(divmod(9,5))
输出:
(1, 4)
divmod()可以得到商和余数。
2.2.2优先级
总可以使用括号来保证运算的顺序与我们的期望一致,附录F有优先级。
2.2.3基数
在Python中整数默认使用十进制数,除非在数字前加前缀,显式的使用其他基数(base)。
在Python中,除了十进制外你还可以用其他三种进制的数字:
- 0b或0B表示二进制
- 0o或0O表示八进制
- 0x或0X表示十六进制
2.2.4类型转换
int()可以将数字有关的类型转换为int类型,int可以接受浮点数或由数字组成的字符串,但无法接受包含小数点或指数的字符串。
如果混合使用多种不同的数字类型进行计算,Python会自动地进行类型转换。
2.2.5一个int型有多大
在Python3,long类型不再存在,而int类型可以存储任意大小的整数,甚至超过64位。
在Python中处理超大数计算方面不会产生任何错误。
2.2.6 浮点数
浮点数也可以使用divmod()进行得到商和取余。
print(divmod(9.1,5))
输出:
(1.0, 4.1)
2.2.7 数学函数
附录C。
2.3 字符串
与其他语言不同,Python字符串是不可变的。无法对原字符串进行修改,但可以将字符串的一部分复制到新字符串。
2.3.1 使用引号创建
- ‘str’
- “str”
- ‘’‘str ‘’’
Python允许空串的存在,它不包含任何字符且完全合法。
2.3.2 使用str()进行类型转换
当调用print()函数或者进行字符串插值(string interpolation)时,Python内部会自动使用str()将非字符串对象转换为字符串。
2.3.3 使用\转义
Python允许你对某些字符使用\来进行转义操作。
2.3.4 使用+拼接
在Python中,你可以使用+将多个字符串或字符串变量拼接起来。
2.3.5 使用*复制
start = 'Na'*4 + '\n'
middle = 'Hey'* 3 + '\n'
end = 'goodbye'
print(start+start+middle+end)
输出:
NaNaNaNa
NaNaNaNa
HeyHeyHey
goodbye
2.3.6 使用[]提取字符
在字符串后面添加[],并在括号里指定偏移量可以提取该位置的单个字符。第一个字符的下标为0,以此类推。
偏移量也可以用-1、-2等表示,从右到左。
2.3.7 使用[start : end : step]分片
分片操作(slice)可以从一个字符串中提取子字符串。start起始偏移量,end终止偏移量,step步长。
- [:]
- [start:]
- [:end]
- [start:end]
- [start : end : step]
2.3.8 使用len()获取长度
len()求字符串的长度。
2.3.9 使用split()分割
使用内置的字符串函数split()可以基于分隔符将字符串分割成若干个子串组成的列表。
todos = 'get gloves,get mask,get cat vitamins,call ambulance'
print(todos.split(','))
输出:
[‘get gloves’, ‘get mask’, ‘get cat vitamins’, ‘call ambulance’]
如果不指定分隔符,那么split()默认将使用空白字符——换行符、空格和制表符。
2.3.10 使用join()合并
join()的调用顺序与split()相反,需要粘合用的字符串,然后指定需要合并的列表:string.join(list)。
todos_list = ['get gloves', 'get mask', 'get cat vitamins', 'call ambulance']
todos_string = (',').join(todos_list)
print(todos_string)
输出:
get gloves,get mask,get cat vitamins,call ambulance
2.3.11 熟悉字符串
- string.startwith(‘unknown’) 布尔型
- string.endwith(‘unknown’) 布尔型
- string.find(‘str’) 第一次出现的偏移量
- string.rfind(‘str’) 最后一次出现的偏移量
- string.count() 统计出现次数
- string.isalnum() 是否都是字母和数字
2.3.12 大小写对齐方式
P35 不常用。
2.3.13 replace()替换
使用replace()函数可以进行简单的子串替换。
str.replace(a,b,c),a代表被替换的子串,b代表替换的子串,c代表替换多少处
2.4练习
做了再说。