Python
Python
一、 内置函数(bif)
在shell中查看python中的内置函数:
dir(__bulitins__)
完全由小写字母组成的为bif
查看用途:help()
二、字符串
1.拼接
字符串首尾拼接

2.转义字符\
2.1在字符串中使用单引号或双引号
例如打印Let's go!
使用转义字符,反斜杠
‘Let\’s go!'
3.原始字符串
打印含有反斜杠\的字符串
3.1
用反斜杠\转义反斜杠自身
print('C:\\now')
3.2
当需要在字符串中打印多个反斜杠时,利用原始字符串,在字符串前加一个小写英文字母r
str=r'C:\now'
但反斜杠不能放在字符串的结尾
4.打印多行字符串
4.1
使用转义字符\n
4.2
用三对双引号包围字符串
三、python的数值类型
主要包括整型、布尔类型、浮点型
e记法:即科学计数法的另一种表示形式(使用e记法的数都是浮点数类型)
例:1.5*10^11在python中表示为1.5e11
2.5*10^-7在python中表示为2.5e-27
1.布尔类型
在布尔值True和False参与运算时,将True看作1,False看作0(尽量不要应用)
2.类型转换
转换为整数类型:int()(取小数的整数部分)
转换为字符串类型:str()
转换为浮点数类型:float()
type():查看数据类型
四、算数运算符
+-* /
%:取余,结果为两数相除后的余数
**:幂运算操作符
例:3**6表示三的六次方
对于幂运算符与-的优先级:若出现在幂运算符左侧,-优先级更低,若出现在幂运算符右侧,-优先级更高
例如输入-3**2时,输出-9
输入3**-2时,输出0.111111111
//:取整,两数相除后的整数
五、比较操作符
< < = > >= == !=
输出布尔值True或False
六、逻辑操作符
1.二元操作符
or:至少有一边为真,则结果为真,都为假则为假
and:只有当两边都为真时,结果才为真,其余为假
2.一元操作符
not:将原本操作数将输出的布尔值取反
七、运算中的优先级问题
一般情况下,幂运算>正负号>算术操作符>比较操作符>逻辑运算符
对于幂运算符与-的优先级:若出现在幂运算符左侧,-优先级更低,若出现在幂运算符右侧,-优先级更高
逻辑运算符中的优先级:not>and>or
八、分支和循环
if elif else
break:跳出当前循环,退出程序
assert:断言,当这个关键字后边的条件为假的时候,程序自动崩溃并抛出AssertionError的异常
例:assert 3>4
可以利用这一功能,当需要确保程序中的某个条件一定为真才能让程序正常工作的话,就使用assert关键字
1.while循环
与if分支功能类似,但只要条件为真,就会不停地执行这段代码,一直循环,其中,循环的这段代码
被称之为循环体
2.for循环
格式如下:
for 目标 in 表达式:
循环体
其中,表达式一般为列表、元组、字符串
3.range()
表示整数
当括号中只有一个整数时,表示从0到当前整数分别循环

当括号中有两个整数时,左闭右开

step:步径,表示每一次递增的数是多少

