Python - 特点
- 简单易学
- 交互式编程
- 解释性
- 面对对象
Python - 基础
编码
默认情况下,py3源码以UTF-8编码,所有字符都是Unicode字符串
指定不同的编码:
# -*- coding: cp-1252 -*-
标识符
- 第一个字符必须是字母表中
字母
或下划线_
。 - 标识符的其他的部分由_字母_、_数字_和_下划线_组成。
- 标识符对大小写敏感。
注:在py3中,可以用中文等非ASCII标识符
- 第一个字符必须是字母表中
保留字(关键字)
注释
单行注释以
#
开头多行注释用多个
#
行与缩进
python以缩进区分行,缩进有问题时会报错
- python 通常一行写一条语句,如果语句很长可以在尾部加反斜杠
\
来实现多行语句 - 在
[]
、{}
、()
中的多行语句不需要反斜杠
- python 通常一行写一条语句,如果语句很长可以在尾部加反斜杠
数据类型
Number(数字)
int(整型)
bool(布尔型)
float(浮点型)
complex(复数)
String(字符串)
字符串用单引号
'
或者双引号"
括起来,同时使用反斜杠\
转义特殊字符,在字符串添加一个r
取消转义在python中,单引号和双引号的使用基本相同
字符串可以用
+
连接
字符串的截取语法格式(包含头不包含尾):
变量名[头下标:尾下标]
Python - 运算符
算术运算符
Python 中提供了 7 个基本的算术运算符,与数学方法中基本类似,见下表。(其中 a = 3, b = 4)
运算符 | 名称 | 示例 |
---|---|---|
+ | 加法 | a + b = 7 |
- | 减法 | a - b = -1 |
* | 乘法 | a * b = 12 |
/ | 除法 | a / b = 0.75 |
% | 取模 | a % b = 3 |
** | 乘方 | a ** b = 81 |
// | 整除 | a // b = 0 |
b // a = 1 |
赋值运算符
在 Python 中,允许使用复合赋值运算符,包括 +=, -=, *=, /=, %=, **=, //=
七种。
关系运算符
又叫 比较运算符 ,结果是一个布尔值,有 ==, !=, >, <, >=, <=
六种。
逻辑运算符
在 Python 中,逻辑运算符包括 and(与),or(或),not(非)
三种。
但其返回值不一定是布尔值!
运算符 | 举例 | 说明 |
---|---|---|
and | x and y | 如果 x 为 False,无需计算 y 的值,返回 x 的值;否则返回 y 的值 |
or | x or y | 如果 x 为 True,无需计算 y 的值,返回值为 x;否则返回 y 的值 |
not | not x | 如果 x 为 True,返回值为 False;否则返回值为 True |
成员运算符
在 Python 中,成员运算符 用于判断一个元素是否在某个序列中,包括in(存在),not in(不存在)
两种。
返回值是布尔值。
身份运算符
在 Python 中,身份运算符 用于判断两个变量的引用对象是否指向同一个内存对象5,包括is,is not
两种。
返回值是布尔值。
位运算符
指二进制位的运算,包括&(与),|(或),^(取反),~(取反),<<(左移),<<(右移)
六种。
Python - 交互语句
input
**input()**方法用于从标准输入读入一行文本
>>>str = input("please input something: ")
>>>print("your input: ",str)
**print()**方法用于打印输出,基本语法:
print(*objects, sep=' ', end='\n', file=sys.stdout)
objects –表示输出的对象。输出多个对象时,需要用 , (逗号)分隔
sep – 用来间隔多个对象
end – 用来设定以什么结尾。默认值是换行符 \n,我们可以换成其他字符
file – 要写入的文件对象
无论什么类型的数据都可以直接输出
数据的格式化输出类似于C中的printf
使用_end_分割字符,默认为换行
**str()和repr()**用于将输出的值转成字符串
Python - 条件控制语句
if
一般格式:
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
- 每个条件后用冒号
:
结束 - 用缩进划分语句块
- 如果循环体中就一条语句,你可以写在同一行
switch
python中没有Switch语句
Python - 循环控制语句
while
一般格式:
while condition:
statements_block_1
else:
statements_block_2
- 如果循环体中就一条语句,可以写在同一行
for
一般格式:
for variable in sequence:
statements_block_1
else:
statements_block_2
- python 中的for循环可以遍历任何可迭代对象,如一个列表或一个字符串
**range()**:在循环中使用,用于生成数列
for i in range(5) # 0 1 2 3 4
for i in range(0,6) # 0 1 2 3 4 5
for i in range(0,10,3) # 0 3 6 9
break
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。

continue
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。

Python - 迭代器
迭代器是访问集合元素的一种方式
迭代器是一个可以记住遍历的位置的对象
迭代器从集合的第一个元素开始访问,直到所有元素被访问完,且只能往前不能后退
两个基本方法:iter() 和 next()
>>>list = [1,2,3,4]
>>>it = iter(list) # 创建迭代器对象
>>>print(next(it)) # 使用next输出迭代器的下一个元素
1
>>>print(next(it))
2
>>>for x in it : print(x,end=" ") # 直接用常规for语句进行遍历
1 2 3 4
Python - 列表
类似于C中的数组,用[]
定义。
列表可以进行的操作包括_索引_,_切片_,_加_,_乘_,_检查成员_。

