[python全栈]02.python基础[part III](2)

目录

  1. 系统模块
  2. 自定义模块
  3. 模块的加载与导入
  4. 模块的属性
  5. 随机模块
  6. 包的导入

1. 系统模块
系统模块 sys :
此模块全部是运行时系统相关信息

函数说明
sys.path模块搜索路径path[0]是当前脚本程序的路径名
sys.modules已加载模块的字典
sys.version版本信息字符串
sys.version_info版本信息的命名元组
sys.platform操作系统平台名称信息
sys.builtin_module_names获得python内建模块的名称(字符串元组)
sys.exit([arg])程序退出,正常退出是sys.exit(0)
sys.getrecursionlimit()得到递归嵌套层次限制(栈的深度)

2. 自定义模块

	函数、对象、类写在 .py 文件里,命名规则与变量名规则相同
	模块有各自独立的作用域,使用 "模块名." 隔离开
	但 from 模块名 import * 可能引起变量名冲突 
模块化编程的优点 :
	1.有利于多人合作开发
	2.使代码更易于维护
	3.提高代码的复用率
	3.有利于解决变量名冲突问题

3. 模块的加载与导入

import 语句 搜索模块的路径顺序 :
	1.搜索程序运行时的路径(当前路径)
	2.sys.path提供的路径
	3.搜索内置模块
sys.path是一个存储模块搜索路径的列表 :
	1.可以把自定义的模块放在相应的路径下导入
	2.可以把自己模块的路径添加在sys.path列表中: sys.path.append()
模块的加载过程 :
	1.在模块导入时,模块的所有语句会执行
	2.如果一个模块已经导入,则再次导入时不会重新执行模块内的语句
模块的重新加载 :
	import 模块名		#首次加载该模块
	import imp
	imp.reload(模块名)	#重新加载该模块
模块被导入和执行的过程 :
	1.先搜索相关的路径找模块(.py)
	2.判断是否有此模块对应的.pyc文件,如果存在pyc文件,且比.py文件新
		则直接加载.py文件(创建时间或最后修改时间)
	3.否则用.py文件生成.pyc后在进行加载
pyc 模块的编译文件
         编译            执行
mod.py ------->mod.pyc------->python3

4. 模块的属性

属性的本质是变量(是模块内的全局变量)
模块内常用的预置属性
	__doc__ 属性
		作用:用来绑定模块的文档字符串
			模块内第一个没有赋值给任何变量的字符串作为模块的文档
	__file__ 属性
		作用:用来绑定模块对应的文档路径名
			1.对于内建模块不绑定路径(没有__file__属性)
			2.对于其他模块,绑定路径名的字符串
	__name__ 属性
		此属性用来记录模块的自身名称
		作用:
			1.记录模块名称
			2.用来判断是否为主模块(最先运行的模块)
		说明:
			1.当此模块为主模块时,__name__ 绑定 '__main__'
			2.当此模块不是主模块时,此属性绑定模块名
			if __name__ = '__main__' :
			来判断模块是否被当做主模块
模块的 __all__ 列表 :
	模块中的 __all__ 列表是一个用了存放可导出属性的字符串列表
	作用:	
		当使用 from import * 语句导入时,只导入 __all__ 列表内的属性
	注 : 
		在模块前加 __all__ = ["属性1","属性2"]
		作用: 使用 from XXX import * 时只导入该模块内的属性1和属性2
		不影响 import 模块名 ; 模块名.属性3的使用
	模块的隐藏属性 :
		模块中以 '_' 开头的属性,在 from import * 语句导入时,
			将不被导入,通常称这些属性为隐藏属性

5. 随机模块

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

import random as R

函数名说明
R.random()返回一个[0,1)之间的随机实数
R.uniform(a,b)返回[a,b)区间内的随机实数
R.randrange([start,]stop[,step])返回renge(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绑定,
输出猜数字的结果:
'''
import random as R
x = int(R.uniform(0,100))
n = 1
y = int(input('猜猜我想的是几?请输入[0,100)之间数:\n'))
while True :
    if y == x :
        print('猜对了,你一共猜了 %d 次' % n)
        break
    elif y > x :
        y = int(input('猜大了,再试一次\n'))
        n += 1
    elif y<x :
        y = int(input('猜小了,再试一次\n'))
        n += 1

6. 包

表达式 --->语句 --->函数/类 --->模块 --->包
包(模块包) package
	包是将模块以文件夹的形式进行分组管理的方法
作用:将一系列模块进行分类管理,有利于防止命名冲突
	 可以在需要时加载一个或部分模块而不是全部模块
  包示例:
    mypack/
        __init__.py
        menu.py
        games/
            __init__.py
            contra.py
            supermario.py
            tanks.py
        office/
            __init__.py
            excel.py
            word.py
注 : __init__.py 文件 : 
	常规包内必须存在的文件
	__init__.py 会在包加载时被自动调用
作用:
    编写此包的内容
    在内部填写文档字符串
    在__init__.py 内可以加载此包所依赖的一些其它模块		  

7. 包的导入

包的导入:
  用三条import语句可以导入包(同模块的导入规则)

  import 包名 [as 包别名]
  import 包名.模块名 [as 模块新名]
  import 包名.子包名.模块名

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

  from 包名 import *
  from 包名.模块名 import *
  ...
模拟斗地主发牌,牌共54张
    黑桃('\u2660'), 梅花('\u2663'),方块('\u2665'),红桃('\u2666')
    大小王
    A2-10JQK
    三个人玩,每个人发17张牌,底牌留三张
    操作:
      输入回车: 打印第一个人的17张牌
      输入回车: .....二...........
      输入回车: .....三...........
      输入回车: 打印三张底牌
import random
#生成54张牌
def get_poke():
        kinds = ['\u2660','\u2663','\u2665','\u2666']
        number = ['A']+list(
                map(str,range(2,11)))+['J','Q','K']
        L = [x + y for x in kinds
                for y in number] +['大王','小王']
        return L
def poke_games() :
        pk = get_poke()
        #洗牌
        random.shuffle(pk)
        #切片拿牌
        input('输入回车继续: ')
        print('第一个人的牌为 :',pk[0:17])
        input('输入回车继续: ')
        print('第二个人的牌为 :',pk[17:34])
        input('输入回车继续: ')
        print('第三个人的牌为 :',pk[34:51])
        input('输入回车继续: ')
        print('底牌为 :',pk[51:54])        

poke_games()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值