day15模块

系统模块(sys):此模块是运行时系统的信息
1.sys模块的变量:
sys.path 模块搜索路径 path[0] 是当前脚本程序的路径名,否则为 ''
sys.modules 已加载模块的字典
sys.version 版本信息字符串
sys.version_info 版本信息的命名元组
sys.platform 操作系统平台名称信息
sys.argv 命令行参数 argv[0] 代表当前脚本程序路径名
sys.copyright 获得Python版权相关的信息
sys.builtin_module_names 获得Python内建模块的名称(字符串元组)
2.标准输入输出时会用到
sys.stdin 标准输入文件对象,多用于input()
sys.stdout 标准输出文件对象,多用于print()
sys.stderr 标准错误输出文件对象, 用于输出错误信息
3.sys模块的方法
函数名 描述
sys.exit([arg]) 退出程序,正常退出时sys.exit(0)
sys.getrecursionlimit()
sys.getrecursionlimit() 得到递归嵌套层次限制(栈的深度)
sys.setrecursionlimit(n) 得到和修改递归嵌套层次限制(栈的深度)
自定义模块:
示例:
mymod.py  #自定义模块
import 语句搜索模块的路径顺序:
1.搜索程序运行时的路径(当前路径)
2.sys.path提供 的路径
3.搜索内置模块
模块的加载过程:
在模块代入时,模块所有语句会执行,如果一个模块已经被导入,再次导入是不会重新执行模块内的语句;
import mymod
import imp
imp.reload(mymod)   #在运行时重新加载mymod模块
模块被导入和执行的过程
1.先搜索相关路径找模块(.py文件)
2.判断是否有此模块对应的.py文件,如果.pyc文件比.py文件新,则直接加载.pyc文件
3.否则用模块.py文件生成.py并加载执行
pyc,模块的编译
  编译 解释执行
mymod.py --------->>> mymod.pyc ----------->>>Python3
模块的文档字符串:
模块内第一个没有赋值给任何变量的字符串为文档字符串:
模块属性:
__doc__属性:用于绑定模块文档字符串
__file__属性:模块对应的文件路径
__name__属性:用来记录模块的自身的名字
作用:1.记录模块名
    2.判断是否为主模块
    说明:当此模块作为主模块(也就是第一个运行的模块)运行时,__name__绑定'__main__'
    3.当此模块不是主模块时,__name__绑定模块名(文件名去掉.py后缀)
模块中__all__列表:
模块中__all__列表是一个用来存放可导出属性的字符串列表:
作用:
限定当用from xxx import * 语句导入时,只导入__all__列表内的属性
示例:
模块的隐藏属性:
模块中以'_'开头的属性,在from xxx import * 导入时不被导入,通常称这些属性为隐藏属性时
随机模块random
作用:用于模拟或生成随机输出的模块
文档参见:
import random as R
函数名 描述
R.random() 返回一个[0, 1) 之间的随机实数
R.uniform(a,b) 返回[a,b) 区间内的随机实数
R.randrange([start,] stop[, step])返回range(start,stop,step)中的随机数
R.choice(seq) 从序列中返回随意元素
R.shuffle(seq[, random]) 随机指定序列的顺序(乱序序列)
R.sample(seq,n) 从序列中选择n个随机且不重复的元素
R.getrandbits(nbit) 以长整型的形式返回用nbit位来表示的随机数
R.seed(a=None) 用给定的数a设置随机种子,不给参数a则用当前时间设置随机种子
-----------------------------------------------------------------------------------------
练习:
猜数字游戏:随机生成一个0-100的整数,用于变量x绑定,让用户输入一个数y输出猜数字的结果
1.如果y=x,则提示"恭喜您猜对了",退出程序
2.如果y>x,则提示"您猜大了"
3.如果y<x,则提示"您猜小了"
让用户循环输入,直到猜对为止,同时显示用户猜数字的次数后退出程序
-----------------------------------------------------------------------------------------
import random
x = random.randrange(0,100,1)  #(101)
print(x)
i = 0
while True:
    y = int(input("请输入您猜的数字"))
    i += 1
    if y == x:
        print("恭喜您猜对了")
        print(i)
        break
    elif y > x:
        print("您猜大了")
    elif y < x:
        print("您猜下小了")
    i += 1
print("您一共猜了",i,"次")
------------------------------------------------------------------------------------------
包(模块包) package:
包是将模块一文件夹的组织形式进行分组管理的方法:
作用:将一系列模块进行分类管理,有利于访问命名冲突,可以在需要时加载一个或部分模块,而不是全部模块
包示例:
mypack/
__init__.py
memu.py
games/
__init__.py
contra.py
supermario.py
tanks.py
office/
__init__.py
excel.py
word.py
powerpoint.py
创建命令:
mkdir mypack
cd mypack
touch __int__.py
mkdir games office
cd games
touch __init__.py contra.py supermario.py tanks.py
touch __init__.py excel.py word.pypowerpoint.py


__init__.文件
__init__.py是常规包内必须存在的文件
__init__.py会在包加载时被自动调用
作用:
编写此包的内容
在内部填写包的文档字符串
包的导入语法:
#同模块的导入规则相同
import 包名 [as 包别名]
import 包名.模块名 [as 模块新名]
import 包名.子包名.模块名 [as 模块新名]


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

from 包名 import *
from 包名.子包名 import *
...
练习:
1.模拟'斗地主'发牌,牌共54张,花色:黑桃('\u2668'),梅花('\u2663'),方块('\u2665'),红桃('\u2666')
大小王 数字(A0-10JQK)
1.生成54张牌
2.三个人玩牌,每人发17张,底牌留三张
输入回车,打印第1个人的17张牌
输入回车,打印第2个人的17张牌
输入回车,打印第3个人的17张牌
输入回车,打印3张底牌
2.将学生信息管理程序拆分成相应的模块:
建议:
main.py 放主事件及其相关函数
menu.py 放菜单相关的函数
student_info.py 放学生信息操作相关的函数






















































猜你喜欢

转载自blog.csdn.net/robin13438235412/article/details/80754051