python基础——模块和包

python基础

模块

一个以.py为后缀的文件成为模块
python模块可以包含类、函数、变量和可执行语句

导入模块的几种方式

import 模块路径 【可选:as 别名】
from 模块路径 import 功能名【可选:as 别名】
from 模块路径 import *

注意事项

  1. 如果导入多个模块,且模块中含有同名的功能时,如果调用该功能,调用的是后面导入的模块的功能

模块定位顺序

python解析器对模块位置的搜索顺序为:

  1. 当前目录
  2. pythonpath下的目录
  3. python默认目录,不同的系统默认路径也不相同默认路路径⼀一般为/usr/local/lib/python/
    所以自己的文件名不要和已有模块重名,否则导致模块功能无法使用
    模块名的命名规范为标识符规范

_all_

如果一个模块中有 _all_变量,如果使用from 模块名 import *时,只能导入这个列表中的元素
例如:

类定义部分:
__all__ = ['Father']
class Father:
    name = 'zhangsan'
    age = 20
    money = 500000
    __dono = '这是我自己的'
    small = '这是可以继承的属性'
    def __init__(self,name,age,money):
        self.name = name
        self.age = age
        self.money = money
    def study(self):
        print('我是老爹的study方法')
    @classmethod
    def have_done(cls):
        return cls.__dono
    @staticmethod
    def sleep():  # 如果没有@staticmethod 不传参编译不通过
        print('睡觉啦')
    def __str__(self):
        return '我是父类'
    def get_done(self):
        return self.__dono
    def set_done(self,dono):
        self.__dono = dono

class Sun2(Father):
    def study(self):
        print('我是老二的study方法')

class Sun(Father):
    def study(self):
        print('我是老大的study方法')
调用部分:
from clas_20210711.继承 import *

if __name__ == '__main__':
    zhangsan = Father('zhangsan', 45, 50000)
    lisi = Sun('lisi',20,1000)  # NameError: name 'Sun' is not defined

包也就是文件夹,包中存放的是模块和_init_.py,这个文件控制包的导入行为
在_init_.py中添加_all_=[]列表,控制允许导入的模块列表

注意,如果包内有模块需要被别的模块导入,则包名不能以数字开头,否则导入报错

你可能感兴趣的:(python基础——模块和包)