python学习笔记

来源:互联网 发布:ps3软件下载 编辑:程序博客网 时间:2024/06/05 07:22

python中try、except、finally、return、continue的执行顺序

return
函数中常见,运行该语句则直接返回值
例如:

def a(b):    if b>3:        retun    print('dfds')in-a(5)out-nonein-a(2)out-dfda

continue—–执行到该语句,跳转到while语句重新开始循环,不执行continue下面while内的语句

else_________当不满足while语句循环条件时,执行else下面的语句。相当于if—-else;
finally________无论如何循环,都会执行finally语句

                try            |       |            except      else            |       |                finally

while True:

try:    xxxxxexpect:    xxxxxelse:    xxxxx

这里expect与else连用,expect是指如果出现错误则XXXX,else是指如果不出现错误则XXXX。

加入return语句后的变化,

def test1():   try:      print('to do stuff')      raise Exception('hehe')      print('to return in try')      return 'try' except Exception:      print('process except')      print('to return in except')      return 'except' finally:      print('to return in finally')      return 'finally'test1Return = test1()print('test1Return : ' + test1Return)输出:to do stuffprocess exceptto return in exceptto return in finallytest1Return : finally

解析:

try语句中列举异常,跳转到except语句中,except语句遇到return语句,则中断return语句,保留return返回值。继续执行finally语句,finally语句中不影响return返回值。如果在finally语句中由return则执行该return,否则,返回原return语句。

def test3():   i = 0 try:      i += 1 print('i in try : %s'%i)      raise Exception('hehe') except Exception:      i += 1 print('i in except : %s'%i)      return i      finally:      i += 1 print ('i in finally : %s'%i )print('test3Return : %s'% test3())输出:i in try : 1i in except : 2i in finally : 3test3Return : 2

解析:
在except和try中遇到return时,会锁定return的值,然后跳转到finally中,如果finally中没有return语句,则finally执行完毕之后仍返回原return点,将之前锁定的值返回(即finally中的动作不影响返回值),如果finally中有return语句,则执行finally中的return语句

break——–跳出本层循环


文件操作

open(路径,打开方式)返回一个类文件对象,该对象支持iter方法,属于可迭代对象。

图片视频属于二进制文件,使用‘rb’模式阅读


python 2to3 工具使用

cd到2to3.py文件夹
-w
文件路径


LEGB变量作用域原则

local—函数内局部变量

encloseing function locals—-外部嵌套函数的名称空间

global(module):函数定义所在模块的名称空间

Builtin(python):python内置模块的名称空间


闭包

在Python中,所谓的闭包是一个包含有环境变量取值的函数对象。环境变量取值被保存在函数对象的closure属性中。

闭包在于分步赋值,将复杂函数分解。


对象属性

python中一切皆对象,只要是对象就有dict方法,该方法返回对象的属性,dict为一个词典,键为属性名,对应的值为属性本身。
object.dict[N]相当于object.(N.value)

property函数

静态方法与类方法都是类被创建时调用,静态方法是没有参数的类方法,也可以叫做类属性;而类方法的参数是类,是有参数的类方法。

类方法

object.getattr(self,name) 在访问对象访问类中不存在的成员时会自动调用;

object.setattr(self,name,value)方法用于在初始化对象成员的时候调用,即在设置dict的item时就会调用setattr方法。

Property函数
对于对象的属性来讲,涉及到的操作主要有 获取、更改、删除 三种操作。
Property函数作用:将类中的对象方法转化为对象属性。调用对象方法时要加(),调用对象属性时不用加()。
将 获取、更改、删除的属性操作方法合并到一个属性中去。

property()最多可以加载四个参数。前三个参数为函数,分别用于处理查询特性、修改特性、删除特性。最后一个参数为特性的文档,可以为一个字符串,起说明作用。

@Property 修饰器(object.getter)
@object.setter
@object.deleter


装饰器
以函数为参数的函数。
闭包一次——无参数装饰器
闭包两次——含有参数的装饰器


魔法方法

魔法方法影响了PYTHON的语法,魔法方法更为低层。

object.xxxx()
魔法方法都是对象的方法。很多内置的函数都调用了魔法方法。
例如:
int()函数调用了int()方法;
列表中的[]调用了getitem()方法;
+ 调用了add()方法。
任何一个有call()特殊方法的对象都被当作是函数


生成器yield、send()、next()

yield 相当于return,是生成器标志。语句运行到这里结束,等待下一次调用(next或者send).
yield 返回值与yield 表达式的值是两个意思。
例如:yield 3 是指yield 返回3,而a=yield 3,是将yield =3 这个表达式的值付给a,表达式的值可以由send赋值。
send函数的本质:给yield表达式赋值,返回yield的返回值。
next()给yield表达式赋值为None。
send()使用时,要先用send(None)或者next()进行yield 表达式的初始化,然后在进行更改表达式的值。也就是说,send函数只能改变第二个yield表达式的值。
send()实现 的是 使生成器 不仅可以根据调用次数来实现生成数据,更可以通过输入不同数据(来给yield表达式赋值的方式)来实现生成不同数据。
send()方法是先给yield 表达式赋值,在进行的迭代。所以需要先给yield表达式赋值None,在进行改变

next()是函数,参数是可迭代对象。

生成器函数调用时不会运行函数内代码,只有用next方法调用时,才会运行函数。
eg:
def aaa():#正常函数
print(‘ashdfj’)
in-b=aaa()
out-ashdfj

def bbb():#生成器函数
print(‘aaa’)
yield 5
in-b=bbb()
out-None


表达式与语句是有区别的。表达式就是某些事情,而语句则是做某些事情。
例如:

a=5(赋值语句)
a(调用函数表达式)
交互式解释器总是把所有表达式的值打印出来。
exec(str)——-作用是将字符串转化为PYTHON语句并执行
eval(语句)———作用是求表达式中的值
定义函数时,第一行注释也称为文档化字符串。

方法:定义在类内部,拥有self参数。调用方式:object.方法(*arg,**args)
函数:定义在类外部,无self参数。
对象:对象是属性和方法的集合
多态:对象与方法之间是多对一的关系。


保护类实例对象属性私有

检查继承的方法:
检查类与类之间父子关系 —– issubclass(类1,类2)
打印基类——————object.base
判断实例与类之间的关系———isinstance(实例,类)


文件运行时,name等于main;文件被导入时,name等于文件名称。
Python引入了一个变量name,当文件是被调用时,name的值为模块名,当文件被执行时,name为’main‘。

main.py python中有这个模块的功能未知


编码与解码
字符与字节
unicode 是计算机内存能够处理的东西

utf-8用于传输储存的中间编码。

内存——编码encode(unicode》》》UTF-8)——传输(UTF-8)——解码decode(UTF-8>>>unicode)——内存——编码储存(UTF-8)。

python3中的字符串默认为unicode,所以不能解码。


0 0