• Python学习 7day__高级语法


    模块

      模块是包含python代码的文件
      模块可以增加代码重复利用的方式
      当作命名空间使用,避免命名冲突


      定义模块

        模块就是普通的py文件,所以任何代码都可以直接书写
        不过根据模块的规范,最好在模块中编写一下内容
        函数(单一功能)
        类(相似功能的组合或者类似业务模块)
        测试代码

    0ss.py
    class Student():
        def __init__(self, name = "wanglaji", age = 19):
            self.name = name
            self.age = age
    
        def say(self):
            print("My name is {0}".format(self.name))
    if __name__ =='__main__':            # 可以有效避免代码被导入时被动执行的问题
        def sayHello():
            print("欢迎学习python")

      模块使用方法

        直接导入,如果模块名以数字开头则需要用importlib包导入
         import 模块 as 别名
        选择性导入
         from 模块 import 选择导入的方法

    1 #以0ss.py为模块
    2 '''import importlib
    3 aa = importlib.import_module("0ss")
    4 stu = aa.Student("xiaogege", 20)
    5 stu = sayHello()
    6 stu = say()'''

    模块的搜索路径


      加载模块的时候,系统会在哪些地方寻找模块
      系统默认的路径
       import sys
      sys.path 属性可以获得路径
      添加路径:sys,path.append(路径)

    1 import sys
    2 print(type(sys.path))
    3 print(sys.path)
    4 for p in sys.path:
    5     print(p)

    模块的加载顺序

      1. 先搜索内存中已经加载好的模块
      2. 搜索python中的内置模块
      3. 搜索sys.path路径




      包是一种组织管理代码的方式,包里面存放的是模块
      将模块包含在一起的文件夹就是包

      自定义包的结构
       |---包
       |---|--- __init__.py 包的标志性文件
       |---|--- 模块1
       |---|--- 模块2
       |---|--- 子包(子文件夹)
       |---|---|--- __init__.py 包的标志性文件
       |---|---|--- 子包模块1
       |---|---|--- 子包模块2

    包的导入
     

      直接导入:improt package name
      设置别名:import package name as p
      from ... import 导入方法


    __all__用法

      __all__=['模块1', '模块2', '模块3'....]
      在使用form package import * 的时候 * 可以导入的内容
      __init__.py如果文件为空,或者没有__all__那么只导入__init__
      __init__.py中如果设置了__all__ 的值,那么则按照__all__指定的子包或者模块进行导入


    异常处理

      python中,异常是一个类,可以处理和使用
      不能保证程序永远正确运行,但是要保证程序在最坏的情况下能够得到妥善的处理

       try:
       尝试实现某个操作,如果没异常则正常完成
      如果有异常,将异常代码块抛出并尝试解决
       except 异常类型1:
       解决方案1,用于尝试处理异常
       except 异常类型2:
       解决方案2,用于尝试处理异常
       else:
       如果没有出现任何异常,将会执行此处代码
       except(异常类型1, 异常类型2...)
       针对多个异常使用相同的处理方式
       finally:
       无论有没有异常都要执行的代码

     1 try:
     2     num = int(input("please input your number:"))   # 尝试执行代码
     3     rst = 100/num
     4     print("计算结果是:{0}".format(rst))
     5 except ZeroDivisionError as e:          # 异常实例化e
     6     print("输入错误")                    # 出现错误则执行此代码块
     7     print(e)                            # 打印出实例e
     8     exit()
     9 except Exception as e:                  # 任何异常都拦截到这里
    10     print("不知道哪错了,反正就是错了")
    11     print(e)

      用户手动引发异常

      当用户需要引发一个异常的时候,可以使用raise 关键字来引发异常

     1 try:
     2     print("I Love Python")
     3     # 手动引发一个异常
     4     raise ValueError
     5     print("mmp")
     6 except NameError as e:
     7     pritn(e)
     8 except ValueError as e:
     9     pritn(e)
    10 except Exception as e:
    11     print(e)
    12 finally:
    13     print("有没有异常反正都执行")

      关于自定义异常


        raise异常推荐自定义异常
        自定义异常的时候一般包括以下内容:
          自定义发生异常的异常代码
          自定义发生异常后的问题提示
         自定义发生异常的行数
    1 class OwnError(NameError):
    2     print("自定义异常的代码块")
  • 相关阅读:
    Oracle中的substr()函数和INSTR()函数和mysql中substring_index函数字符截取函数用法:计算BOM系数用量拼接字符串*计算值方法
    (转载)SDRAM驱动笔记
    【转】Verilog阻塞与非阻塞赋值使用要点
    【转转】(筆記) always block內省略else所代表的電路 (SOC) (Verilog)
    (原創) 如何處理signed integer的加法運算與overflow? (SOC) (Verilog)
    [转载]亚稳态
    Dev Exprss 发布部署
    Dev splliter 去除中间的分割显示
    DevTreeList中的新增、修改的设计
    Oracle 常用网址
  • 原文地址:https://www.cnblogs.com/Burtit/p/9350789.html
Copyright © 2020-2023  润新知