对象是python语言中最基本的概念,在python中处理的一切都是对象。
表1: Python的内置对象
对 象 类 型 | 类型名称 | 示例 | 简要说明 |
---|---|---|---|
数字 | int, float, complex | 1234, 3.14, 1.3e5, 3+4j | 数字大小没有限制,内置支持复数及其 运算 |
字符串 | str | str ‘swfu’, “I’m student”, ‘’‘Python ‘’’, r’abc’, R’bcd’ | 使用单引号、双引号、三引号作为定界 符,以字母r或R引导的表示原始字符串 |
字节串 | bytes | b’hello world’ | 以字母b引导,可以使用单引号、双引 号、三引号作为定界符 |
列 表 | list | [1, 2, 3],[‘a’, ‘b’, [‘c’, 2]] | 所有元素放在一对方括号中,元素之间 使用逗号分隔,其中的元素可以是任意 类型 |
字 典 | dict | {1:‘food’ ,2:‘taste’, 3:‘import’} | 所有元素放在一对大括号中,元素之间 使用逗号分隔,元素形式为“键:值” |
元 组 | tuple | (2, -5, 6), (3,) | 不可变,所有元素放在一对圆括号中, 元素之间使用逗号分隔,如果元组中只 有一个元素的话,后面的逗号不能省略 |
集 合 | set | frozenset {‘a’, ‘b’, ‘c’} | 所有元素放在一对大括号中,元素之间 使用逗号分隔,元素不允许重复;另外, set是可变的,而frozenset是不可变的 |
布 尔 型 | bool | True, False | 逻辑值,关系运算符、成员测试运算 符、同一性测试运算符组成的表达式的 值一般为True或False |
空 类 型 | NoneType | None | 空值 |
异 常 | Exception、 ValueError、 TypeError…… | Python内置大量异常类,分别对应不同 类型的异常 | |
文 件 | f = open(‘data.dat’, ‘rb’) | open是Python内置函数,使用指定的 模式打开文件,返回文件对象 | |
其 他 可 迭 代 对 象 | 生成器对象、range对象、 zip对象、enumerate对象、map对象、filter对象 等 | 具有惰性求值的特点 | |
编程单元 | 函数(使用def定义) 类 (使用class定义) 模块 (类型为module) | 类和函数都属于可调用对象,模块用来集中存放函数、类、常量或其他对象 |
python中有许多内置对象可供编程者使用,内置对象可直接使用,如数字、字符串、列表、del等;
Python属于强类型编程语言,Python解释器会根据赋值或运算来自动推断变量类型。Python还是一种动态类型语言,变量的类型也是可以随时变化的。
需要注意以下问题。
>>> x = 4
>>> print(type(x))
<class 'int'>
>>> x = 'Hello world.'
>>> print(type(x)) #查看变量类型
<class 'str'>
>>> x = [1,2,3]
>>> print(type(x))
<class 'list'>
>>> isinstance(3, int) #测试对象是否是某个类型的实例
True
>>> isinstance('Hello world', str)
True
>>> x = 3
>>> x
3
>>> x**2
9
字符串和元组属于不可变序列,不能通过下标的方式来修改其中的元素值,试图修改元组中元素的值时会抛出异常。
在Python中,允许多个变量指向同一个值 。
x = 3
y = 3
x += 6
内存变化如下:
del
命令删除不需要的值或显式关闭不再需要访问的资源,仍是一个好的习惯,同时也是一个优秀程序员的基本素养之一。数字是不可变对象,可以表示任意大小的数字。
>>> 999*99 #想乘
98901
>>> 999**99 #幂运算,等价于内置函数pow()
905697844958667709741956562802753100901389806139609538815019658231017504097064752403846139892968390554024852396172082441213697329994395340901282449426848216146865935961454742677324005498146550510264840271813301125214581059267630055862747172378231729576039278689152963667155086263379780844149098999
>>> 0.3+0.2
0.5
>>> 0.5-0.2
0.3
0.4-0.1 #实数相减,结果稍有偏差
0.30000000000000004
Python中的整数类型可以分为
0x
开头,如0x10
、0xfa
、0xabcdef
0o
开头,如0o35
、0o11
0b
开头如,0b101
、0b100
浮点数又称小数
15.2, 0.31, 3.14, -11.2
Python 3.6.x开始支持在数字中间位置使用单个下划线作为分隔来提高数字的可读性,类似于数学上使用逗号作为千位分隔符。
>>> 1_000_000
1000000
>>> 1_2_3_4
1234
>>> 3.14159_26535_89793_83246
3.14159265358979383246
字符串
常见的转义字符
表2: 转义字符
转义字符 | 含义 | 转义字符 | 含义 |
---|---|---|---|
\b | 退格,把光标移动到前一列位置 | \ | 一个斜线\ |
\f | 换页符 | \’ | 单引号’ |
\n | 换行符 | \” | 双引号” |
\r | 回车 | \ooo |
3位八进制数对应的字符 |
\t | 水平制表符 | \xhh |
2位十六进制数对应的字符 |
\v | 垂直制表符 | \uhhhh |
4位十六进制数表示的Unicode字符 |
Python运算符
表3: Python 运算符
运算符 | 功能说明 |
---|---|
+ | 算术加法,列表,元组,字符串合并与连接,正号 |
- | 算术减法,集合差集,相反数 |
* | 算术乘法,序列重复 |
/ | 真除法 |
// | 求整商,但如果操作数中有实数的话,结果为实数形式的整数 |
% | 求余数,字符串格式化 |
** | 幂运算 |
<,<=,>,>=,==,!= | (值)大小比较,集合的包含关系比较 |
or | 逻辑或 |
and | 逻辑与 |
not | 逻辑非 |
in | 成员测试 |
is | 对象同一性测试,即测试是否为同一个对象或者内存地址是否相同 |
|,^,&,<<,>>,~ | 位或,位异或,位与,左移位,右移位,位求反 |
&,|,^ | 集合交集,并集,对称差集 |
@ | 矩阵相乘运算符 |
Python关键字简要说明
表4: 关键字
关键字 | 含义 |
---|---|
False | 常量,逻辑假 |
None | 常量,空置 |
True | 常量,逻辑假 |
and | 逻辑与运算 |
as | 在import或except语句中给对象器别名 |
assert | 断言,用来确认某个条件必须满足,可以来帮助调试程序 |
break | 用来循环中,提前结束break所在层次的循环 |
class | 用来定义类 |
continue | 用在循环中,提前结束本次循环 |
def | 用来定义函数 |
del | 用来删除对象或对象成员 |
elif | 用在选择结构中,表示else if 的意思 |
else | 可以用在选择结构、循环结构和异常处理结构中 |
except | 用在异常处理结构中,用来捕获特定类型的异常 |
finally | 用在异常处理结构中,用来表示不论是否发生异常都会执行的代码 |
for | 构造for循环,用来迭代序列或可迭代对象中的所有元素 |
from | 明确指定从哪个模块中导入什么对象,例如from math import sin;还可以与 yield 一起构成 yield表达式 |
global | 定义或声明全局变量 |
if | 用在选择结构中 |
import | 用来导入模块或模块中的对象 |
in | 成员测试 |
is | 同一性测试 |
lambda | 用来定义lambda表达式,类似于函数(匿名函数) |
nonlocal | 用来声明nonlocal变量 |
not | 逻辑非运算 |
or | 逻辑或运算 |
pass | 空语句,执行该语句时什么都不做,常用作占位符 |
raise | 用来显式抛出异常 |
return | 在函数中用来返回值,如果没有指定返回值,表示返回空值None |
try | 在异常处理结构中用来限定可能会引发异常的代码块 |
while | 用来构造while循环结构,只要条件表达式等价于True就重复执行限定的代码块 |
with | 上下文管理,具有自动管理资源的功能 |
yield | 在生成器行数中用来返回值 |