一、Python介绍
Python安装:
下载Python安装程序:
https://www.python.org/ftp/python/2.7.14/python-2.7.14rc1.amd64.msi
在下载python的时候,一定要下载对应自己系统的版本
Pip
编辑器
中文乱码解决
python脚本乱码,在python脚本最前面加上
#coding:utf-8
讯享网
调整windows命令行乱码
讯享网chcp 65001
二、标识缩进
注释
python中单行注释采用 # 开头
python 中多行注释使用三个单引号(''')或三个双引号(""")
在编写python程序的时候,最好编写注释,方便修改代码,排错
标识(变量)
标识(变量)命名规则
1.在 Python 里,标识符由字母、数字、下划线组成
2.在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头
3.Python 中的标识符是区分大小写的
4.以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入
5.以双下划线开头的 __foo 代表类的私有成员;以双下划线开头和结尾的 __foo__ 代表 Python 里特殊方法专用的标识,如 __init__() 代表类的构造函数
6.命名时不能与保留标识符重名
标识缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断,python 最具特色的就是用缩进(空格)来写模块,缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
Python语句中一般以新行作为为语句的结束符,但是我们可以使用斜杠(\)将一行的语句分为多行显示
Python可以在同一行中使用多条语句,语句之间使用分号(;)分割,不同行不需要写分号
三、输入输出
输出
print
输出内容
print,
输出内容并且不换行
print type()
输出数据类型
输入
四、数据类型
numbers(数字)
Int(有符号整型)
a=100
float(浮点型)
b=1.29
long(长整型[也可以代表八进制和十六进制])
c=11
complex(复数)
d=1+2j
string(字符串)
定义
单行:str="sadasd"
多行:
str1='''
12
34
'''
下标
切片
通过变量名字来进行数据切割(取出字符串的数值)
print str[0:3:2]
第一个数是从哪个下标开始,第二个数是在哪个下标结束,第三个数是步长(隔几个数取一个)
增删改查
增(拼接字符串)
使用+进行拼接
注意:无法拼接不同类型,比如字符串和数字,需要使用str函数将数字强制转换为字符串,或者使用格式化
删
del , 推荐使用切片操作
改
.前的str为字符串名
str.strip()
去除两边空格,如果指定字符就是去除指定字符
str.lstrip()
去除左边的空格,如果指定字符就是去除指定字符
str.rstrip()
去除右边的空格,如果指定字符就是去除指定字符
查
.前的str为字符串名
str.find()
从开头查找到字符串的下标,找到返回第一次出现的位置,没找到返回-1
str.rfind()
从结尾查找到字符串的下标,找到返回第一次出现的位置(从开头数),没找到返回-1
转义符
格式化
特定格式符格式化
Python 支持格式化字符串的输出,尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中
格式化符号:

使用:
插入单个
print "萨达萨达%s" %"阿达"
插入多个
print "这是%s%d" %(str4,555)
可使用变量,也可直接输入
format()格式化函数格式化
Python2.6开始,新增了一种格式化字符串的函数str.format(), 它增强了字符串格式化的功能,基本语法是通过(}和:来代替以前的%,format函数可以接受不限个参数,位置可以不按顺序。
使用:
1.不设置指定位置,按默认顺序
print "阿达外网{}{}".format("22","asdas")
2.指定位置(0开始)
print "阿达外网{1}{0}".format("22","asdas")
可使用变量,也可直接输入
list(列表)
介绍
List(列表) 是 Python 中使用最频繁的数据类型
列表可以完成大多数集合类的数据结构实现,它支持字符,数字,字符串甚至可以包含列表(即嵌套)。
列表用 [ ] 标识,是 python 最通用的复合数据类型
a = ['fff', 2434, ['erwr', 242 ] ]
切片
截取从第一个指定位置到另一指定位置中间的值
讯享网sublist = list1[0:3] print sublist
截取指定位置的值
print list1[2]
列表增删改查
增:
append()
在list1后面追加元素
讯享网list1.append(1) print list1
list1.insert(1,'b') print list1
讯享网list2=[5,5] list1.extend(list2) print list1
删:
del list1[]
删除指定位置的值
del list1[0] print list1
讯享网list1.pop() print list1
list1.remove(1) print list1
改:=
直接对应位置赋值
讯享网list1[2]=10 print list1
查
in
判断元素是否在列表内
print 9 in list1 print 2 in list1
tuple(元组)
介绍
dictionary(字典)
介绍
字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型,列表是有序的对象结合,字典是无序的对象集合。
两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
字典用"{ }"标识,字典由索引(key)和它对应的值value组成
讯享网dict = {"name":"lp","age":"24"}
字典键要求
不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住
键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行
增加值
dict = {"name":"lp","age":"24"} dict["a"]="bbb"
五、运算符
算术运算符
以下假设变量: a=10, b=20:
+
两个对象相加
a+b输出结果30
-
得到负数或是一个数减去另一个数
a- b输出结果-10
*
两个数相乘或是返回一个被重复若千次的字符串
a* b输出结果200
/
x除以y
b/a输出结果2
%
返回除法的余数
b%a输出结果0
返回x的y次幂
ab为10的20次方,输出结果00000000
//
取整除-返回商的整数部分
9//2输出结果4 , 9.0//2.0 输出结果4.0
比较运算符
以下假设变量a为10,变量b为20:
==
等于-比较对象是否相等
(a == b)返回False
!=
不等于-比较两个对象是否不相等
(a != b)返回true
<>
不等于-比较两个对象是否不相等
(a <> b)返回true, 这个运算符类似!=
>
大于-返回x是否大于y
(a> b)返回False
<
小于-返回x是否小于y。所有比较运算符返回1表示真,返回0表示假。这分别与特殊的变量True和False等价。注意,这些变量名的大写。
(a < b)返回true
>=
大于等于-返回x是否大于等于y
(a>= b)返回False
<=
小于等于-返回x是否小于等于y
(a <= b)返回true
赋值运算符
以下假设变量a为10,变量b为20:
=
简单的赋值运算符
c=a+b将a+ b的运算结果赋值为C
==
C +=a等效于C=C+ a
加法赋值运算符
_=
减法赋值运算符
c-=a等效于c=c-a
*=
乘法赋值运算符
C*=a等效于c=C*a
/=
除法赋;值运算符
c/=a等效于C=C/ a
%=
取模赋值运算符
C%=a等效于C=C%a
=
幂赋值运算符
C=a等效于c=Ca
//=
取整除赋值运算符
c//=a等效于C=C// a
位运算符
&
按位与运算符:参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0
(a & b)输出结果12,二进制解释: 0000 1100
|
按位或运算符:只要对应的二个二进位有一个为1时,结果位就为1
(a | b)输出结果61,二进制解释: 0011 1101
^
按位异或运算符:当两对应的二进位相异时,结果为1
(a ^ b)输出结果49,二进制解释: 0011 0001
~
按位取反运算符:对数据的每个二进制位取反,即把1变为0,把0变为1,~x 类似于-x-1
(~a ) 输出结果-61,二进制解释: 1100 0011,在一个有符号二进制数的补码形式。
<<
左移动运算符:运算数的各二进位全部左移若干位,由"<<"右边的 数指定移动的位数,高位丢弃,低位补0。
a << 2输出结果240,二进制解释: 1111 0000
>>
右移动运算符:把">>"左边的运算数的各二进位全部右移若干位,">>"右边的数指定移动的位数
a >> 2输出结果15,二进制解释: 0000 1111
逻辑运算符
以下假设变量a为10,变量b为20:
and
x and y
布尔"与”-如果x为False, x and y返回False,否则它返回y的计算值。
(a and b)返回20
or
x or y
布尔"或"-如果x是非0,它返回x的值,否则它返回y的计算值。
(a or b)返回10
not
not x
布尔"非" -如果x为True,返回False,如果x为False,它返回True。
not(a and b)返回False
成员运算符
除了以上的一些运算符之外,Python还支持成员运算符,测试实例中包含了一系列的成员,包括字符串,列表或元组
in
如果在指定的序列中找到值返回True,否则返回False
x在y序列中,如果x在y序列中返回True
not in
如果在指定的序列中没有找到值返回True,否则返回False
x不在y序列中,如果X不在y序列中返回True
六、流程控制
条件语句
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块
用法

if 判断条件:
执行语句……
elif 判断条件:
执行语句……
else:
执行语句……
循环语句
程序在一般情况下是按顺序执行的,编程语言提供了各种控制结构,允许更复杂的执行路径,循环语句允许我们执行一个语句或语句组多次
While循环
while 语句用于循环执行程序,即在某条件下,循环执行某段程序,以处理需要重复处理的相同任务。
用法
基本
while 判断条件:
执行语句……
python中while可以和else一起使用
while 判断条件:
执行语句……
else:
执行语句……
for循环
Python for循环可以遍历任何序列的项目,如一个列表,一个字符串或者一个元组,字典
用法
讯享网for x in range(1,100,2): print x
注:range(1,100,2) 1到100,隔2取一个数(可随意替换为列表,字符串等)
循环控制
for x in range(1,99): pass
break语句用来终止循环语句,即循环条件没有False条件或者序列还没被完全递归完,也会停止执行循环语句。break语句用在while和for循环中
七、函数
介绍
自定义函数
定义规则
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()
任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数
函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明
函数内容以冒号起始,并且缩进
return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的return相当于返回 None
调用
直接输入函数名加参数进行调用
讯享网def cj(num1,num2): '''功能:两个数相乘''' return num1*num2 print cj(2,3)
参数
必备参数
函数里定义的参数个数就是调用时必须输入的必备参数(个数一致)
关键字参数
在传参时按定义时的参数名来指定参数的值
注意一但开始使用这种方式定义参数,后面的参数都必须使用此方式
默认参数
定义函数时,直接将参数定义一个默认值,此时如果不指定此参数,参数就是默认值,如果指定就是指定的值
注意如果定义了默认参数,那么之后的参数都必须是默认参数
不定长参数
使用*加参数,此时参数的个数不定,用户可随意输入,输入后值存储在以此参数名命名的元组中
注意,不定长参数可与其他参数混用,需要将其他参数写到前面
lambda函数
python使用lambda来创建匿名函数(单行函数)
介绍
lambda只是一个表达式, 函数体比def简单很多。
lambda的主体是一个表达式, 而不是一个代码块, 仅仅能在lambda表达式中封装有限的逻辑进去
lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数
虽然lambda函数看起来只能写 一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率
语法
lambda函数的语法只包含一个语句,如下:
sum=lambda x,y:x+y print sum(1,2)
八、类
面向对象技术简介
类(Class): 用来描述具有相同的属性和方法的对象的集合,它定义了该集合中每个对象所共有的属性和方法,对象是类的实例
类变量: 类变量在整个实例化的对象中是公用的,类变量定义在类中且在函数体之外,类变量通常不作为实例变量使用
数据成员: 类变量或者实例变量盱处理类及其实例对象的相关的数据
方法重写: 如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override) ,也称为方法的重写
实例变量:定义在方法中的变量,只作用于当前实例的类
继承:即一个派生类(derived class) 继承基类(base class) 的字段和方法,继承也允许把一个派生类的对象作为一个基类对象对待
实例化: 创建一个类的实例,类的具体对象
方法: 类中定义的函数
对象: 通过类定义的数据结构实例,对象包括两个数据成员(类变量和实例变量)和方法
创建与调用
使用class语句来创建一个新类,class之 后为类的名称并以冒号结尾
例
讯享网#coding:utf-8 class lei: name=None;age=None #定义属性为空 def info(self): #定义方法,类里方法第一个参数必须是self,传参时从第二个开始 '''打印一个人的属性''' print self.name,"-",self.age #使用self调用属性 P1=lei() #定义对象 P1.name="xr";P1.age=25 #给P1定义属性 P1.info() #调用类里的info方法
构造函数
在给对象定义属性时可以使用构造函数def __init__(self):一次定义
使用
#coding:utf-8 class lei: name=None;age=None #定义属性为空 def __init__(self,name,age): self.name=name self.age=age def info(self): #定义方法,类里方法必须有self参数 '''打印一个人的属性''' print self.name,"-",self.age #使用self调用属性 P1=lei("lpxr","20") #定义对象并对属性赋值 P1.info() #调用类里的info方法
继承
面向对象的编程带来的主要好处之一是代码的重用,实现这种重用的方法之一是通过继承机制,继承完全可以理解成类之间的类型和子类型关系。
在python中继承中的一些特点:
在继承中基类的构造(__init__()方法) 不会被自动调用,它需要在其派生类的构造中亲自专门调用。
继承后可以新加方法,也可以对原方法进行重写,直接对继承过来的方法重新定义即可重写
语法:(xzq2继承xzq)
class xzq2(xzq):
例子:
讯享网#coding:utf-8 class xzq: """下载器,需要有下载方法和数据储存方法""" data=[] def xz(self,url): """数据下载方法""" #通过url将数据储存在内存中 result=url self.data.append(result) def cc(self): """数据储存方法""" print self.data,"已存储" d1 = xzq() d1.xz("www.baudu.com") d1.cc() class xzq2 (xzq): def xz(self,url): '''新下载器''' print "新的下载方法" result=url self.data.append(result) d2=xzq2() d2.xz("iii") d2.cc()
九、文件操作
文件打开
python中使用 open 函数来打开文件,打开后才可以执行读写等操作
file = open ("文件路径","模式")
模式:
r:以只读方式打开文件,文件的指针将会放在文件的开头,这是默认模式。
rb:以二进制格式打开一个文件用于只读。 文件指针将会放在文件的开头。这是默认模式。
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
rb+:以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w:打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb:以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+:打开个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+:以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a:打开一-个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+:打开一一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+:以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
文件读取
首先打开文件,file为打开的文件的句柄
file.read([size])
从文件读取指定的字节数,如果未给定或为负则读取所有
file.readline([size])
读取整行,包括 "\n" 字符,写一次读一行,加上逗号就没有换行符
结合循环读取所有
while 1: str=file.readline().strip() if str: print str else: break
file.readlines([sizehint])
读取所有行并以列表形式返回
文件写入
首先打开文件,file为打开的文件的句柄
file.write("\n内容")
将字符串写入文件,没有返回值
十、异常处理
异常
异常即是一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行
一般情况下,在Python无法正常处理程序时就会发生一个异常,异常是Python对象,表示一个错误,当Python脚本发生异常时我们需要捕获处理它,否则程序会终止执行
异常处理
捕捉异常可以使用try/except语句,try/except语句用来检测try语句块中的错误,从而让except语句捕获异常信息并处理。
如果不想在异常发生时结束你的程序,只需在try里捕获它,让之后的程序继续执行
使用
讯享网#coding:utf-8 try: file=open("1.txt","r") file.write(54) except: print "文件打印失败" print 555
针对不同类型异常进行分别处理
例如对IOError类型和NameError类型的异常进行分别处理
#coding:utf-8 try: file=open("1.txt","r") print 1 / 0 print sd file.write(54) except IOError: print "IOError:文件打印失败" except NameError: print "NameError:语法错误" except: print "其他错误等待处理" print 555
python模块
介绍
Python模块(Module). 是一个Python 文件,以.py结尾,包含了Python 对象定义和Python语句
模块让你能够有逻辑地组织你的Python 代码段
把相关的代码分配到一个模块里能让你的代码更好用,更易懂
模块能定义函数,类和变量,模块里也能包含可执行的代码
urllib/urllib2
提供了一系列用于操作UPL的功能
re
正则表达式模块
beautiful soup
数据提取模块
threading
多线程模块
threadpool
线程池模块
socket
套接字模块

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/26508.html