- 浏览: 1325766 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (896)
- spring4 (14)
- hibernate3 (26)
- spring2 (35)
- struts2 (55)
- struts1 (15)
- 设计模式 (15)
- java (172)
- mybatis3 (11)
- sql (17)
- mysql (13)
- jbpm (10)
- J2EE (45)
- tools (29)
- js (83)
- 数据结构 (13)
- Html (26)
- web (22)
- flex (33)
- Oracle (57)
- linux (49)
- 算法 (6)
- 其它 (12)
- easyui (1)
- bootstrap (13)
- xml (2)
- tomcat (1)
- redis (10)
- activemq (2)
- webservice (11)
- maven (2)
- springboot (1)
- ubuntu (1)
- python (14)
- rocketmq (1)
- springcloud (10)
- opencv (1)
最新评论
-
mike_eclipse:
Hashtable是线程不安全的吗?好像是线程安全的吧?
多线程之集合类 -
July01:
推荐用StratoIO打印控件,浏览器和系统的兼容性都很好,而 ...
lodop打印控件 -
xingcxb:
经过测试,假的,依旧会出现中文乱码!!!!store方法里面采 ...
java 读写Properties文件,不会出现中文乱码 -
tiger20111989:
...
Spring注解方式管理事务 -
zw7534313:
...
js 文字上下滚动 无间断循环显示
输入函数input()和raw_input()
>>> a = input()
>>> c = raw_input()
>>> type(c)
输出函数print()
注释
行内注释用#,在一行的#之后被认为是注释。
多行注释用一对三个引号("""或'''都行,在Python中单引号和双引号没有区别)将注释内容引起来。
运算符
/:除运算,结果为浮点数(Python3为浮点数,Python2为整数(商))
//:模运算(在2.7中/和//都是模运算),得到两数相除的商
**:幂运算
*:乘运算,可以在序列中用这个符号定义序列,如lst = [3] * 4,lst为[3, 3, 3, 3],不限于列表,字符串和元组等也可以使用
%:结果为两数相处的余数
+=、-=、*=等:Python中可以使用+=、-=等运算,但是不可以使用“i++”这种运算方式
>=或<=:大于(小于)或等于,Python中可以这样使用:if a <= xxx <= b: pass
位运算符:&(位与),|(位或),^(位异或:当两个对应的二进位不同时,结果为1),~(位取反:对数据的每个二进制位取反,即把1变为0,把0变为1),<<或>>(左移位或右移位)
注:
divmod(a, b):返回a除以b的商和余数的元组(参数a和b不限于整数)
变量
变量类型:Python中的变量在声明时不需要指定其类型,它会根据你的赋值自动判断,其实变量本身是没有类型的,类型指的是这个变量引用的对象的类型;在某些编程规范中,有一种约定是变量名中不要加类型说明,比如:a_int = 3, b_list = [1, 2, 4], c_obj = C()。因为Python是动态语言,它的变量的类型是随时可变的。
变量删除:删除变量使用del,删除某个变量“del var”,删除多个变量“del var1, var2, var3”,对于变量的赋值和删除,变量只是对它的引用,删除时并不能直接删除其引用的的对象,删除的是这个变量本身。
垃圾回收:Python中的每个对象都有一个引用计数,当其引用计数为0时,即没有其他对象引用它了,Python回收机制就会回收它。其实由于Python中的垃圾回收机制,你并不能真正删除任何东西,由Python自动判断它“没有人用了”才会删除它。
变量赋值:多个变量赋同一个值,可以这样:a = b = c = 'python';多个变量同时赋值,可以这样:a, b, c = 1, 2, 3; 对于变量值的交换,Python不需要中间变量,直接交换即可:var1, var2 = var2, var1。
global:作用域为整个文件的变量为全局变量,在函数中如果想要修改全局变量的值,则需要使用关键字global声明此变量为全局变量。
nonlocal:Python2中没有这个关键字,Python3中才有,如果想要修改外层非全局作用域中的变量时,需要使用关键字nonlocal声明此变量为局部变量。
注:当前版本的Python的关键字,使用keyword模块的kwlist查看即可。
数字类型
int:有符号整数(如果超出范围会自动转换为长整数)。
long:长整数(其范围取决于用户的虚拟内存),Python3中已没有此类型,只有int类型了。
float:浮点数,即小数。
complex:复数(虚数在数字末尾加字母j表示),比如:3+2j或complex(3, 2)。
bool:布尔值(1代表True,0代表False,True+False的结果为1),另外True和False在Python2中并不是关键字,在Python3中才列入了关键字。
序列
元组:是一个有序的不可变的序列,用括号()表示,其中的元素用逗号分隔:
字符串:字符串可以看成是由单一数据类型(字符)组成的不用逗号表示的元组,从序列的角度来看它们其实是一样的;
不可变:元组和其元素是不可变的,但是元素可以是可变类型,比如list,这个点可能有点绕,可以自己练习下加深理解;
有序:元组中的元素是有顺序的,可用下标或分片等方法对其进行读取的操作;
空元组和单元素元组:当元组中只有一个元素时,一定要加上逗号,不然Python不会将其当做元组处理的,只会当做一个普通的括号来处理,
当然,空元组可以直接使用()表示;
新元组:可以使用“+”对多个元组相加,返回一个新的元组;使用下标截取也会返回新的元组。
2、列表:是一个有序的可变的序列,使用中括号[]表示,元素之间用逗号分隔:
可变:列表本身和其中的元素都是可以进行“增删改查”的(如果元素类型允许);
元素类型:一个列表的每个元素的数据类型可以不同,可以是任意数据类型;
有序:列表的元素之间是有顺序的,可用下标或分片等方法对其进行读或改的操作;
新列表:两个列表相加“+”会返回一个新的列表,包含两个列表的所有元素,并保有原有的顺序;对列表进行切片截取,返回的也是一个新的列表。
切片:切片使用形如list_[start:stop:step]的语句,start和stop表示下标,正数的下标表示正序(从左到右,起始数为0),负数的下标表示反序
(从右到左,起始数为-1),step为大于0的正整数时表示正序的切片步长,step为小于0的负整数时表示反序的切片步长;step一般不常用,默认为1,
当没有指明对应的start/stop时,默认为正序或反序的起始或结束下标。
3、集合:是一个无序的可变的序列,可以用大括号{}表示(元素用逗号隔开),也可以用set()定义:
无序:因为是无序的,不能用下标进行读取等操作;
集合运算:它和数学上的集合概念相同,不可以有相同的元素,元素无序,可以进行交集、并集和差集运算;
可变和不可变:每个元素都可以是不同的不可变类型,但集合本身是可变的。
4、字典:是一个无序的可变的序列,使用大括号{}表示,字典的元素使用键值对(key: value)表示,元素之间用逗号分隔:
新建字典:新建一个字典有几种特别的方法,比如:dict([('a', 'b'), (11, 22), (33, 'cc')]),{i: 'python %s' % i for i in range(3)},
以及dict(a='aaa', b='bbb', c='ccc')(这种方式的key只能以参数名的形式定义,最后会自动转换成对应的字符串);
可变:可以对字典进行“增删改查”操作;
key和value:字典中的元素(键值对)都是独立的,所有的key和value可以是不同数据类型,但是key必须是不可变的类型(不可以是列表等可变的类型),
且字典中每一个key都是唯一的,value则可以是任意数据类型;
无序:字典的元素(键值对)是无序的,不可用下标等有序序列的方法对其进行操作,只能通过元素的key来确定某一个元素(key是唯一的,value可以不唯一)。
注:
1、应用类型:列表,集合和字典属于可变类型,无论在什么地方对它的操作都是基于它本身的,所以需要小心使用,比如将一个列表传入函数后
(对于函数来说就是一个参数),如果函数有对它进行了修改操作,那么执行函数后,这个列表也就改变了,如果需要使用它的,但又不想影响到它本身
,可以使用深度拷贝(即copy模块的deepcopy()方法复制一个它拷贝)。
>>> ch = 'hello python!'
>>> ch[4]
'o'
>>> ch[:4]
'hell'
>>> ch[4:]
'o python!'
tup = (3, 'aa', {'a': 'b'})
>>> #列表
>>> lst = []
>>> lst = lst + [3, 'a', {'hello': 'python!'}]
>>> lst
[3, 'a', {'hello': 'python!'}]
>>> lst[:2]
[3, 'a']
>>> lst[2:]
[{'hello': 'python!'}]
>>> # 集合
>>> se = set([1, 2, 3])
>>> se
{1, 2, 3}
>>> se1 = set((2, 3, 3, 5, 6))
>>> se1
{2, 3, 5, 6}
>>> se & se1 #交集
{2, 3}
>>> se | se1 #并集
{1, 2, 3, 5, 6}
>>> se - se1 #差集
>>> #字典
>>> dct = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
>>> dct[1] = [1, 2, 3, 4]
>>> dct
{1: [1, 2, 3, 4], 2: 'b', 3: 'c', 4: 'd'}
>>> dct[0] = 'hello'
>>> dct
{0: 'hello', 1: [1, 2, 3, 4], 2: 'b', 3: 'c', 4: 'd'}
条件和循环控制
if条件控制:基本结构为:if-elif-else,if和elif后面跟一个布尔表达式,若值为真,则执行对应子语句块,若值为假,则跳过此条件块。
while循环控制:while后面跟一个布尔表达式,若值为真,则执行其中的语句块,执行完后再一次判断布尔表达式的值和执行语句块,然后无限重复判断和执行,直到布尔表达式的值为假。可以使用continue结束本层循环的本次循环,而使用break则结束本层的整个循环。
for循环:for用于遍历一个可迭代对象,使用continue可以结束本层循环的本次循环,而使用break则结束本层的整个循环。
for和while的else:当for或while正常执行完后接着执行else中的内容,当for或while循环中使用break终止跳出循环后就不会执行else中的内容了。
简单语句组:if、while和for语句中的语句块如果只有一条简单的语句,这时候条件判断和字句块可以写在一行,比如:if a > 1: print(a)。
曾经缩进
>>> for i in range(5): # break中断循环后就不会执行else中的内容了
if i % 2 == 1:
break
print(i)
else:
print('end')
函数
函数定义:Python中函数以def定义,用于实现某种功能,若是某段代码被多处使用,不妨将它定义成一个函数,或是它用于实现特定的功能,也可以将它定义成一个函数。
函数调用:一个函数func(),func为函数名,是这个函数引用(指向函数的地址);而加上括号func()则表示执行这个函数。
函数作用域:在函数中定义的变量为局部变量,在函数体外不可引用它。
参数默认值:在定义函数时可以为参数指定默认值,比如func(a=0),当没有传入该参数时,就会使用默认值,传参时如果没有指定参数名,则会按函数定义的顺序给参数赋值。
动态参数:使用*(元组)和**(字典)来定义函数的动态参数,动态参数有一个特别的写法“*args”和“**kwargs”,这两个写法合在一起就表示所有参数(“万能”的参数表示法),比如func(*var_tuple, **var_dict),*var_tuple会将传进来的参数以元组的形式存在var_tuple中,**var_dict会将以特定形式传进来的参数以字典的形式存在var_dict中。
函数加载:在文件中函数不会被运行,Python只是去加载它,除非它被引用执行;
文件加载:Python文件有一个系统变量为“__name__”,默认值为当前文件名,但是被当作主文件执行的文件默认值为“__main__”,所以可以使用"if '__name' == '__main__':"作为文件的执行入口。
函数返回值:若是这个函数没有使用return指定这个函数的返回值,那么这个函数的返回值默认为None。
匿名函数:使用lambda来创建一个简单的匿名函数,语法为:lambda [arg1 [,arg2,.....argn]]: expression。lambda的主体只是一个简单的表达式,而不是复杂的代码块,函数返回的是表达式的值。
注:
参数传值:如果定义函数时既有普通参数,也有指定默认值的参数,那么普通参数必须在前面。
参数默认值:建议不要定义为可变类型,因为本质上说,参数也是函数的变量,如果是可变类型,那么多次调用后这个默认值可能就不再是你定义的初始值了,最直观的表现就是两次相同的调用,却返回了不同的值。
作用域:Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,
def func(a1,a2):
... print(a1)
... print(a2)
def func1(*args1,**args2):
... print(args1)
... print(args2)
... print(args1[2])
... print(args2['name'])
...
>>> res=func1(1,2,3,name='san',age=17)
(1, 2, 3)
{'age': 17, 'name': 'san'}
3
san
>>> def func2(a1,lst=[]):
... lst.append(a1)
... return lst
...
>>> list=func2(200,[])
>>> list
[200]
迭代器与生成器
异常处理
try...except...else...如果try语句中没有异常发生就会继续执行else中的语句,如果发生了异常就不会去执行else中的语句了。
try:
# 此处为可能会发生异常错误的代码,如果发生异常将会抛出异常
pass
except ValueError as e:
# 捕捉指定的异常ValueError,并取别名为e
# 如果捕捉到指定的异常(如ValueError),就会在进入这里进行处理
pass
except (TypeError, NameError):
# 可以一次指定捕获多个异常,多个异常一元组形式指定即可
pass
except:
# 没有指定异常时,表示捕捉所有异常
# 如果抛出的异常在前面所有指定的异常都没有捕捉到,那么就会进入这里,
pass
finally:
# 无论是否发生异常都会执行此处代码
pass
打印异常信息:可以使用trackback模块的format_exc()函数打印异常信息
抛出异常:使用“raise MyError”来抛出异常,并在except捕获这个异常
自定义异常:自定义的异常类,需要直接或间接继承Exception类,且一般以Error作为后缀
>>> a = input()
>>> c = raw_input()
>>> type(c)
输出函数print()
注释
行内注释用#,在一行的#之后被认为是注释。
多行注释用一对三个引号("""或'''都行,在Python中单引号和双引号没有区别)将注释内容引起来。
运算符
/:除运算,结果为浮点数(Python3为浮点数,Python2为整数(商))
//:模运算(在2.7中/和//都是模运算),得到两数相除的商
**:幂运算
*:乘运算,可以在序列中用这个符号定义序列,如lst = [3] * 4,lst为[3, 3, 3, 3],不限于列表,字符串和元组等也可以使用
%:结果为两数相处的余数
+=、-=、*=等:Python中可以使用+=、-=等运算,但是不可以使用“i++”这种运算方式
>=或<=:大于(小于)或等于,Python中可以这样使用:if a <= xxx <= b: pass
位运算符:&(位与),|(位或),^(位异或:当两个对应的二进位不同时,结果为1),~(位取反:对数据的每个二进制位取反,即把1变为0,把0变为1),<<或>>(左移位或右移位)
注:
divmod(a, b):返回a除以b的商和余数的元组(参数a和b不限于整数)
变量
变量类型:Python中的变量在声明时不需要指定其类型,它会根据你的赋值自动判断,其实变量本身是没有类型的,类型指的是这个变量引用的对象的类型;在某些编程规范中,有一种约定是变量名中不要加类型说明,比如:a_int = 3, b_list = [1, 2, 4], c_obj = C()。因为Python是动态语言,它的变量的类型是随时可变的。
变量删除:删除变量使用del,删除某个变量“del var”,删除多个变量“del var1, var2, var3”,对于变量的赋值和删除,变量只是对它的引用,删除时并不能直接删除其引用的的对象,删除的是这个变量本身。
垃圾回收:Python中的每个对象都有一个引用计数,当其引用计数为0时,即没有其他对象引用它了,Python回收机制就会回收它。其实由于Python中的垃圾回收机制,你并不能真正删除任何东西,由Python自动判断它“没有人用了”才会删除它。
变量赋值:多个变量赋同一个值,可以这样:a = b = c = 'python';多个变量同时赋值,可以这样:a, b, c = 1, 2, 3; 对于变量值的交换,Python不需要中间变量,直接交换即可:var1, var2 = var2, var1。
global:作用域为整个文件的变量为全局变量,在函数中如果想要修改全局变量的值,则需要使用关键字global声明此变量为全局变量。
nonlocal:Python2中没有这个关键字,Python3中才有,如果想要修改外层非全局作用域中的变量时,需要使用关键字nonlocal声明此变量为局部变量。
注:当前版本的Python的关键字,使用keyword模块的kwlist查看即可。
数字类型
int:有符号整数(如果超出范围会自动转换为长整数)。
long:长整数(其范围取决于用户的虚拟内存),Python3中已没有此类型,只有int类型了。
float:浮点数,即小数。
complex:复数(虚数在数字末尾加字母j表示),比如:3+2j或complex(3, 2)。
bool:布尔值(1代表True,0代表False,True+False的结果为1),另外True和False在Python2中并不是关键字,在Python3中才列入了关键字。
序列
元组:是一个有序的不可变的序列,用括号()表示,其中的元素用逗号分隔:
字符串:字符串可以看成是由单一数据类型(字符)组成的不用逗号表示的元组,从序列的角度来看它们其实是一样的;
不可变:元组和其元素是不可变的,但是元素可以是可变类型,比如list,这个点可能有点绕,可以自己练习下加深理解;
有序:元组中的元素是有顺序的,可用下标或分片等方法对其进行读取的操作;
空元组和单元素元组:当元组中只有一个元素时,一定要加上逗号,不然Python不会将其当做元组处理的,只会当做一个普通的括号来处理,
当然,空元组可以直接使用()表示;
新元组:可以使用“+”对多个元组相加,返回一个新的元组;使用下标截取也会返回新的元组。
2、列表:是一个有序的可变的序列,使用中括号[]表示,元素之间用逗号分隔:
可变:列表本身和其中的元素都是可以进行“增删改查”的(如果元素类型允许);
元素类型:一个列表的每个元素的数据类型可以不同,可以是任意数据类型;
有序:列表的元素之间是有顺序的,可用下标或分片等方法对其进行读或改的操作;
新列表:两个列表相加“+”会返回一个新的列表,包含两个列表的所有元素,并保有原有的顺序;对列表进行切片截取,返回的也是一个新的列表。
切片:切片使用形如list_[start:stop:step]的语句,start和stop表示下标,正数的下标表示正序(从左到右,起始数为0),负数的下标表示反序
(从右到左,起始数为-1),step为大于0的正整数时表示正序的切片步长,step为小于0的负整数时表示反序的切片步长;step一般不常用,默认为1,
当没有指明对应的start/stop时,默认为正序或反序的起始或结束下标。
3、集合:是一个无序的可变的序列,可以用大括号{}表示(元素用逗号隔开),也可以用set()定义:
无序:因为是无序的,不能用下标进行读取等操作;
集合运算:它和数学上的集合概念相同,不可以有相同的元素,元素无序,可以进行交集、并集和差集运算;
可变和不可变:每个元素都可以是不同的不可变类型,但集合本身是可变的。
4、字典:是一个无序的可变的序列,使用大括号{}表示,字典的元素使用键值对(key: value)表示,元素之间用逗号分隔:
新建字典:新建一个字典有几种特别的方法,比如:dict([('a', 'b'), (11, 22), (33, 'cc')]),{i: 'python %s' % i for i in range(3)},
以及dict(a='aaa', b='bbb', c='ccc')(这种方式的key只能以参数名的形式定义,最后会自动转换成对应的字符串);
可变:可以对字典进行“增删改查”操作;
key和value:字典中的元素(键值对)都是独立的,所有的key和value可以是不同数据类型,但是key必须是不可变的类型(不可以是列表等可变的类型),
且字典中每一个key都是唯一的,value则可以是任意数据类型;
无序:字典的元素(键值对)是无序的,不可用下标等有序序列的方法对其进行操作,只能通过元素的key来确定某一个元素(key是唯一的,value可以不唯一)。
注:
1、应用类型:列表,集合和字典属于可变类型,无论在什么地方对它的操作都是基于它本身的,所以需要小心使用,比如将一个列表传入函数后
(对于函数来说就是一个参数),如果函数有对它进行了修改操作,那么执行函数后,这个列表也就改变了,如果需要使用它的,但又不想影响到它本身
,可以使用深度拷贝(即copy模块的deepcopy()方法复制一个它拷贝)。
>>> ch = 'hello python!'
>>> ch[4]
'o'
>>> ch[:4]
'hell'
>>> ch[4:]
'o python!'
tup = (3, 'aa', {'a': 'b'})
>>> #列表
>>> lst = []
>>> lst = lst + [3, 'a', {'hello': 'python!'}]
>>> lst
[3, 'a', {'hello': 'python!'}]
>>> lst[:2]
[3, 'a']
>>> lst[2:]
[{'hello': 'python!'}]
>>> # 集合
>>> se = set([1, 2, 3])
>>> se
{1, 2, 3}
>>> se1 = set((2, 3, 3, 5, 6))
>>> se1
{2, 3, 5, 6}
>>> se & se1 #交集
{2, 3}
>>> se | se1 #并集
{1, 2, 3, 5, 6}
>>> se - se1 #差集
>>> #字典
>>> dct = {1: 'a', 2: 'b', 3: 'c', 4: 'd'}
>>> dct[1] = [1, 2, 3, 4]
>>> dct
{1: [1, 2, 3, 4], 2: 'b', 3: 'c', 4: 'd'}
>>> dct[0] = 'hello'
>>> dct
{0: 'hello', 1: [1, 2, 3, 4], 2: 'b', 3: 'c', 4: 'd'}
条件和循环控制
if条件控制:基本结构为:if-elif-else,if和elif后面跟一个布尔表达式,若值为真,则执行对应子语句块,若值为假,则跳过此条件块。
while循环控制:while后面跟一个布尔表达式,若值为真,则执行其中的语句块,执行完后再一次判断布尔表达式的值和执行语句块,然后无限重复判断和执行,直到布尔表达式的值为假。可以使用continue结束本层循环的本次循环,而使用break则结束本层的整个循环。
for循环:for用于遍历一个可迭代对象,使用continue可以结束本层循环的本次循环,而使用break则结束本层的整个循环。
for和while的else:当for或while正常执行完后接着执行else中的内容,当for或while循环中使用break终止跳出循环后就不会执行else中的内容了。
简单语句组:if、while和for语句中的语句块如果只有一条简单的语句,这时候条件判断和字句块可以写在一行,比如:if a > 1: print(a)。
曾经缩进
>>> for i in range(5): # break中断循环后就不会执行else中的内容了
if i % 2 == 1:
break
print(i)
else:
print('end')
函数
函数定义:Python中函数以def定义,用于实现某种功能,若是某段代码被多处使用,不妨将它定义成一个函数,或是它用于实现特定的功能,也可以将它定义成一个函数。
函数调用:一个函数func(),func为函数名,是这个函数引用(指向函数的地址);而加上括号func()则表示执行这个函数。
函数作用域:在函数中定义的变量为局部变量,在函数体外不可引用它。
参数默认值:在定义函数时可以为参数指定默认值,比如func(a=0),当没有传入该参数时,就会使用默认值,传参时如果没有指定参数名,则会按函数定义的顺序给参数赋值。
动态参数:使用*(元组)和**(字典)来定义函数的动态参数,动态参数有一个特别的写法“*args”和“**kwargs”,这两个写法合在一起就表示所有参数(“万能”的参数表示法),比如func(*var_tuple, **var_dict),*var_tuple会将传进来的参数以元组的形式存在var_tuple中,**var_dict会将以特定形式传进来的参数以字典的形式存在var_dict中。
函数加载:在文件中函数不会被运行,Python只是去加载它,除非它被引用执行;
文件加载:Python文件有一个系统变量为“__name__”,默认值为当前文件名,但是被当作主文件执行的文件默认值为“__main__”,所以可以使用"if '__name' == '__main__':"作为文件的执行入口。
函数返回值:若是这个函数没有使用return指定这个函数的返回值,那么这个函数的返回值默认为None。
匿名函数:使用lambda来创建一个简单的匿名函数,语法为:lambda [arg1 [,arg2,.....argn]]: expression。lambda的主体只是一个简单的表达式,而不是复杂的代码块,函数返回的是表达式的值。
注:
参数传值:如果定义函数时既有普通参数,也有指定默认值的参数,那么普通参数必须在前面。
参数默认值:建议不要定义为可变类型,因为本质上说,参数也是函数的变量,如果是可变类型,那么多次调用后这个默认值可能就不再是你定义的初始值了,最直观的表现就是两次相同的调用,却返回了不同的值。
作用域:Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,
def func(a1,a2):
... print(a1)
... print(a2)
def func1(*args1,**args2):
... print(args1)
... print(args2)
... print(args1[2])
... print(args2['name'])
...
>>> res=func1(1,2,3,name='san',age=17)
(1, 2, 3)
{'age': 17, 'name': 'san'}
3
san
>>> def func2(a1,lst=[]):
... lst.append(a1)
... return lst
...
>>> list=func2(200,[])
>>> list
[200]
迭代器与生成器
异常处理
try...except...else...如果try语句中没有异常发生就会继续执行else中的语句,如果发生了异常就不会去执行else中的语句了。
try:
# 此处为可能会发生异常错误的代码,如果发生异常将会抛出异常
pass
except ValueError as e:
# 捕捉指定的异常ValueError,并取别名为e
# 如果捕捉到指定的异常(如ValueError),就会在进入这里进行处理
pass
except (TypeError, NameError):
# 可以一次指定捕获多个异常,多个异常一元组形式指定即可
pass
except:
# 没有指定异常时,表示捕捉所有异常
# 如果抛出的异常在前面所有指定的异常都没有捕捉到,那么就会进入这里,
pass
finally:
# 无论是否发生异常都会执行此处代码
pass
打印异常信息:可以使用trackback模块的format_exc()函数打印异常信息
抛出异常:使用“raise MyError”来抛出异常,并在except捕获这个异常
自定义异常:自定义的异常类,需要直接或间接继承Exception类,且一般以Error作为后缀
发表评论
-
python 模块定义、导入、优化详解
2020-07-05 15:13 365python 模块定义、导入、 ... -
python常用内置函数
2020-07-05 11:10 372python常用内置函数 print print(*obje ... -
python抓取html中的手机号
2020-07-05 11:11 495#! /usr/bin/python import urlli ... -
python利用正则表达式抓取网页中的邮箱
2020-06-28 13:16 617#! /usr/bin/python import urlli ... -
python htmllib.HTMLParser处理A标签
2020-06-28 12:45 324#!/usr/bin/python #encoding=' ... -
python内置库:re(正则表达式)
2020-06-28 12:44 4171、正则表达式是用于处理字符串的功能强大的工具,但它并不是P ... -
python:装饰器
2020-06-28 12:43 334装饰器 1、特点:装饰器的作用就是为已存在的对象添加 ... -
python:面向对象(类)
2020-06-27 18:29 284python:面向对象(类) 类定义:Python3中,如果 ... -
Python字符串
2020-06-27 13:29 326字符串 字符串定义: ... -
Python内置库logging日志处理
2020-06-27 13:05 346Python的一个内置标准库,用于实现对日志的控制输出 im ... -
python2使用 Beautiful Soup 解析数据
2020-06-27 12:36 277使用 Beautiful Soup 解析数据 有的小伙伴们对写 ... -
python爬取网页01
2020-06-26 14:31 462#! /usr/bin/python import urlli ... -
RedHat升级Python到2.7.6
2020-06-26 14:00 381python,发现还是原生的2.4.3,所以决定升级一下 [ ...
相关推荐
- 生成器: 创建迭代器的一种简便方式。 - 上下文管理器: 用于处理资源的自动分配和释放。 以上内容涵盖了从Python的基础概念到进阶知识, 旨在帮助读者全面掌握Python编程语言的核心技能。通过系统的学习和实践, ...
2. **内置函数**: 包括常用的len()获取长度、type()查看类型、print()输出、input()获取用户输入、range()生成数字序列、str(), int(), float()转换数据类型等。 3. **字典操作**: 如字典的更新、合并,以及get()...
12. **迭代器与生成器**:Python的迭代器允许按需生成序列,而生成器则是一种节省内存的迭代器实现方式。 这个"ljg_resource"可能是一个资源文件夹,里面包含了用于练习的代码、数据文件或其他辅助材料。通过完成...
### Python初学教程:《简明Python教程》 #### 知识点概述: 根据所提供的《简明Python教程》部分信息,我们可以归纳出一系列重要的Python基础知识和技术要点,这些内容非常适合Python初学者作为入门指南。 #### ...
15. **迭代器与生成器**: - **迭代器**:实现了`__iter__`和`__next__`方法的对象,允许按顺序访问容器的元素。 - **生成器**:是特殊的迭代器,通过`yield`语句生成值,节省内存,延迟计算。 16. **函数**:...
Python的for循环可以遍历任何可迭代对象,range()函数用于生成数字序列。 12. 返回语句 return语句用于退出函数,返回指定的值。如果没有指定返回值,则默认返回None。 13. 异常处理 Python使用try...except语句来...
【Python程序设计】期末考试理论知识点详解 ...这些知识点涵盖了Python的基础语法,包括变量、数据类型、控制流、函数、异常处理、文件操作、正则表达式以及字符串操作等方面,是Python学习的重要内容。
本教程涵盖了Python的基础语法、数据类型、运算符、流程控制、数据结构、函数、异常处理和迭代器生成器等核心内容,适合初学者入门。 ### 第一章:Python基础语法 1. **安装解释器**:Python的解释器包括CPython...
- 输入与输出:`input()`函数用于获取用户输入,`print()`函数用于输出结果。 - 注释:单行注释以#开头,多行注释可以使用三引号包围。 2. **控制流** - 条件语句:如`if-else`和`elif`,用于根据条件执行不同的...
2. `range()`函数:生成整数序列,可指定起始、结束和步长,返回迭代器对象,占用内存小,使用`in`和`not in`判断序列中是否包含特定整数。 以上就是Python基础文档的主要内容,包括了基本的语法、数据类型、控制...
1. **迭代器与生成器:** - 迭代器的概念与实现。 - 生成器的定义与用法。 - 示例:使用生成器实现无限序列。 2. **装饰器:** - 装饰器的作用:修改或增强函数或类的行为。 - 装饰器的定义与使用方法。 - ...
3. **变量与数据类型**:讲解Python中的基本数据类型,包括整数(int)、浮点数(float)、字符串(str)和布尔值(bool)。此外,Python还支持复数(complex)和空值(NoneType)。 4. **变量赋值与操作符**:介绍...
- **迭代器**和**生成器**:支持迭代操作,节省内存。 10. **文件和数据格式化**:Python提供了丰富的文件操作函数,如`open()`、`read()`、`write()`等。PIL库用于图像处理,数据格式化涉及一维和二维数据的处理...
- **对象、值与类型**:解释了Python中对象的概念,以及值与类型的关联。 - **标准类型层次**:描述了Python内置数据类型之间的继承关系。 - **特殊方法名称**:列出了用于实现特定行为(如比较、运算符重载等)的...
3. **循环控制**:包括`for`循环(遍历序列或range对象)和`while`循环。 **Python函数** 1. **range函数**:生成一个整数序列,常用在for循环中。 2. **匿名函数**:也叫lambda函数,简短的单行函数。 3. **推导...
- **主要内容**:讲解Python中字符串数据类型的特点与操作。 - **知识点**: - 字符串的创建与索引; - 字符串的拼接与分割; - 字符串的内置方法(如`find`, `replace`等)。 - **【Python第14课】字符串格式...
函数示例包括更有序的质数生成器、命令解释器、受限输入和改进的掷骰子功能。 通过上述内容,我们覆盖了Python编程入门所必须了解的几个主要知识点。无论你是编程新手还是已有一定基础的开发者,这些知识点都是学习...
- **生成器(generators)**: 懒加载序列的机制。 - **装饰器(decorators)**: 在不修改原函数的基础上增强其功能。 - **内置函数**: 如`len()`、`sorted()`等。 **5.2 文件读写** - **打开文件**: 使用`open()`函数...