python学习笔记

    xiaoxiao2021-03-25  77

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

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

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

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

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

    try | | except else | | finally

    while True:

    try: xxxxx expect: xxxxx else: 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 stuff process except to return in except to return in finally test1Return : 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 : 1 i in except : 2 i in finally : 3 test3Return : 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,所以不能解码。


    转载请注明原文地址: https://ju.6miu.com/read-14415.html

    最新回复(0)