Python学习笔记(八)
Python基础总结
Python简介
Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。目前分为Python2.X和Python3.X两个版本,且Python3不向下兼容。
官方指南
1. Python2.7官方指南: http://pan.baidu.com/s/1dDm18xr
2. Python3.4官方指南: http://pan.baidu.com/s/1kTrDXIZ
3. Pyhton帮助文档(在线): https://docs.python.org/3/
基础语法
1. 运行脚本和编码
# !/usr/bin/env python
# -*- coding:utf-8 -*-
2. 注释
单行注释: #
多行注释: ”’(三个单引号)
3. 赋值
变量命名规则: (下划线或字母)+(任意数目的字母、数字或下划线),区分大小写。
4. 输入、输出
# 简单的输入输出
raw_input(“Please input: “) # Python2.x raw_input()
# input(“Please input: “) # Python3.x input()
print “hello world” # Python2.x 可以不用加()
print(“hello world”) # Python3.x 必须要加(),不然会报错! Python3.x print() 会是空行,而Python2.x print() 则会显示(),须注意!
# print(“This is “Note”“)
5. 特殊字符和转义字符
Unicode
转义字符: \
6. 控制语句
if,for,while,try.class,def,pass,assert,with,yield(返回一个元素),raise,import,from import,import as,in
7. 表达式
list,tuple,list,lambda
8. 函数
Python的函数支持递归、默认参数值,可变参数,但不支持重载。
9. 对象
10. 类库
Python类库提供了系统管理、网络通信、文本处理、数据库接口、图形系统、XML处理等功能。
环境配置
安装
1. 下载链接: https://www.python.org/downloads/
2. 安装过程中建议勾选 Add Python.exe to Path 即自动配置好环境变量。
3. 安装完成之后在终端输入 python 即可查看安装是否成功。
环境变量
1. 安装过程中若勾选 Add Python.exe to Path 则环境变量不需要再配置。
2. 如没有勾选,则将Python的安装路径配置到Path环境变量中。
IDE
1. Vim
2. PyCharm
3. eclipse
数据类型
1. type(Object)函数,返回对象的数据类型。
对于内建函数,type()会返回 build-in function..
对于用户自定义函数,type()会返回function.
对于对象,type()会返回type.
2. Python可对变量的数据类型进行强制转换,只需将数据类型作为函数名即可。不是所有的数据类型都能相互转换。 x = int(1.9)
数字类型(Numeric Types)
1. 整数: int
2. 浮点数: float
3. 复数: complex
number = 1 # int
# print(number)
print(type(number))
number = 1.0 # float 注意加了小数点 .0 就是浮点型了
# print(number)
print(type(number))
字符串类型(Text Sequence Type)
string = “hello world”
print(string)
print(type(string)) # type() 返回类型函数
布尔类型(Boolean)
1. 布尔类型使用2个常量表示True和False,注意首字母大写。
T = True # 布尔类型:True False;注意大小写
F = False
# t = true # 小写报错
print(type(T))
print(type(F))
序列类型(Sequence Types)
1. list,tuple和range
2. list类似Java中的数组,有序
3. tuple是不可变的list
4. range是python特有的,可方便产生等差的数列。
list1 = [1,2,True,”c”] # 列表类型;列表中的元素可为不同的类型;允许添加、修改、删除等操作
list2 = [] # 空列表
print(type(list1))
# print(type(list2))
tuple1 = (1,2,True,”c”) # 元组类型:和列表类似,不同在于list可变,tuple不可变,无法添加、修改、删除等接口;其内存处理较优越
tuple2 = (1) # 注意仅一个元素时候,要在后面加个 “,”,不然数据类型就不是元组了
tuple3 = (1,)
tuple4 = () # 空元组的赋值
print(type(tuple1))
# print(type(tuple2))
# print(type(tuple3))
# print(type(tuple4))
print(type(range(0)))
# print(list(range(5))) # range(stop) 产生0至stop(不包含stop)的等差为1的序列,可转换为list类型,便于查看理解
# print(list(range(1,4))) # range(start, stop[, step]) 产生start至stop(不包含stop)的等差为step的序列,step缺省为1
# print(list(range(8,1,-2))) # step可为负值
集合类型(Set Types)
集合类型包括set和frozenset(不可变set)。
set1 = {1,2,3,”1”,1,2} # 集合类型:无序不重复元素的集。基本功能包括关系测试和消除重复元素。
set2 = {} # 注意:这不是空集合的表示法,这表示空字典,下节会介绍
set3 = set() # 空集合的赋值
print(type(set1))
# print(type(set2))
# print(type(set3))
字典类型(Mapping Types)
字典类型即dict,由键和对应值成对组成;可对dict的键值进行访问、修改;对dict增加、删除键值操作。
dict1 = {‘Name’: ‘Zara’, ‘Age’: 7}; # 字典类型:以关键字为索引,来存储和析取值
dict2 = {} # 空字典的赋值
print(type(dict1))
# print(type(dict2))
流程控制
if条件语句
”’ 判断用户输入的整数是几位数(暂不考虑用户输入非整数)
为0 输出 It’s zero.
个位数 输出 It’s a number below 10
两位数 输出 It’s a two-digit number
三位数级以上 输出 It’s digit is more than two
”’
user_input = raw_input(“Please input a number: “) # Python 2
# user_input = input(“Please input a number: “) # Python 3
n = int(user_input) # 用户输入的类型为字符串,转换为整数类型
if (n==0):
print(“It’s zero.”)
elif (n<10):
print(“It’s a number below 10”)
elif (n<100):
print(“It’s a two-digit number”)
else:
print(“It’s digit is more than two”)
for循环
# for 语句实例
string = “python”
for i in string:
print(i) # 字符串处理
list = [“l”,”i”,”s”,”t”]
for i in list:
print(i) # 列表处理
for i in range(5):
print(i) # range()函数,range(5) 表示 0 到 4
while循环
# while语句实例
i=1
while(i<10):
print(i)
i += 1
continue、break的语法
1. continue: 跳出当前循环,执行下一次循环
2. break: 直接跳出循环,执行循环后的语句
函数
函数能提高应用的模块性和代码的重复利用率。
函数定义
1. 函数代码块以def关键词开头,后接函数标示符名称和圆括号,任何传入参数和自变量必须放在圆括号中间。
2. 函数内容以冒号起始,并且缩进。
3. 若有返回值,Return[expression]结束函数;不带return表达式相当于返回None。
4. 函数通常使用三个单引号”’来注释说明函数;函数体内容不能为空,可用pass表示空语句。
”’ some basic functions ”’
def func1(): # 函数无传入参数
print(“func1”) # 无return值
func1() # 函数调用
def func2():
return(“func2”) # return 字符串 “func2”
print(func2())
def func3(a,b): # 需传两个参数
print(“a+b = %d” %(a+b)) # print表达式,无return
func3(3,4)
def func4(a,b): # 需传两个参数
return (a+b) # return a+b 的值
print(func4(4,3))
函数调用
深入函数定义
1. 默认参数值: 最常用的一种形式是为一个或多个参数指定默认值,调用时,可不传入有默认值的参数。def ask_ok(hint, retries=4, complaint=’Yes or no, please!’): pass;
2. 关键字参数: 函数可以根据关键字函数的形式来调用。
3. 可变参数列表: 可变参数的表示为在其某参数名前加*,如*args。
内置函数(lamdba、filter…)
1. lamdba匿名函数
lamdba语句中,冒号前是参数,可以有多个,用逗号隔开,冒号右边的是返回值。g = lambda x : x*x # lambda 匿名函数
2. filter函数
filter函数会对指定序列执行过滤操作。
3. map函数
map函数会对指定序列做映射操作。
4. reduce函数
reduce函数会对指定序列做迭代操作。
模块
模块定义
1. 模块定义
模块就是一个保存了Python代码的文件(.py),模块能定义函数,类和变量。
2. 导入模块
通过模块名来访问函数,model.function(res)。
通过from fun import model 导入model中的指定函数fun。
3. 定位模块
当前目录–shell变量PYTHONPATH下的每个目录。
4. dir()函数
内置函数dir()用于按模块名搜索模块定义,返回一个字符串类型的存储列表(变量,模块,函数等待);无参数调用时,dir()函数返回当前定义的命名(dir不会列出内置函数和变量名,这些在__builtin__中定义)。
5. if__name__=’__main__’
直接运行.py文件, 则__name__的值是’__main__’;
而在import 一个.py文件后,__name__的值就不是’__main__’了;
从而用if __name__ == ‘__main__’来判断是否是在直接运行该.py文件。
标准模块
1. Python标准库,主要包括:操作系统接口、文件通配符、系统模块、字符串正则匹配、数学、互联网访问、日期和时间。
2. 存放位置: Python/lib
3. os—操作系统接口
4. glob—文件通配符
5. sys—系统模块
6. re—字符串正则匹配
7. urllib—互联网访问
8. datetime—日期和时间
包
1. 包就是文件夹,但是该文件夹下必须存在__init__.py文件。
2. 导入包: 仍然使用import,from…import语句
3. 从*导入: import*这样的语句理论上希望文件系统找到宝中所有的子模块。
4. 包内导入
from . import reverse # 同级目录 导入 reverse
from .. import frormats # 上级目录 导入 frormats
from ..filters import equalizer # 上级目录的filters模块下 导入 equalizer
第三方库
1. 安装第三方库: easy_install和pip(推荐使用)
2. 通常第三方库都会在Python官方的pypi.python.org中注册,找到库的名字即可通过pip install 安装。
3. 离线安装: pthon setup.py install。
面向对象
类和实例
1. 面向对象最重要的就是类(Class)和实例(Instance),类是抽象的模板,而实例则是根据类创建出的一个具体的对象,每个对象都有相同的方法,但各自的数据可能不同。
2. 实例
创建实例是通过类名+()实现的。May = Student() ,可以自由的给实例绑定属性,但是相同类的其他实例是没有这样的属性的。
3. __init__构造函数
__init__方法的第一个参数永远是self,表示创建实例的本身,因此在__init__方法内部,就可以把各个属性绑定到self指向创建的实例本身。
有了__init__方法,在创建实例的时候,就不能传入空的参数,必须传入与__init__方法匹配匹配的参数,但self不需要传,Python解释器自己会把实例变量传进去。
4. 私有变量
Python中定义私有变量,命名规则为前缀加两个下划线”__”。
封装
“封装”就是将抽象得到的数据和行为相结合,形成一个有机的整体;封装的目的就是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是通过外部的接口,特定的访问权限来使用类的成员。
继承和多态
1. Python类的继承
class Child(Person): # Child 继承 Person
2. isintance()以及issubclass()
isinstance()用于检查实例类型;
issubclass()用于检查类继承。
3. Python类的多态
多态的好处就是,当我们需要传入更多的子类,我们只需要继承 Person 类型就可以了,而方法既可以直不重写,也可以重写一个特有的。这就是多态的意思。调用方只管调用,不管细节,而当我们新增一种Person的子类时,只要确保新方法编写正确,而不用管原来的代码。
4. 子类重写构造函数
子类没有构造函数,表示同父类构造一致;子类也可以重写构造函数。
5. 多重继承
异常处理
标准异常
参考链接: http://www.cnblogs.com/feeland/p/4453574.html
捕捉异常
try: 需要捕捉异常的代码片段。
except: 捕捉某一模块的异常,须带异常模块名称,可带原因参数。一个try可以对应多个except语句。
else: else只可在所有except字句之后,且只有一个;其语句为所有except字句均没有发生异常的情况下执行。
finally: 无论异常发生与否,捕获与否都会执行的代码,可做清理行为。
抛出异常
当程序出现错误,Python会自动引发异常,也可以通过raise强制引发异常。一旦执行了raise语句,raise后面的语句将不会执行。
自定义异常
通过创建一个新的异常类,用户可以自定义异常。异常应该是典型的继承自Exception类,通过直接或间接的方法。自定义异常使用raise语句引发,而且只能通过人工方式触发。
IO流
文件夹及文件操作
1. Python使用os和shutil模块操作文件目录。
2. os可以执行简单的文件夹和文件操作,import os。
3. shutill模块提供了大量的文件的高级操作,特别针对文件拷贝和删除。主要功能为目录和文件操作以及压缩操作,import shutil。
4. 常用操作
判断路径或文件: os.path.exists(…)
路径名、文件名分割: os.path.split(…)
工作目录及创建文件夹操作: os.mkdir(…)
删除文件、文件夹: os.rmdir(…)
重命名文件、文件夹: os.rename(…)
复制、移动文件: os.copyfile(…)
文件读写
1. open(),close(),with open(…)as…
打开关闭之后一定close()关闭流。
2. file对象,内置属性(closed,mode,encoding,name,..)
3. read(),read(size),readline(),readlines()
4. write()
附件列表