(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)

模块被导入和执行的过程:

模块的属性:

__doc__属性:用于绑定模块的文档字符串
__file__属性:用于绑定模块的文件路径名
__name__属性:用来记录模块自身的名字

示例:

print("mymod.py 文件被加载并导入")
print("当前我这个模块在:", __file__)
print("mymod.py模块的模块名为:", __name__)

if __name__ == '__main__':
    print("您正在用 python3 把 mymod.py当主模块运行")
else:
    print("此模块是被import 导入运行的")

模块的__all__列表

作用:
当 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 * 时不被导入,也称为隐藏属性



(模块包) Package

包是将模块文件夹的组织形式进行分组管理的方法
作用:
将一系列模块进行分类管理,有利于防止命名冲突
可以在需要的时候加载一个或者部分模块
示例:

	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("魂斗罗模块被加载")

练习:

    1. 模拟斗地主发牌,牌共54张
      黑桃(’\u2660’), 梅花(’\u2663’), 红桃(’\u2666’)
      方块(’\u2665’)
      A2-10JQK
      大王,小王
      三个个,每人发17张牌,底牌留三张
      输入回车,打印第1个人的17张牌
      输入回车,打印第2个人的17张牌
      输入回车,打印第3个人的17张牌
      输入回车,显示三张底牌
      思路:
      #1.先循环把所有poker存在一个列表内
      #2.导入random.shffle()打乱顺序
      #3.分别切片17张,最后三张为底牌

猜你喜欢

转载自www.cnblogs.com/DylanSkyDanger/p/9833750.html
D13