break:跳出循环体,终止当前循环
continue:终止本轮循环,开启下一轮循环,但在开启下一轮循环前,会先判断是否符合条件,若不符合,则会退出循环
九、列表
1.创建一个列表
member=[a,b,c]
2.向列表添加元素
2.1append()
member.append(d)
print(member)
输出为[a,b,c,d]
print(len(member))
输出为4
2.2extend()
用一个列表扩展另一个列表
member.extend( [e,f])
输出为[a,b,c,d,e,f]
2.3insert()
选定任意位置插入元素,顺序索引都是从0开始
3.从列表中获取元素
可以通过元素的索引值index(),输入元素,返回索引值,其中,列表索引值是从0开始的
4.从列表删除元素
4.1remove()
member.remove(f)
输出为[a,b,c,d,e]
4.2del
del为语句,不是函数
del member[0]
输出为[b,c,d,e]
4.3pop()
将指定的元素从列表中删除
5.列表切片
利用索引值可以获得一个元素,切片可以一次性获取多个元素
例member[1:3]
结果为[c,d]
左闭右开,原列表没有变化
若没有前面的索引值,则从0开始,若没有后面的索引值,则到最后一个元素,若冒号两侧都没有索引值,则可以得到源列表的拷贝
6.列表操作符
6.1比较操作符
当列表中有一个元素时,直接比较这个元素的大小
当列表中有多个元素时,只比较第0个元素的大小,第0个元素大则列表大
字符串比较ASCII码的大小
6.2逻辑操作符
6.3连接操作符
+:将列表前后拼接
6.4 重复操作符
*:将列表复制n次
list3[123,456]
print(list3*3)
结果为[123,456,123,456,123,456]
6.5成员关系操作符
123 in list3
结果为True
123 not in list3
结果为False
若列表里含有另一个列表,不能判断最底层元素是否在列表里
例:list5=[123,[456,789],456]
789 in list5
结果为False
789 in list5[1]
结果为True
7.列表类型的内置函数(vif)
查看列表中的所有内置函数dir(list)
7.1reverse()
翻转列表
例:list1=[123,456]
print(list.reverse())
结果为[456,123]
7.2count()
计算它的参数在列表中出现的次数
例:list1=[123,456]
list2=list1*15
list2.count(123)
结果为15
7.3index()
索引,返回参数在列表中的位置
例:print2=[123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]
list3.index(123)
结果为0
还可以在指定范围内查找
例:list2.index(123,3,6)
结果为4
7.4sort()
对指定列表进行排序,默认为从小到大
十、元组(tuple)
元组是不可改变的类型,不可修改
1.创建元组
大部分使用小括号,也可以用中括号
2.元组的标志,
当想要创建一个空元组时,可以直接用一组小括号,但当里面至少有一个元素时,就要加上逗号
十一、字符串
1.字符串的格式化
1.1用format作位置参数
print("{a} love {b}.{c}".format("I","FishC","com"))
结果为’I love FishC.com‘
1.2用format作关键字参数
print("{a} love {b}.{c}".format(a="I",b="FishC",c="com"))
如果综合使用位置参数和关键字参数,位置参数必须在关键字参数之前

十二、函数
1.创建函数
def 函数名()
需要执行的语句
2.执行函数
函数名()
def add(num1,num2):
eturn (num1+num2)
3.形参与实参
4.函数与过程
函数有返回值,过程没有返回值
5.全局变量与局部变量
5.1全局变量与局部变量
全局变量的作用域是整个文件的代码段,在函数内部只可以访问全局变量,如果试图修改,就会启用屏蔽机制
屏蔽:(保护全局变量)当对全局变量进行修改时,会自动先创建一个与当前全局变量名相同的局部变量再进行修改
5.2global关键字
将局部变量变成全局变量
global a
6.内嵌函数和闭包
6.1global关键字
将局部变量变成全局变量
global a
6.2闭包
如果在一个函数内部定义了另一个函数,并且内部函数引用了外部函数的变量,这个内部函数就是一个闭包了
7.lambda 表达式
省下定义函数的过程,使代码更加精简
正常定义函数:
def ds(x):
return2*x+1
使用lambda表达式:
lambda x:2*x+1
7.1filter()
过滤器函数,把所有非true的内容过滤掉
7.2map()
将函数应用于可迭代对象的每一个元素,并返回一个迭代器
8.递归
在函数内部调用该函数
十三.字典
字典的元素采用键:值的形式,其中,键可以是整型,变量,字符串等,键可以代替索引
字典中没有顺序
1.字典的创建
dict1={1:'one',2:'two',3:'three'}
1.1dict()
工厂函数(类型),可以用于字典的创建,传入一个可迭代对象时,输出一个字典
fruits = dict([('apple', 2), ('banana', 3), ('orange', 4)])
print(fruits)
结果为{'apple': 2, 'banana': 3, 'orange': 4}
1.2fromkeys()
从序列键和值设置新的字典
dict1={}
dict1.fromkeys((1,2,3),none)
输出为{(1:none),(2:none),(3:none)}
1.3copy()
前拷贝,复制前变量的内容
与赋值的区别:赋值的两个变量的内容相同,在前一个变量改变时,后一个变量也跟着改变
前拷贝则只与最开始的变量内容相同,不会跟着前变量的改变而改变
2.字典的内置方法
2.1pop()
给定键弹出对应的值
2.2popitem()
得到字典中的一项
2.3setdefault()
与get方法类似,在原本的字典中添加新的项
2.4update()
用另一个字典对原字典进行更新,在原本的字典中加入新字典的项
十四、集合
set
字典与集合的区别:字典的特征为映射关系,如果用一个花括号包围一些元素,没有体现映射关系,则将其默认为集合
集合的特征为互异性,即不能在集合中出现相同的元素
集合没有顺序,也不支持索引。
1.集合的内置方法
1.1in/not in
在集合中,可以使用in和not in判断一个元素是否在集合中
1.2add/remove
add和remove内置方法可以用于在集合中添加或删除元素
2.不可变集合
frozen set
当使用frozen这个内置方法创建集合后,这个集合无法添加或删除元素,也无法修改
十五、文件
1.文件的打开方式

