Python程序的组成
- 程序由模块组成
- 模块由语句,函数,类,数据等组成
- 语句包含表达式
- 表达式建立并处理数据对象
Python注释
以 #
号开头,至直行尾
数字
整型 int
整型数是不带小数部分的数字。包括自然数,0,及负数。如:-5,10000,0
等。
整型数的字面值表示方式
- 十进制表示。例如:
10,20,1000,99999999
- 二进制表示(0b开头,后跟0~1)。例如:
0b111,0b101,0b11111111
- 八进制方式表示(0o开头,后跟0~7)。例如:
0o177
- 十六进制表示(0x开头,后跟0~9, A~F,a-f)。例如:
0x11,0xFF
进制转换:
- 十进制(逢十进一)
- 二进制(逢二进一)
- 八进制(逢八进一)
- 十六进制(逢十六进一)
练习
- 计算0xFFFF表示多少?
# 65535
- 计算0b1001表示多少?
# 9
- 计算0o71表示多少?
# 57
- 把13转为二进制表示?
# 0b1101
- 把18转为十六进制表示?
# 0x12
浮点型 float
浮点型数是带有小数部分的数字。
表示方式
- 小数形式。例如:
3.14,3.1,3.,0.14,.14
- 科学计数法,格式:
小数 e/E(正负号) 指数
。例如:6.18E-1,2.9979e8
复数 complex
分为两部分:实部(real)和虚部(image),虚部以j或J结尾。
表示方式
1j, (2j), 1+1J, 3-4J, (-100+100J)
布尔类型数 bool
用来表示真和假两个状态的类型。
表示方式
-
True
表示真(条件满足或成立),值为1
。 -
Flase
表示假(条件不满足或不成立),值为0
。
数值对象的构造(创建)函数
-
float(obj)
用字符串或数字转换为浮点数,如果不能出参数则返回0
-
int(x,base=10)
或int(x=0)
用数字或字符串转换为整数,如果不给出参数,则返回0
,base
是指字符串参数的进制 -
complex(r=0.0, i=0.0)
用数字创建一个复数(实部为r
, 虚部为i
) -
bool(x)
用x
创建一个布尔值(True/False
)- 返回假值的情况
None
False
0
0.0
0j
- 空字符串
-
()
空元组 -
[]
空列表 -
{}
空字典 -
set()
空集合
- 返回假值的情况
字符串
作用
用来记录文本(文字)信息
字符串的表示方法
在非注释中,凡是用引号括起来的部分都是字符串
- 单引号 `
- 双引号 "
- 三单引号 '''
- 三双引号 """
空字符串的字面值表示方式
'' # 单引号
"" # 双引号
'''''' # 三单引号
"""""" # 三双引号
非空字符串的字面值表示方式
'hello' # 单引号
"hello" # 双引号
'''hello''' # 三单引号
"""hello""" # 三双引号
单引号和双引号的区别
- 单引号内的双引号不算结束符
- 双引号内的单引号不算结束符
三引号字符串
作用
- 三引号字符串的换行会自动转换为换行符
\n
- 三引号内可以包含单引号和双引号
转义序列代表特殊字符
字符串字面值中,用字符反斜杠 \
后跟一些字符代表一个字符
字符串中的转义字符表
-
\'
一个单引号 -
\"
一个双引号 -
\\
代表一个反斜杠 -
\n
换行 -
\r
返回光标至行首 -
\f
换页 -
\t
水平制表符 -
\v
垂直制表符 -
\b
倒退 -
\0
空字符,字符值为0 -
\0oo
oo 为两位八进制表示的字符 -
\xXX
XX为两位十六进制表示的字符 -
\uXXXX
Unicode16的十六进制表示的字符 -
\UXXXXXXXX
Unicode32的十六进制表示的字符
字符串的运算
+
,+=
用于字符串的拼接-
*
,*=
用于生成重复的字符串x = 'abcd' + 'efg' print(x) # abcdefg x += '123' print(x) # abcdefg123 x = '123' y = x * 2 # '123123' x *= 3 # '123123123' x = 3 x *= '123' # x = '123123123'
raw字符串
作用
让转义字符 \
无效
字面值格式
r'字符串内容'
r"字符串内容"
r'''字符串内容'''
-
r"""字符串内容"""
a = 'C:\newfile\test.py' print(a) # 'C:\newfile\test.py' print(len(a)) # 16 a = r'C:\newfile\test.py' print(a) # 18 print(len(a)) # 'C:\\newfile\\test.py'
字符串的比较运算
小于
<
大于
>
等于
==
小于等于
<=
大于等于
>=
-
不等于
!=
'A' < 'B' # True 'B' < 'a' # True 'ABC' > 'AB' # True 'AD' < 'ABC' # False 'ABC' == 'abc' # False
字符串的索引操作
索引语法
字符串[整数表达式]
说明
Python序列都可以用索引(
index
)来访问序列中的对象(元素)Python序列的正向索引是从
0
开始的,第二个索引为1
,最后一个索引为len(s)-1
-
Python序列的反向索引是从
-1
开始的,-1
代表最后一个,-2
代表倒数第二个,第一个是-len(s)
s = 'ABCDE' print(s[0]) # A print(s[1]) # B print(s[4]) # E
空值 None
对象
表示不存在的特殊对象
作用
- 用来占位
- 用来变量解除绑定
表达式和运算符
表达式 expression
由一个数字或数字和运算符组成
作用
通常让计算机做一些事情并返回结果
运算符
算术运算符
- 加法
+
- 减法
-
- 乘法
*
- 除法
/
- 除法得到的数是浮点数,不会丢弃小数部分
1/3 = 0.3333333333333333
4/2 = 2.0
- 求余
%
- 地板除
//
- 除的结果去掉小数部分向下取整
7//3=2
8//3=2
3.25//1.5=2.0
- 幂运算
**
- 格式:
x ** y
,意为x
的y
次方 4 ** 2 = 16
3.0 ** 4.0 = 27
5.6 ** 1.418 = 11.506165654866916
运算符的优先级
详见 Python运算符优先级
基本输入输出函数
基本输入函数 input
作用
从标准输入设备上读取一个字符串(末尾的换行符会被删除)
格式
input('提示字符串')
说明
返回输入的字符串(仅python3)
基本输出函数 print
作用
将一系列的值以字符串形式输出到标准输出设备上,默认为终端
格式
print(value, ..., sep=' ', end='\n')
-
sep
两个值之间的分隔符,默认为一个空格 -
end
输出完毕后在流末尾自动追加一个字符,默认为换行符\n
变量 variable
用来绑定数据对象的标识符
变量的命名规则
- 变量名必须为字母或下划线开头,后跟字母或下划线或数字
- 不能使用Python的关键字命名
变量的命名示例
合法的变量名
a
,a1
,b
,bbb
,_aaa_
,_Abcdvara1b2c2
等
不合法的变量名
1a
,123
,$ABC
,+a
,-b
,#ab
,@ab
等
Python关键字
True
,False
,None
,is
,del
,if
,eli
等
赋值语句 statement
语法
变量名 = 表达式
变量名1 = 变量名2 = 表达式
变量名1 ,变量名2,... = 序列
作用
用于创建变量并将变量绑定(或关联)在一个对象上
注意点
- 当变量不存在时,创建该变量同时绑定在这个对象上
- 当变量存在时,改变此变量的绑定的对象
- 一个变量只能绑定一个对象
- 两个变量可以同时绑定同一个对象
Python中关联/绑定/引用的含义
- Python中变量没有类型,关联/绑定/引用都是指变量和一个对象的关联关系
- 交互模式下查看变量的绑定关系:
help('__main__')
序列赋值
语法
变量名1,变量名2,... = 对象1,对象2...
变量名1,变量名2,... = [对象1,对象2...]
变量名1,变量名2,... = (对象1,对象2...)
经典案例
问:已知有两个变量:a = 10000
,b = 20000
,在不创建任何新的对象的情况下,如何让a
和b
交换绑定的对象?
答: 序列赋值 a,b = b,a
a = 10000
b = 20000
print(a) # 10000
print(b) # 20000
a,b = b,a
print(a) # 20000
print(b) # 10000
is/is not
运算符
语法
x is y
x is not y
-
is not
与is
相反
作用
判断两个对象是否绑定同一个对象,如果是同一个对象返回Ture
,否则返回False
a = 1000
b = 1000
a is b # False
c = 1
d = 1
c is d # True
为什么上述的结果不同呢?
小整数对象池
CPython中整数-5 ~ 256
永远保存在小整数池中,不会释放并可以重复使用
id
函数与 del
语句
id
函数
作用
返回一个对象在内存中的地址
格式
id(对象)
del
语句
作用
用于删除变量,同时删除与对象的绑定关系。如果可能则释放对象
格式
del 变量名
Python的内存管理和引用计数
每个对象都会记录有几个变量引用自身,当引用的数量为0时,则对象被销毁,此种自动化内存管理的方式叫引用计数。
复合赋值算术运算符
-
y += x
等同于y = y + x
-
y -= x
等同于y = y - x
-
y *= x
等同于y = y * x
-
y /= x
等同于y = y / x
-
y %= x
等同于y = y % x
-
y //= x
等同于y = y // x
-
y **= x
等同于y = y ** x
比较运算符
- 小于
<
- 大于
>
- 等于
==
- 小于等于
<=
- 大于等于
>=
- 不等于
!=
语法
左表达式 < 右表达式
说明
比较运算符返回布尔类型的值
10 < 20 # True
1 + 10 > 2 + 8 # True
10 < 20 <= 30 # True
内建函数
内建数值型函数
abs(x)
取x
的绝对值round(number[, ndigits])
对数值进行四舍五入,ndigits
是小数向右取整的位数,负数表示向左取整pow(x, y, z=None)
相当于x ** y
或x ** y % z
divmod(x,y)
分别取商和余数-
sum(iterable[,start])
计算可迭代对象iterable
的和,结果再加上start
的值abs(-6) # 6 round(1.23456,4) # 1.2346 pow(2,3) # 8 pow(2,3,4) # 0 divmod(10,5) # (2,0) sum([1,2,3]) # 6 sum([1,2,3],1) # 7
其他函数
-
help()
查看帮助信息 -
dir()
查看对象中的属性、方法等 -
ord()
得到一个字符所对应的数字编码 -
chr()
实现由数字编码向字符的转化 -
type()
查看对象的类型;不会认为子类是一种父类类型 -
isinstance()
查看对象类型;会认为子类是一种父类类型
语句 statement
语句是由一些表达式等组成,通常一条语句可以独立执行来完成一部分事情并形成结果
语法
- 一条语句建议写在一行内
- 多条语句写在一行内需要用分号分开
换行
- 显示换行:
\
- 隐藏式换行:
- 所有的括号内换行,称为隐式换行
- 括号:
(),[],{}
if
语句
if
语句基本语法
作用
让程序根据条件选择性的执行某条语句或某些语句
说明
if
语句又叫条件语句,也叫分支语句
语法
if 真值表达式1:
语句块1
elif 真值表达式2:
语句块2
elif 真值表达式3:
语句块3
...
else:
语句块4
语法说明
-
elif
子句可以有0个,1个或多个 -
else
子句可以有0个或1个且只能放在此if
语句的最后 -
if
语句内部的语句通常要以4个空格的缩进来表示包含关系,相同的缩进格式代表相同的所属级别
if
语句的真值表达式
if 100:
print("真值")
# 等同于
if bool(100):
print("真值")
if
语句嵌套
-
if
语句本身是由多条子句组成的一条复合语句 -
if
语句可以作为语句嵌套到另一个语句的内部
条件表达式
表达式1 if 真值表达式 else 表达式2
作用
如果真值表达式的布尔环境值为True
,则执行表达式1并返回结果的引用,否则执行表达式2并返回结果的引用
num = int(input('输入一个数:')) # -19
-num if num < 0 else num # 19
pass
语句
作用
- 通常用来填充语法空白
-
pass
语句又名空语句
语法
pass
布尔运算
运算符
布尔非操作 not
语法
not x
作用
对x
进行布尔取值,如果bool(x)
为True
,则返回False
, 否则返回True
not True # False
not False # True
not 100 # False
布尔与操作 and
语法
x and y
,x
,y
代表表达式
作用
优先返回假值对象
-
当
bool(x)
的值为False
时,返回x
,否则返回y
True and True # True True and False # False False and True # False False and False # False 100 and 200 # 200 0.0 and 200 # 0.0
布尔或操作 or
语法
x or y
作用
优先返回真值对象
-
当
x
为True
时返回x
,否则返回y
True or True # True True or False # True False or True # True False or False # False 100 or 200 # 100 100 or 0.0 # 100 0 or 200 # 200 0 or 0.0 # 0.0
正负号运算符
语法
+ 表达式
- 表达式
in / not in
运算符
作用
用于序列,字典,集合中,用于判断某个值是否存在于容器中,如果存在则返回True
, 否则返回False
格式
对象 in 容器
s = 'welcome to tarena!'
'to' in s # True
'weimingze' in s # False
切片 slice
作用
从字符串序列中取出一部分相应的元素重新组成一个字符串
语法:
字符串[(开始索引b):(结束索引e)(:(步长s))]
注: () 内括起的部分代表可以省略
说明
- 开始索引是切片开始切下的位置
0
代表第一个元素,-1
代表最后一个元素 - 结束索引是切片的终止索引(但不包含终止索引)
- 步长是切片每次获取完当前索引后移动的方向和偏移量
没有步长,相当于取值完成后向后移动一个索引的位置(默认为
1
)当步长为正整数时,取正向切片:步长默认值为
1
, 开始索引默认值为0
, 结束索引的默认值为len(s)
-
当步长为负整数时,取反向切片:反向切片时,默认的起始位置为最后一个元素,默认终止位置为第一个元素的前一个位置
s = 'ABCDE' a = s[1:4] # a -> 'BCD' a = s[1:] # a -> 'BCDE' a = s[:2] # a -> 'AB' a = s[:] # a -> 'ABCDE' a = s[4:2] # a -> '' a = s[2:10000] # a -> 'CDE' 开始索引/结束索引可以越界 a = s[::2] # a -> 'ACE' a = s[1::2] # a -> 'BD' a = s[::-1] # a -> 'EDCBA' a = s[::-2] # a -> 'ECA' a = s[4:0:-2] # a -> 'EC'
Python3中常用的序列函数:
len(seq)
返回序列的长度max(x)
返回序列的最大值元素min(x)
返回序列的最小值元素sum(x)
返回序列中所有元素的和(元素必须是数值类型)any(x)
真值测试, 如果列表中其中一个值为真值则返回True,否则返回False-
all(x)
真值测试,如果列表中所有值为真值,则返回True,只要有一个为假,则返回Falses = "ABCD" print(len(s)) # 4 print(max(s)) # D print(min(s)) # A
字符串编码转换函数
-
ord(c)
返回一个字符串的Unicode编码值 -
chr(i)
返回i这个值所对应的字符
整数转换为字符串函数
-
hex(i)
将整数转换为十六进制的字符串 -
oct(i)
将整数转换为八进制字符串 -
bin(i)
将整数转换为二进制字符串
字符串的构造(创建)函数
-
str(obj='')
将对象转换为字符串
字符串方法
常用的字符串方法
详见1 [常用字符串方法](file:///C:/Users/iMing/Desktop/python_base_docs_html/str.html)
详见2 Python中的字符串
字符串方法的调用语法
对象.方法名(方法传参)
字符串格式化表达式
详见 [格式化字符串](file:///C:/Users/iMing/Desktop/python_base_docs_html/str.html)
作用
生成一定格式的字符串
语法
- 格式字符串
%
参数值 - 格式字符串
%
(参数值1, 参数值2, ...) - 格式字符串中的
%
为占位符,占位符的位置将用参数值替换
占位符和类型码之间的格式语法
% [格式语法] 类型码
-
左对齐+
显示正号0
补零宽度(整数)
-
宽度.精度(整数)
'%10d' % 123 # ' 123' '%-10d ' % 123 # '123 ' '%10s' % 'abc' # ' abc' '%-5s' % 'abc' # 'abc ' '%05d' % 123 # '00123' '%7.3f' % 3.1415926 # '003.142'