[python] 抛出异常,模块,包管理

一 抛出异常

  • 创建一个Exception('xxx') 对象,  xxx ---为异常提示信息

  • raise抛出这个创建的异常对象

  • 好处:这样不会让程序终止,还可以继续运行。

def login():
    pwd = input("请输入您的密码:")
    if len(pwd) >= 6:
        return "密码确认成功"
    raise Exception("长度小于6位,请重新输入")
try:
    print(login())
except Exception as e:
    print(e)

二 模块

  • 含义:一个py文件就是一个模块,即导入一个模块本质上就是执行一个py文件
  • 分类: 内置模块,第三方模块(库),自定义模块

2.1 导入模块

2.1.1 import导入

  • 方式: import 模块名
  • 使用模块功能:模块名.功能名

首先创建一个模块ptmodule.py文件,定义一下内容

a = 10
def add(a,b):
    return a+b

然后在要使用的py文件里面导入使用

import pymodule
# 调用模块中的变量
print(pymodule.a)
# 调用模块中的函数
print(pymodule.add(1,2))

2.1.2 from...import...

  • 从模块中导入指定的模块名
  • 格式:from 模块名 import 功能1,功能2
  • 注意: 即使是变量也需要额外指定导入,并且调用时不再需要模块名
from pymodule import add,a
# 调用模块中的变量
print(a)
# 调用模块中的函数
print(add(1,2))

2.1.3 from ... import *

  • 语法: from 模块名 import *
  • 这样把模块中的所有内容全部导入,并且调用时不需要使用模块名了。
  • 注意:不建议这样做,可视性不高,并且命名冲突会很麻烦。
from pymodule import *
# 调用模块中的变量
print(a)
# 调用模块中的函数
print(add(1,2))

2.1.4 as起别名

  • 语法: import 模块名 as 别名
import pymodule as py
# 调用模块中的变量
print(py.a)
# 调用模块中的函数
print(py.add(1,2))

2.1.5 给功能起别名

  • 语法: from 模块名 import 功能 as 别名
from pymodule import add as func_1,a as b
# 调用模块中的变量
print(b)
# 调用模块中的函数
print(func_1(1,2))

2.2 内置全局变量

  • 模块内的变量不让其他模块可以使用
  • 语法:  if __name__ == "__main__":
  • 作用: 用来控制py文件在不同的应用场景执行不同的逻辑
  • 比如,在模块内部自己使用时会被执行,但是被调用时就不会执行

首先在模块文件里面创建

def add(a,b):
    return a+b
if __name__ == "__main__":
    a = 100
    print("模块测试文件",a)

然后在要调用的地方

import pymodule
print(pymodule.add(1,2))

三 包

  • 含义: 项目结构中的文件夹/目录
  • 区别: 与普通的文件夹的区别,包时还有__init__.py的文件夹
  • 作用: 为了让模块更清晰,并且命名不会冲突。

3.1 导入包

  • import导入包时首先执行__init__.py文件的代码
  • 注意: 不建议在init文件中写大量代码
  • init:可以控制导入这个包内的其他模块

第一种方式:

import package

第二种方式:

from package import regidter
regidter.regidter()

第三种方式:

  • 首先在init.py里面调用这个模块
from package import regidter
# 或者
from . import regidter
  • 然后在需要调用的地方调用这个包即可
import package
package.regidter.regidter()

3.2 注意事项

  • import导入包时首先执行_init__.py的代码
  • __all__变量:本质上是一个列表,可以控制要引入的内容,
  • __all__ : 限制的是以这种导入方式from module import * 
  • 包的本质也是模块,依然可以包含包
  • 在python中以_开头表示提示这是一个私有成员属性或者变量,不建议外部使用。

在init.py里面

__all__ = ["regidter"]

这时候在要调用的地方,就使用不了包中其他的模块,但是如果显示from package import 模块名还是可以被导入的

from package import *
regidter.regidter()

你可能感兴趣的:(python,python,开发语言)