2.文件对象方法
2.1f.close()
当完成写入文件操作时,需要关闭文件,否则写入的内容有可能丢失
2.2f.read(size=-1)
从文件读取size个字符,当为给定size或给定负值的时候,读取剩余的所有字符,然后作为字符串返回
2.3f.readline()
以写入模式打开,如果文件存在,则在末尾追加写入
2.4f.write(str)
将字符串str写入文件
2.5f.writelines(seq)
向文件中写入字符串序列seq,seq应该是一个返回字符串的可迭代对象
2.6f.seek(offset,from)
在文件中移动文件指针,从from(0代表文件起始位置,1代表当前位置,2代表文件末尾)偏移offset个字节
2.7f.tell()
返回当前在文件中的位置
3.文件系统
3.1模块
模块是一个包含所有你定义的函数和变量的文件,其后缀名为.py。模块可以被别的程序引入,以使用该模块中的函数等功能
OS:操作系统
有了OS模块,我们不需要关心什么操作系统使用什么模块,OS模块可以帮我们选择正确的模块并使用
3.2os模块中关于文件/目录的常用函数
getcwd() :返回当前工作目录
chdir(path):改变工作目录
listdir(path='.'):列举指定目录中的文件名(‘.’表示当前目录,'..'表示上一级目录)
mkdir(path):创建单层目录,如该目录已存在抛出异常
makedirs(path):递归创建多层目录,如该目录已存在抛出异常,注意:‘E:\\a\\b’和'E:\\a\\c'并不会冲突
remove(path):删除文件
rmdir(path):删除单层目录,如该目录非空则抛出异常
remopvedirs(path):递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常
rename(old,new):将文件old重命名为new
system(command):运行系统的shell命令
os.curdir:指代当前目录('.')
os.pardir:指代上一级目录('..')
os.sep:输出操作系统特定的路径分隔符(Win下为'\\',Linux下为'/')
os.linesep:当前平台使用的行终止符(Win下为'\r\n',Linux下为'\n'
os.name:指代当前使用的操作系统(包括:‘posix’,'nt','mac','os2','ce','java')
十六、异常处理
try:
检测范围
except Exception[as reason]:
出现异常(Exception)后的处理代码
十七、类和对象
1.封装
把数据存储在列表中,用函数书写语句,都是封装
把数据和代码都封装,对象=属性+方法,属性是静态的特征,而方法是动态的
类(class)是对对象的大致描述,第一个字母用大写
容器:数据的封装
函数:语句的封装
类:方法和属性的封装
2.面向对象(OO)的特征
OO是面向对象的缩写,OOP为面向对象编程
2.1封装
一种信息隐蔽技术,使信息更加安全
2.2继承
继承是子类自动共享父类之间数据和方法的机制
class DerivedClassName(BaseClassName):
其中:括号外的是继承者即子类,括号内的为被继承者(基类、父类或超类)
如果子类中定义与父类同名的方法或属性,则会自动覆盖父类对应的方法或属性
2.3多态
不同对象对同一方法响应对象的行动
3.self
3.模块
模块就是程序
在另一个文件调用这个函数时,使用import
命名空间:在程序中使用其他程序中
十八、爬虫
1.url
url:网页地址,由三部分组成
1.1协议
http,https,ftp,file,ed2k
1.2服务器域名或ip地址(有时候要包含端口号)
每个协议都有对应的端口号,如http的默认端口为80
1.3资源的具体地址
目录或文件名等
2.urllib
python中的urllib库主要用于网页操作url,并对网页内容进行抓取和处理
urlopen():打开并读取网页
import urlib.request
response=urllib.rrequest.urlopen('http://www.fishc.com')
html=response.read()
print(html)
输出的结果为一个二进制字符串
使用encode()函数,将字符串(str)转换成指定编码格式的字节序列
decode()函数:将字节类型转变为字符串类型
2.1urllib.request
打开和读取URL
2.2urllib.error
包含 urllib.request 抛出的异常
2.3urllib.pase
解析 URL
2.4urllib.rebotparser
解析 robots.txt 文件
3.隐藏(修改headers)
有些网站会识别到python并拦截,因此需要模拟浏览器或普通用户对网站进行访问
3.1通过request的headers参数修改
直接设置一个字典作为参数传给request
3.2通过request.add_header()
在request生成之后,通过调用add_header把它加进去

浙公网安备 33010602011771号