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练习

做了再说。