zoukankan      html  css  js  c++  java
  • python学习之老男孩python全栈第九期_day021知识点总结——包、异常处理

    一. 包

    # 把解决一类问题的模块放在同一个文件夹里 -- 包

    # 创建目录代码
    # import os
    # os.makedirs('glance/api')
    # os.makedirs('glance/cmd')
    # os.makedirs('glance/db')
    # l = []
    # l.append(open('glance/__init__.py','w'))
    # l.append(open('glance/api/__init__.py','w'))
    # l.append(open('glance/api/policy.py','w'))
    # l.append(open('glance/api/versions.py','w'))
    # l.append(open('glance/cmd/__init__.py','w'))
    # l.append(open('glance/cmd/manage.py','w'))
    # l.append(open('glance/db/models.py','w'))
    # map(lambda f:f.close() ,l)

    # 凡是在导入时带点的,点的左边都必须是一个包
    # import glance.api.policy
    # glance.api.policy.get()

    # from后import导入的模块,必须是明确的一个不能带点,否则会有语法错误
    # from glance.api import policy
    # policy.get()

    # from glance.api.policy import get
    # get()

    # import glance
    # glance.api.policy.get() # 报错,导入glance只会执行glance下的__init__.py文件,从__init__.py里导入
    # glance.db.models.register_models('skr')

    # 绝对路径:不能挪动,但是直观
    # 不管在包内部还是外部,导入了就能用

    # 相对路径:可以随意移动包,只要能找到包的位置,就可以使用包里的模块
    # 包里的模块如果想使用其他模块的内容只能使用相对路径,使用了相对路径就不能再宝内直接执行了
    # __init__.py里面 from .
    import glance
    glance.api.policy.get()

    二. 异常处理

    # 1/0             # division by zero
    # name # name 'name' is not defined
    # 2 + '3' # unsupported operand type(s) for +: 'int' and 'str'
    # [][3] # list index out of range
    # {}['k'] # KeyError: 'k'
    # int('a') # invalid literal for int() with base 10: 'a'

    # 程序一旦发生错误,就从错误的位置停下来了,不在继续执行后面的内容

    # ret = int(input('number >>>')) # 如果输入的不是数字,就会报错
    # print(ret * '+')

    # 使用try和except就能处理异常
    # try是我们需要处理的代码
    # except 后面跟一个错误类型,当代码发生错误且错误类型符合时,就会执行except后面的内容
    # except 支持多分支
    # Exception:可以处理所有的错误类型
    # 但这样不知道哪里错了,怎么错的
    # 有了万能的处理机制,仍然需要把能预测的问题单独处理
    # 单独处理的所有内容都应该写在万能处理异常之前
    # finally:不管代码是否异常,都会执行
    # finally和return相遇的时候,依然会执行
    # finally一般都是在函数里面做异常处理用,不管是否异常,去做一些收尾工作

    # 处理
    try:
    ret = int(input('number >>>'))
    print(ret * '+')
    except ValueError:
    print('您输入的内容有误,请输入一个数字')
    else: # 若程序无异常,则继续执行else中的代码
    print('---------------')
    finally: # 不管代码是否异常,都会执行
    print('////////////////')


    # except 可以有多个吗?
    # 有没有一个能处理所有错误的类型?

    # try:
    # 1/0
    # name
    # 2 + '3'
    # [][3]
    # {}['k']
    # int('a')
    # except Exception as error: # 处理万能异常
    # print('你错了',arror)
  • 相关阅读:
    接口自动化测试中解决所遇问题的博客链接
    python中logging日志模块详解
    yaml.load()时总是出现警告:YAMLLoadWarning: calling yaml.load() without Loader=...
    基于ArcGIS Desktop 10.2开发的环境安装
    【部署】IIS导入证书后绑定报错“证书中的一个或多个中间证书丢失”
    IIS7.x 生成CSR证书请求文件
    Sql Server多种分页性能的比较
    网页上出现D盾拦截,删除、取消
    Fusioncharts图表常用参数设置
    Windows Server 2016 安装.NET Framework 3.5 错误
  • 原文地址:https://www.cnblogs.com/lpgit/p/9381904.html
Copyright © 2011-2022 走看看