zoukankan      html  css  js  c++  java
  • Python基础(3)

    1、什么是模块?

      在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能。除了自定义模块外,我们还可以导入使用内置模块第三方模块提供的现成功能,这种“拿来主义”极大地提高了程序员的开发效率。--体现了python开发的便捷与强大。

    2、怎么使用模块?

      全部导入:import xxx、from xxx import *

      指定导入:import module.xx as yy、from module import xx 

      导入顺序与书写规范:先导入python内置模块,然后是第三方模块,最后是自定义模块,且用空行区分开三种类型的模块导入

      as:通常在被导入的名字过长时采用起别名的方式来精简代码,另外为被导入的名字起别名可以很好地避免与当前名字发生冲突,通过if结构还可以保持调用方式的一致性

      *:模块的编写者可以在自己的文件中定义__all__变量用来控制*代表的意思

      __all__一个列表,元素为规定该模块可以被其他模块导入的变量名,函数名,类名。注意元素必须是字符串。此规定不影响指定导入方式。

      搜索路径设置:当前模块执行sys.path.append(需要导入的模块的路径)或者将文件夹Mark Directory as成source root的方法

      __name__:每个py文件都有一个__name__属性,if __name__ == "main",表示该文件是主程序文件,否则表示该文件只是个模块,作用是被导入使用其功能。

    3、什么是包?

      包就是一个含有__init__.py文件的文件夹,文件夹内可以组织子模块或子包。随着模块数目的增多,把所有模块不加区分地放到一起也是极不合理的,于是Python为我们提供了一种把模块组织到一起的方法,即创建一个包。

      包是用来干嘛的呢?package和directory的区别就是多了一个__init__.py文件,包属于模块的一种,因而包以及包内的模块均是用来被导入使用的,而绝非被直接执行。

      __init__.py:文件内容是import xxx和from 本包 import xxx等导入语句和__all__列表。xxx表示本包下的子包和子模块,不写导入语句则本包下xxx不能被导入使用,使用时会抛异常AttributeError。而编写__all__列表的目的则和模块是一样的,用来控制*代表的意思。

    4、绝对导入和相对导入?

      编写包内的__init__.py时,建议使用相对导入,如from . import xxx。表示当前文件(__init__.py)所在的文件夹,.. 表示当前包所在的文件夹。

    5、什么是异常?

      程序运行一旦出现错误Error,便会产生一个异常,若程序中没有处理它,就会抛出该异常,程序终止运行

    1. 定义:运行时检测到的错误。
    2. 现象:当异常发生时,程序不会再向下执行,而转到异常类的调用语句。
    3. 常见异常类型:
    • NameError:变量未定义。
    • TypeError:不同类型数据进行运算。
    • IndexError:超出索引范围。
    • AttributeError:对象没有对应名称的属性。
    • KeyError:没有对应名称的键。
    • ValueError:值错误,如int('a12')
    • ZeroDivisionError:除数不能为0
    • Exception:异常基类。

    6、异常处理?

    try:
        可能触发异常的语句
    except 错误类型1 [as 变量1]:
        处理语句1
    except 错误类型2 [as 变量2]:
        处理语句2
    except Exception  [as 变量3]:
        不是以上错误类型的处理语句
    else:
        未发生异常执行的语句
    finally:
        无论是否发生异常都执行的语句
    1. 作用:将程序跳过异常,继续执行。
    2. 说明:
    • as 子句是用于绑定错误对象的变量,可以省略
    • except子句可以有一个或多个,用来捕获某种类型的错误。
    • else子句最多只能有一个。
    • finally子句最多只能有一个,如果没有except子句,必须存在。

    7、如何调用异常类?

      raise语句:raise 异常类

    • 作用:抛出一个错误,让程序进入异常状态。
    • 目的:在程序调用层数较深时,向主调函数传递错误信息要层层return 比较麻烦,所以人为抛出异常,可以直接传递错误信息。

    8、自定义异常类

    #定义:
    class 类名Error(Exception):
        def __init__(self,参数):
            super().__init__()
            self.数据 = 参数
    
    #调用:
    try:
        …
        raise 自定义异常类名(参数)
    except 类名Error as 变量名:
        变量名.数据
    
    #作用:封装错误信息            

    举例:

    class AgeError(Exception):
    def __init__(self, message="", code="", id=0):
    super(AgeError, self).__init__()
    # 消息/错误代码/错误编号....
    self.message = message
    self.code = code
    self.id = id


    class Wife:
    def __init__(self, age=0):
    self.age = age

    @property
    def age(self):
    return self.__age

    @age.setter
    def age(self, value):
    if 20 <= value <= 30:
    self.__age = value
    else:
    # 抛出/发送 错误信息(异常对象)
    raise AgeError("我不要", "20 <= value <= 30", 404)
    # 需要传递的信息:消息/错误代码/错误编号....


    # 接收错误信息
    try:
    w01 = Wife(32)
    print(w01.age)
    except AgeError as e:
    print(e.id) # 404
    print(e.message) # 我不要
    print(e.code) # 20 <= value <= 30

      

  • 相关阅读:
    关于 No buffer space available (maximum connections reached?): connect 的处理
    Cron 表达式
    Hudson 打包部署到Was上特别慢
    JAVA jar 参数
    CentOS 6 UNEXPECTED INCONSISTENCY RUN fsck MANUALLY
    SSH 连接很慢
    解决libc.so.6: version `GLIBC_2.14&#39; not found问题
    Maven 基本参数
    Shc 应用
    JAVA 关于JNI本地库加载
  • 原文地址:https://www.cnblogs.com/lennie-luo/p/12897940.html
Copyright © 2011-2022 走看看