(D13)Random模块-包
Posted dylanskydanger
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(D13)Random模块-包相关的知识,希望对你有一定的参考价值。
随机模块:Random
作用:
用于模拟或者生成随即输出的模块儿
用法示意:
import random as R
函数名 | 描述 |
---|---|
R.random() | 返回一个(0,1)之间的堆积实数 |
R.unifrom(a,b) | 返回[a,b]之间的随机实数 |
R.randin(a,b) | 返回在[a,b] 范围内的整数 |
R.randrange | 返回range(start,stop,step)中的随机数 |
R.chise(seq) | 从序列中返回任意元素 |
R.shuffle(seq[random]) | 随机指定序列顺序(打乱顺序) |
R.sample(seq,n) | 从序列中选择n个随机契额不重复的元素 |
import语句
from import语句
from import *语句
示例:
def myfac(n):
‘‘‘这是函数的文档字符串‘‘‘
print("正在计算n的阶乘")
def mysum(n):
print("!!!正在计算1 + 2 + 3 + .... + %d的和" % n)
name1 = "Audi"
name2 = "tesla"
print("mymod.py 文件被加载并导入")
print("当前我这个模块在:", __file__)
print("mymod.py模块的模块名为:", __name__)
if __name__ == ‘__main__‘:
print("您正在用 python3 把 mymod.py当主模块运行")
else:
print("此模块是被import 导入运行的")
import 语句查找模块文件的路径顺序:
import 模块名 # 去哪儿找这个 “模块名.py”
1. 搜索内建模块
2. 搜索程序运行时的路径(当前路径)
3. sys.path 提供的路径
sys.path 是一个列表,内部存入的都是模块的搜索路径
>>> import sys
>>> print(sys.path)
模块被导入和执行的过程:
- 先搜索相关路径找到 模块名.py
- 判断是否有此模块对应的pyc文件.如果.pyc文件比.py
文件新则直接加载.pyc文件 - 如果.pyc文件比.py文件旧,则用模块名.py 生成 .pyc
文件,并加载执行
模块的编译
编译 解释执行
mymod.py -----> mymod.pyc --------> python3
__doc__属性:用于绑定模块的文档字符串 |
---|
__file__属性:用于绑定模块的文件路径名 |
__name__属性:用来记录模块自身的名字 |
示例:
print("mymod.py 文件被加载并导入")
print("当前我这个模块在:", __file__)
print("mymod.py模块的模块名为:", __name__)
if __name__ == ‘__main__‘:
print("您正在用 python3 把 mymod.py当主模块运行")
else:
print("此模块是被import 导入运行的")
作用:
当 from mod import * 语句导入时,只导入__all__列表内的属性
说明:
__all__列表是存放可导出属性的字符串列表
示例:
__all__ = [‘f1‘, ‘name1‘]
def f1():
f2()
f3()
def f2():
pass
def f3():
pass
name1 = ‘aaaaa‘
name2 = ‘bbbbb‘
模块的隐藏属性:
模块中以‘_’开头的属性,在用 from mod import * 时不被导入,也称为隐藏属性
包是将模块文件夹的组织形式进行分组管理的方法
作用:
将一系列模块进行分类管理,有利于防止命名冲突
可以在需要的时候加载一个或者部分模块
示例:
mypack/
__init__.py
menu.py
games/
__init__.py
contra.py
supermario.py
tanks.py
office/
__init__.py
excel.py
word.py
包的导入:
同模块的导入规则 |
---|
- import 包名 [as 包别名]
- import 包名.模块名 [as 模块新名]
- import 包名.子包名.模块名 [as 模块新名]
- from 包名 import 模块名 [as 模块新名]
- from 包名.子包名 import 模块名 [as 模块新名]
- from 包名.子包名.模块名 import 属性名 [as 属性新名]
- from 包名 import *
- from 包名.模块名 import *
…
__init__文件 - 常规包内必须存在的文件
- 会在包加载的时候自动调用
作用:
编写此包的内容
在包内填写文档字符串
在__init__.py中可以加载此包所依赖的一些其他模块
all.py中的__all__列表
作用:
用来记录有哪些模块儿或包需要导入
当from 包 import * 语句导入模块儿时,只查找__all__中所有模块儿或者子包
说明:
__all__列表同样只在from mod import * 起作用
包的相对导入:
包的相对导入是指包内模块的相互导入
语法:
from 相对路径包或模块 import 属性或模块名
或
from 相对路径包或模块 import *
相对路径:
在from import语句和 from imoprt *语句中可以使
用相对路径
-
- 代表当前目录
- 代表上一级目录
- 代表上二级目录
- 以此类推
注: 相对导入时不能超出包的外部
- 以此类推
- 代表上二级目录
- 代表上一级目录
示例:
# file : mypack/games/contra.py
def play():
print("正在玩魂斗罗....")
def gameover():
# 调用mypack/menu.py里的show_menu
# 1. 用绝对导入方式导入
# from mypack.menu import show_menu
# show_menu()
# 2. 用相对导入方式导入
from ..menu import show_menu
show_menu()
# 调用mypack/games/tanks.py 里的play()
# 1. 绝对导入
# from mypack.games.tanks import play
# 2. 相对导入
# from .tanks import play
from ..games.tanks import play
# from ...mypack.games.tanks import play # 出错
play()
print("魂斗罗模块被加载")
练习:
- 模拟斗地主发牌,牌共54张
黑桃(’u2660’), 梅花(’u2663’), 红桃(’u2666’)
方块(’u2665’)
A2-10JQK
大王,小王
三个个,每人发17张牌,底牌留三张
输入回车,打印第1个人的17张牌
输入回车,打印第2个人的17张牌
输入回车,打印第3个人的17张牌
输入回车,显示三张底牌
思路:
#1.先循环把所有poker存在一个列表内
#2.导入random.shffle()打乱顺序
#3.分别切片17张,最后三张为底牌
以上是关于(D13)Random模块-包的主要内容,如果未能解决你的问题,请参考以下文章