记录从准研一假期自学PYTHON的全过程day10

129 阅读2分钟

本文已参加【新人创作礼】活动,一起开启掘金创作之路

今天是暑假在家自学的第十天

昨天学习了多继承,多态,类方法,今天学习静态方法

静态方法

静态方法不需要1.访问实例属性或者调用实例方法 2.也不需要访问类属性或者调用类方法。

简单的说:在使用的时候不需要实例化就可以调用

class Dog():
    @staticmethod
    def help():
        print("这是静态方法")

Dog.help()

输出结果: 这是静态方法

可以看出Dog类并没有实例化但是可以直接使用

异常

1.异常的概念

程序在运行过程中,如果Python解释器遇到一个错误,会停止程序的运行,并且提示一些错误的信息,就是异常。

2.异常的捕获

try: 尝试执行的代码 except: 出现错误的处理

举例子如下:

try:
    num=int(input("请输入一个数字:"))
except:
    print("请输入正确的数字")

完整的异常捕获语法:

try:

except:

else:不会出错的时候执行的代码

finally:不管是否有异常都会在最后执行

举例如下

try:
    num=int(input("请输入一个数字:"))
    result=8/num
    print(result)
except ValueError:
    print("请输入正确的数字")
except ZeroDivisionError:
    print("分母不能为0")
except Exception as result:
    print("未知错误:%s" % result)
else:
    print("正常执行")
finally:
    print("不管是否正常执行都会显示")

3.Python抛出异常显示异常所在行数和文件夹

try:
    num = 1 / 0
except Exception as e:
    print(e)
    print(e.__traceback__.tb_frame.f_globals["__file__"])
    print(e.__traceback__.tb_lineno)

Exception as e中,将Exception起了一个代号e,也就是说将异常起名为e,便于写下面的代码

4.函数调用异常:

函数调用异常可以将异常的捕获写的更简单,在企业中经常这样子使用,可以避免写很多的except,可以使用一个函数来返回异常,如下例的demo2():

def demo1():
    num= int(input("请输入一个整数:"))
    print("demo1:{}".format(num))
    return num
def demo2():
    return demo1()
try:
    print("try:{}".format(demo2()))
except Exception as resule:
    print("发生异常,需要输出整数")

format()方法可以用来传入任何一个类型的参数

可以用as e这种方法直接在异常中输出:

try:
    print("try:{}".format(demo2()))
except Exception as result:
    # print("发生异常,需要输出整数")
    print("未知错误:%s"% result)

3.抛出raise异常

raise可以作为用户自定义异常进行抛出

e=Exception
raise e

raise异常还可以更进一步简化为assert:

try:
    assert 1==0,"程序在这里发生错误"
except Exception as e:
    print(e)

这种写法在机器学习中经常遇到

===============================================================

异常的学习结束,算是一个小的知识点