python开发day13 系统模块 sys 自定义模块 import 语句搜索模块的路径顺序 模块__doc__ 属性: 随机模块 random

系统模块   sys  

此模块都是运行时系统的信息

示例

 

 

自定义模块

示例:

自定义模块

#此模块中有两个数据:

#    name1, name2

 

# 此模块有两个函数:

#def myfac   def mysum

def myfac(n):

    '''我是myfac 的文档字符串'''

    print("正在计算%d的阶乘!" % n)

 

 

def mysum(n):

    print("正在计算%d的和!" % n)

 

name1 = "audi"

name2 = "tesla"

 

print("mymod 模块被导入")

导入并测试模块

# test_mymod.py

#调用模块mymod.py

 

import mymod

from mymod import name1, name2

 

mymod.myfac(5)

 

mymod.mysum(100)

 

print(mymod.name1)

print(mymod.name2)

 

print('name1=', name1)

name1 = "q老师"

print('name1=', name1)

 

 

import   语句搜索模块的路径顺序

1. 搜索程序运行时的路径(当前路径)

2.  Sys·path 提供的路径

3.  搜索内置模块

 

模块的加载过程:

在模块导入时,模声所有语句会执行

如果一个模块已经被导入,则再次导入时不会重新执行模块的语句模块的重新加载

 

Import  mymod

Import  imp

Imp . reload(mysod)  # 在运行时重新加载mysod模块

 

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

1. 先搜索相关路径(.Py文件)

2. 判断是否有此模块对应的.py 文件,如果.pyc文件比·py文件新,则直接加载·pyc文件

3.  否则用模块·py 文件生成·pyc并加载执行

 

 

Pyc 模块的编译

          编译             编译后

Mymod ·py-----àmymod·pyc--------à python3

 

 

模块的文档字符串

模块内第一个没有赋值给任何变量的字符串为文档字符串

 

模块__doc__ 属性:

用于绑定模块文档字符串

__file__属性

绑定模块对应的文件路径

 

__name__属性

__name__属性用来记录模块的自身的名字

 

作用:

1. 记录模块名

2. 判断是否为主模块

说明:

1.当此模块作为主模块(也就是第一个运行的模块)

运行时,__name__绑定__main__

2.当此模块不是主模块时,__name__绑定模块名(文件名去掉· py后蕞)

 

 

模块__all__列表

模块中的__all__列表是 一个用来存放可导入出属性的字符串列表

作用:

限定当用from   xx x  import  *语句导入时,只导入__all__列表内的属性

示例:

# # __all__ 列表限定其它模块在用from mymod4 import *导入时

# # 只导入 'myfun1', 'myfun3', 'name1'

 

# __all__ = ['myfun1', 'myfun3', 'name1']

 

# def myfun1():

#     print("myfun1被调用")

 

# def myfun2():

#     print("myfun2被调用")

 

# def myfun3():

#     print("myfun3被调用")

 

 

# name1 = 'aaaaa'

# name2 = 'bbbbbbb

模块的隐藏属性

模块中以_’开头的属性,在from  xxx   import  *

导入时将不被导入,通常称为这些属性为隐藏属性

示例:

# '''此模块示意隐藏属性及其用法

 

# '_' 开头的变量名在from xxx import *语句导入时将不被导入

# '''

 

# def f():

#     print("f函数被调用")

 

# def _f():

#     print("_f函数被调用")

# def __f():

#     print("__f函数被调用")

 

# name = "aaaa"

# _name = 'bbbb'

# __name = 'cccc'

 

 

随机模块 random

作用:

用于模拟或生成随机输出的模块

示例:

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

n = 0

while True:

    y = int(input('请输入一个整数: '))

    n += 1

    if y == x:

        print('恭喜您猜对了!')

        break

    elif y > x:

        print('您猜大了!')

    else:

        print('您猜小了!')

    print('您猜了',n,'')

print('您一共猜了', n,'')

 

包(模块包)package

包是将模块以文件夹的组织形式进行分组管理的方法

 

作用:

将一系列模块进行分类管理,有利于访问命名冲突可以在需要时加载一个或部分模块,而不是全部模块

 

包示例:

mypack/

        __init__.py

        menu.py

        games/

            __init__.py

            contra.py

            supermario.py

            tanks.py

        office/

            __init__.py

            excel.py

            word.py

            powerpoint.py

  创建命令:

    mkdir mypack

    cd mypack

    touch __init__.py menu.py

    mkdir games office

    cd games

    touch __init__.py contra.py supermario.py tanks.py

    cd ../office

    touch __init__.py excel.py word.py

 

 

__init__.py   文件

__init__.py  是常规包内必须存在的文件

__init__.py 会在包加载时被自动调用

 

作用:

编写此包的内容

在内部填写包的文档字符串

 

 

包的导入语法:

#同模块的导入规则相同

Import  包名 [as   包别名]

Import  包名·模块名 [as   模块新名]

Import  包名·子包名·模块名 [as  模块新名]

Import  包名import  模块名 [as  模块新名]

Import  包名·子包名 import 模块名 [as  模块新名]

Import  包名·子包名·模块名 import 属性名[as  属性新名]

 

from  包名· import  *

from  包名·子包名 import  *

……

 

练习:

1. 模拟‘斗地主’发牌

牌共54

 

花色:

黑桃(’\u2664’,梅花(‘\u2663’)

方块(‘\u2665’), 红桃(‘\u2666’)

 

大小王

数字:

A0~10JQK

 

1) 生成54张牌

2) 三个人玩牌,没人发17张,底牌留三张

输入回车,打印第1个人的17张牌

输入回车,打印第2个人的17张牌

输入回车,打印第3个人的17张牌

输入回车,打印3张底牌

:

 

# L = ['A'] + [str(i) for i in range(2,11)] + list('JQK')

# A = ["\u2660 ","\u2663 ","\u2665 ","\u2666 "]

# B = ["大王","小王"]

 

# for i in L:

#     for x in A:

#         B.append(x + i)

# print(B)

# print(len(B),"张牌")

 

# B2 = B

# import random

# random.shuffle (B2)

 

# print("第一个人的17张牌为:",B2[:17])

# print()

# print("第二个人的17张牌为:",B2[17:34])

# print()

# print("第三个人的17张牌为:",B2[34:51])

# print()

# print("底牌为:",B2[51:])

2. 将学生信息管理系统拆分成相应的模块:

建议:

Main.py  #放主事件循环 main函数及相关函数

Menu.py  #放菜单相关的函数

Studet _info.py  # 放学生信息操作i相关的函数

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值