函数
关于列表的一些函数
len(list) # 列表元素个数
max(list) # 返回列表元素最大值
min(list) # 返回列表元素最小值
方法
通过append()
方法来添加或者更新项
list.append('nayst')
通过del()
方法来删除项
list.del('nayst')
其他方法
list.count() # 统计某个元素在列表中出现的次数
list.index() # 从列表中找出某个值第一个匹配项的索引位置
list.pop() # 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove() # 移除列表中某个值的第一个匹配项
list.reverse() # 反向列表中元素
list.sort() # 对列表进行排序
Python - 元组
Python 的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用()
定义。
虽然不能修改元组中的元组,但是可以连接元组
。
tup1 = (1,2,3)
tup2 = (4,5)
tup3 = tup1 + tup2
与字符串一样,元组之间可以使用 + 号和 * 号进行运算。这就意味着他们可以组合和复制,运算后会生成一个新的元组。
Python - 字典
字典用{}
定义,由键值对构成。
字典的每个 key=>value
(键值对)用冒号 :
分割,每个键值对之间用逗号 ,
分割。
字典内的键名不能重复且不可变。
函数
len(dict) # 计算字典中元素个数,即键总数
str(dict) # 将值转化为适于人阅读的形式,以可打印的字符串表示
方法
dict.clear() # 删除字典内所有元素
dict.copy() # 返回一个字典的浅复制
dict.fromkeys(list1,list2) # 创建一个新字典,以序列 list1 中元素做字典的键,list2 为字典所有键对应的初始值
dict.get(key,default=?) # 返回指定键的值,如果值不在字典中返回default值
dict.has_key(key) # 如果键在字典dict里返回 True,否则返回 False
dict.items() # 以列表返回可遍历的(键, 值) 元组数组
dict.keys() # 以列表返回一个字典所有的键
dict.values() # 以列表返回字典中的所有值
Python - 函数
定义函数的规则:
- 函数代码以
def
关键词开头,后接函数标识符名称和圆括号 - 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
- 内容以冒号
:
开始,并且缩进 return [表达式]
结束函数,不设置默认返回None

Python - 文件
open
**open()**方法将会返回一个file对象,基本语法:
open(filename,mode) # filename -- 包含了你要访问的文件名称的字符串值。 # mode -- 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
mode describt b 二进制模式。 w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被覆盖。如果该文件不存在,创建新文件。 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 a 打开一个文件用于追加。文件的指针将会放在文件的开头。如果该文件不存在,创建新文件。 + 以多模式打开。 read
读取一个文件的内容并作为返回值返回,基本语法:
fileObject.read([count]) # count -- 要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果未给定或为负则读取所有。
readline
从文件中读取单独的一行,包括
\n
字符,最后一行默认为空,基本语法:fileObject.readline(size) # size -- 从文件中读取的字节数
write
将参数写入到文件中,然后返回写入的字符数
close
关闭文件,刷新缓冲区里任何还没写入的信息,释放系统的资源,不再进行读写操作,基本语法:
fileObject.close()
tell
返回文件对象当前所处的位置, 它是从文件开头开始算起的字节数。
Python - 异常
try…except
用于捕捉异常
- 首先,执行 try 子句(在关键字 try 和关键字 except 之间的语句)。
- 如果没有异常发生,忽略 except 子句,try 子句执行后结束。
- 如果在执行 try 子句的过程中发生了异常,那么 try 子句余下的部分将被忽略。如果异常的类型和 except 之后的名称相符,那么对应的 except 子句将被执行。
- 如果一个异常没有与任何的 except 匹配,那么这个异常将会传递给上层的 try 中。
try…else
在 try 没有发生任何异常的时候执行。
try…finally
无论是否发生异常都将执行最后的代码
Python - 面对对象
- 类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。
- 类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。
- 数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。
- 方法重载:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override),也称为方法的重载。
- 实例变量:定义在方法中的变量,只作用于当前实例的类。
- 继承:即一个派生类(derived class)继承基类(base class)的字段和方法。继承也允许把一个派生类的对象作为一个基类对象对待。例如,有这样一个设计:一个 Dog 类型的对象派生自 Animal 类,这是模拟”是一个(is-a)”关系(例:Dog 是一个 Animal)。
- 实例化:创建一个类的实例,类的具体对象。
- 方法:类中定义的函数。
- 对象:通过类定义的数据结构实例。对象包括两个数据成员(类变量和实例变量)和方法。
类对象
使用 class 语句来创建一个新类,class 之后为类的名称并以冒号结尾,如:
class people:
name = ""
age = 0
\_\_weight = 0 # 两个下划线开头,声明该属性为私有,不能在类的外部被使用或直接访问。
def \_\_init\_\_(self, n, a, w):
self.name = n
self.age = a
self.\_\_weight = w
def \_\_secretFunction(self): # 两个下划线开头,声明该方法为私有方法,只能在类的内部调用 ,不能在类的外部调用。
print("you can't read me")
def speak(self):
print("%s say: I'm %d years old."%(self.name, self.age))
p = people("nayst", 10, 30)
p.speak() # nayst say: I'm 10 years old.
除 self 参数外,还包含 3 个参数,且这 3 个参数没有设置默认参数,因此在实例化类对象时,需要传入相应的 n ,a ,w 值(self 参数是特殊参数,不需要手动传值,Python 会自动传给它值)。
无论是类属性还是类方法,对于类来说,它们都不是必需的,可以有也可以没有。
self
类的方法中必须有首个参数self
,这里的 self
指向类的实例,而非类(self.class 指向类)。
类似于 PHP 中的 this
。
类的专有方法
专有方法开头和结尾各有 2 个下划线,且中间不能有空格。
- __init__ : 构造函数,在生成对象时调用
- __del__ : 析构函数,释放对象时使用
- __repr__ : 打印,转换
- __setitem__ : 按照索引赋值
- __getitem__: 按照索引获取值
- __len__: 获得长度
- __cmp__: 比较运算
- __call__: 函数调用
- __add__: 加运算
- __sub__: 减运算
- __mul__: 乘运算
- __truediv__: 除运算
- __mod__: 求余运算
- __pow__: 乘方