实训笔记20190730

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/weixin_43895902/article/details/97809485

标准库

其实标准库就是模块化的函数

  • import sys
    sys模块,它里面提供了一些变量和函数,使我们可以获取到Python解析器的信息
    或者通过函数来操作Python解析器
    引入sys模块

  • sys.argv
    argv返回的是一个元素列表–可以存放数据

  • sys.modules
    print(sys.modules)
    返回的是一个字典 key-value
    通过modules产生的结果将字典没有格式化操作

Python如何格式化模块?
pprint 模块它给我们提供了一个方法 pprint() 该方法可以用来对打印的数据做简单的格式化

  • import pprint
    包或者模块
    pprint.pprint(sys.modules)

  • sys.path
    他是一个列表,列表中保存的是模块的搜索路径

  • sys.platform
    表示当前Python运行的平台
    print(sys.platform)

  • sys.exit()
    1.表示的是将程序安全退出,不会将数据泄露
    2.直接终止当前运行程序,将Python解释器直接终止

  • os.environ
    通过这个属性可以获取到系统的环境变量
    pprint.pprint(os.environ)
    pprint.pprint(os.environ[‘path’])

异常

  • 什么是异常?
  1. 程序底层或者程序执行时出现错误
  2. 使用没有被赋值的变量
  3. 使用不存在的索引
  4. 被0除
  • 什么是error?
  1. 代码写错,不能编译
  2. error只能靠程序员自己修改代码
  • 异常的特性?
  1. 当程序遇到异常代码体时,程序会中断当前执行操作
  2. 如何处理异常?
    1.Java语言:try{}catch(){}
    2,Python语言:
print('异常出现前')
l = []
try:
    # print(c)
    # l[10]
    # 1 + 'hello'
    print(10/0)
except NameError:
    # 如果except后不跟任何的内容,则此时它会捕获到所有的异常
    # 如果在except后跟着一个异常的类型,那么此时它只会捕获该类型的异常
    print('出现 NameError 异常')
except ZeroDivisionError:
    print('出现 ZeroDivisionError 异常')
except IndexError:
    print('出现 IndexError 异常')
# Exception 是所有异常类的父类,所以如果except后跟的是Exception,他也会捕获到所有的异常
# 可以在异常类后边跟着一个 as xx 此时xx就是异常对象
except Exception as e :
    print('未知异常',e,type(e))
#else---等价于finally
finally :
    print('无论是否出现异常,该子句都会执行')

print('异常出现后')

如果函数调用处处理了异常,则不再传播,如果没有处理则继续向前传播

抛出异常

也可以自定义异常类,只需要创建一个类继承Exception即可
在Java和Python里面尽量不要使用自定义异常

备注:自定义异常使用场景:实际项目里面没有工具包,或者项目底层封装的源代码----需要自定义异常

问: throw和throws的区别是什么?
答: throws应用于动态方法后面,表示抛出方法里面的异常信息
throw表示一张异常行为,可以操作自定义异常–raise

class MyError(Exception):
    pass

def add(a,b):
    # 如果a和b中有负数,就向调用处抛出异常
    if a < 0 or b < 0:
        # raise用于向外部抛出异常,后边可以跟一个异常类,或异常类的实例
        # raise Exception    
        # 抛出异常的目的,告诉调用者这里调用时出现问题,希望你自己处理一下
        # raise Exception('两个参数中不能有负数!')  
        raise MyError('自定义的异常')
        
        # 也可以通过if else来代替异常的处理
        # return None
    r = a + b
    return r

print(add(-123,456))    

包 (package)

包也是一个模块,当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用到包
普通的模块就是一个py文件,而包是一个文件夹,包中必须要一个一个 init.py 这个文件,这个文件中可以包含有包中的主要内容

import hello
print(hello.a)
print(hello.b)
print(hello.test)


# -*-coding:UTF-8 -*- __init__.py
a=10
b=20
def test():
    print('这是test')

#备注:可以在hrllo文件下面/包定义 a.py   b.py

from hello import a , b

print(a.c)
print(b.d)

# __pycache__ 是模块的缓存文件
# py代码在执行前,需要被解析器先转换为机器码,然后再执行
#   所以我们在使用模块(包)时,也需要将模块的代码先转换为机器码然后再交由计算机执行
#   而为了提高程序运行的性能,python会在编译过一次以后,将代码保存到一个缓存文件中
#   这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可

猜你喜欢

转载自blog.csdn.net/weixin_43895902/article/details/97809485
今日推荐