python基础梳理(十七)模块剩余内容(加载、编译、文档字符串以及模块_name_等属性、all列表、random模块)、包(模块包)

一、模块加载的过程
1.先搜索相关路径找模块 .py
2.判断是否有此模块对应的.pyc文件,如果没有,则用.py文件生成相应的.pyc文件再进行加载
3.如果文件已经存在,则判断.pyc文件和.py文件修改时间,再决定要不要重新生成.pyc文件(我们既然要用当然是用最新的文件了,在linux我们使用ls -l命令看到的文件的时间其实就是最新修改的时间)

二、模块的编译 compile
mymod .py ------>编译------>mymod.pyc----------->解释执行--------->python3
mymod.pyc:机器指令

三、模块的文档字符串:
模块内第一行没有赋值给任何变量的字符串称为文档字符串
此文档字符串可以用help函数查看

#mymod模块中的内容,""""""中就是文档字符串的内容

""""你看到的这串字符就是mymod的文档字符串,
其实我和函数的文档字符串一样,都是用来做说明的,
比如说明这个模块是什么时候写的,谁写的,有什么函数,用来干啥的等
此模块有俩个函数,一个变量x"""
def fn(x):
    print("我是mymod模块中的fn函数,我被执行")

def fx(m):
    print("我是mymod模块中的fx函数,我也被执行")

print("mymod中的打印语句执行")
x = 100
print("mymod中的x值为",x)

#我们在其他模块查看该内容,用help(模块名)
import mymod
help(mymod)

执行结果:如下图

在这里插入图片描述
**doc**属性:模块的文档字符串绑定着该属性 mymod._doc_可以查看
** _file_属性 **:用来绑定模块对应的文件路径名
示例:
import mymod
print(mymod.file)

模块的_name_属性:
作用:
记录模块名
用来判断是否为主模块

** name 属性说明
1.当此模块作为主模块(也就是
第一个运行的模块**)运行时,
_ name_绑定 _main _ 属性
2.当此模块不是主模块时,模块名为文件名去掉 .py

所谓主模块:主动的去导入其他模块,这样他的名字_ name _就不是文件名。
而是_main _,即就是我们去先运行的那个模块

非主模块:被别的文件导入或者引入的模块,该模块的_name_即使文件名

模块中的_ all _列表:

模块中的_ all 列表是一个可以用来存放可导出属性的字符串列表
作用:
当用from import *语句导入模块时,只导入
all _列表内的属性
(只在该语句时,才只导入 _ all _列表中的属性)

模块的隐藏属性:

扫描二维码关注公众号,回复: 5763511 查看本文章

*模块中以’ _ '开头的属性(变量),在from import *语句导入时
将不会导入,通常称这些属性为隐藏属性(变量)
即就是from import 不能导入使用 _ 开头的名字

示例:
在mymod模块中:
name = ‘hello’
_name = ‘python’
在另外一个模块中:
from mymod import * 执行后只会把name导入,不会将_name导入

标准库模块:
随机模块:random
作用:
用于模拟或生成随机数的模块

常见的一些方法:

import random as r

L = [1,2,3,4,67,9]
r.random() #返回一个[0,1)之间的随机时数
r.uniform(1,10)#返回[1,10)区间内随机实数
r.randrange(1,10,2)#返回range(1,10,2)中的随机数
r.choice(L)#返回序列中的随意元素
r.shuffle(L)#随机指定序列的顺序,打乱序列的顺序
r.sample(L,2)#从序列中选择n个且不重复的元素
r.seed(a = None)#设置随机数种子,默认以系统时间为随机数种子

包(模块包) package
包是将模块以文件夹的组织形式进行分组管理的方法
命名包:文件夹需要 _ init _ .py
远程包:可以没有 init .py文件

作用:
将一系列模块进行分类管理,有利于防止命名冲突
可以在需要时加载一个或部分农垦而不是全部模块

包示例:其实就是一个目录结构
mypack/
_ init _.py
menu.py
games/
_ init _.py
contra . py #魂斗罗
supermario .py #超级玛丽
tanks .py #坦克大战
office/
_ init _.py
excel .py
word .py
powerpoint. py

其实就是一种分类管理的方式,就像行李箱,洗漱放在一个袋子里,卡放在一个袋子里等等

import mypack #导入mypack包
#像调用meny.py模块里的show_menu函数
import mypack.menu #导入mypack包中的menu模块
mypack.menu.show_menu()#调用menu里的show_menu函数

import mypack.games.contra.play() #调用模块contra中的play()函数

包的导入语法:
import 包名 [as 包别名]
import 包名 .模块名 [as 模块新名]
import 包名 .子包名.模块名 [as 模块新名]

from 包名 import 模块名 as 模块新名
from 包名.子包名 import 模块名 [as 模块新名]
from 包名.子包名.模块名 import 属性名 [as 属性新名]

from 包名 import *
from 包名 . 模块名 import *

猜你喜欢

转载自blog.csdn.net/KingOfMyHeart/article/details/88992362