模块和包

目标

  • 了解模块
  • 导入模块
  • 制作模块
  • _ all_
  • 包的使用方法

模块

Python模块(Module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句。
模块能定义函数,类和变量,模块也能包含可执行的代码
在project里的lib下

导入和使用模块

导入模块就是导入指定类的所有代码,不是类似Java的引用

方法一:import 模块名

调用功能:模块名.功能名

方法二: from 模块名 import 功能名

调用功能:功能名
只能调用导入的功能名,不能使用模块里的其它功能

方法二变型:from 模块名 import *

调用功能:功能名
能调用模块里的所有其它功能,基于_all_的引入

方法三:import 模块名 as 别名

模块定义别名,定义后,就只能使用别名
调用功能:别名.功能名

方法三变型:from 模块名 import 功能名 as 别名

功能定义别名
调用功能:模块名.别名

不推荐import导入多个模块
在python,涉及到类似除法的运算,得到的结果必定是浮点数

方法四:var = __ import__(’’)

在括号里写上要导入的模块名字,var为导入的模块名称,类似于别名

制作模块

类似Java里的工具类,自己写类,然后导入
测试信息可以用iif语句写上:

if __name__='__main__':
	test(1, 1)

__name__是一个系统变量,在自己类里就是 __main __,在其他类里就是python文件名字

模块定位顺序

当导入一个模块时,python解释器对模块位置搜索顺序是:

  1. 当前目录
  2. 如果不在当前目录,python则搜索在shell变量PYTHONPATH下的每个目录
  3. 如果都找不到,Python会查看默认路径。UNIX下,默认路径为/usr/local/lib/pthon/
  4. 模块搜索路径存储在system模块的sys.path变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录
  5. 注意
  6. 自己的文件名不要和已有的模块名重复,否则导致模块功能无法使用
  7. 使用from 模块名 import 功能名的时候,如果功能名名字重复,调用的是最后定义或导入的功能。
  8. 最后,类似于Java里的自定义类的类名不要跟原有的类相同!方法名也不能相同

random里的randint(start, end):从开始到结尾中间获得一个随机int数字
名字重复的严重性:导入模块,就是把代码全部拿来了,模块名就是一个引用

__ all__

如果一个模块文件中有__ all__变量,当使用from xxx import * 导入时,只能导入这个列表中的元素

包将有有联系的模块组织在一起,即放在同一个文件夹,并且在这个文件夹下创建一个名字为__ init__.py文件,那这个文件夹就称为包
注意:新建包后,包内部会自动建一个名字为__ init__.py文件,控制着包的导入行为
类似Java里的包

导入包

方法一:

import 包名.模块名
包名.模块名.功能()

方法二:

注意:必须在__ Init__.py文件中添加 __ all__ = [],控制导入的模块列表,不写将无法导入任何一个模块

from 包名 import *
模块名.目标

拓展:

__ dict__

类名.__ dict__
收集类内部所有属性和方法对应的字典
实例对象.__ dict__
收集对象的实例属性和值组成的字典:就是init函数里的初始化属性
在这里插入图片描述

class A(object):
    a = 0
    def __init__(self):
        self.b = 1
aa =A()
# {'__module__': '__main__', 'a': 0, '__init__': <function A.__init__ at 0x00000000021F51E0>, '__dict__': <attribute '__dict__' of 'A' objects>, '__weakref__': <attribute '__weakref__' of 'A' objects>, '__doc__': None}
print(A.__dict__)
# {'b': 1} 实例对象的属性和属性值组成的字典,但是实例属性a还是有的
print(aa.__dict__)
print(aa.a)

列表推导式
在这里插入图片描述
加载数据,转换对象
在这里插入图片描述

eval用于自动转换字符串数据的类型,将其转换为对应的类型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值