day13模块和包学习总结

本文详细介绍了Python中的模块和包的使用,包括如何导入模块、使用模块内容,以及模块导入的原理和阻止导入的方法。同时,讲解了包的引用方式,并举例说明了math和random模块的使用。文章还涵盖了浮点数转换、绝对值计算、随机数生成等实用功能。
摘要由CSDN通过智能技术生成

模块和包

模块

定义:python中一个py文件就是一个模块

怎么在一个模块中使用另外一个模块的内容(从一个py调用另一个py):

  • 前提:被引用的模块的模块名(py文件名)必须符合变量名要求(是标识符不是关键字)
  • 能被使用的内容:所用的全局变量(包括函数)
  • 怎么用:使用前,必须先导入该模块

导入模块:

  1. import 模块名

导入后可以通过’模块名.xxx’调用所有全局变量

  1. from 模块名 import 变量名1,变量名2,。。。

    导入指定模块中的指定变量;导入后可以直接使用指定的变量

  2. from 模块名 import *

    导入模块中的所有变量;导入后可以直接使用所有变量

  3. import 模块名 as 新模块名

    直接导入指定模块并且对模块进行重命名,重命名后需要通过新模块名来代替原模块名使用模块

  4. from 模块名 import 变量名 as 新变量名…

    # ----------导入方式1--------------
    # import test
    # print(test.a)
    # test.func1()
    # print(test.b)
    
    # ----------导入方式2--------------
    # from test import a, func1
    # print(a)
    # func1()
    
    # ----------导入方式3--------------
    # from test import *
    # print(a)
    # func1()
    # print(b)
    
    # ----------导入方式4--------------
    # import test as ts
    # print(ts.a)
    # ts.func1()
    # print(ts.b)
    #
    #
    # import time as T
    # time = '2000-9-1'
    # print(T.time())
    # print(time)
    
    
    # ----------导入方式5--------------
    from test import a as ta, func1, b
    a = 'hello'
    print(ta)
    func1()
    print(b)
    

导入模块的原理:

不管以什么样的方式导入模块,导入模块的时候系统会自动进入模块执行这个模块中所有的代码

阻止导入

导入模块的时候默认会执行模块中所有的代码,就会导致有些完全没有必要在导入的时候执行的代码被执行。

如果希望导入模块的时候某些代码可以不执行,就需要去阻止代码在被导入的时候执行;

阻止方法:将不需要被执行的代码放到main对应if条件语句里面

用if main 把调用放在里面

if __name__ == '__main__':
    pass

包就是存放(init.py)文件的文件夹

  • 怎么引用包

    方法1import 包名       -       
    直接导入包,导入后可以通过'包.xxx'的方式使用__init__.py中所有的全局变量
    方法2import 包名.模块名   -   
    导入指定包中的指定模块,导入后可以通过'包名.模块名.xxx'来使用指定模块中所有的全局变量
    方法3from 包名 import 模块名1, 模块名2, ...   -  
    导入指定包中的指定模块, 导入后通过'模块名.xxx'使用对应的模块中的内容
    方法4from 包名 import *   -  
    导入包中__init__.py文件中所有的全局变量
    方法5from 包名.模块名 import 变量1, 变量2,... -   
    导入指定模块中的指定变量
    
    # --------------导入方式1: 直接导入包--------------
    # import package1
    # print(package1.y)
    # package1.func3()
    
    # --------------导入方式2: 直接导入包中的指定模块--------------
    # import package1.test2
    # print(package1.test2.x)
    # package1.test2.func2()
    
    # 改良:
    # import package1.test2 as test2
    # print(test2.x)
    # test2.func2()
    
    # --------------导入方式3: 直接导入包中的指定模块--------------
    # from package1 import test2, test3
    # print(test2.x)
    # test2.func2()
    #
    # print(test3.z)
    # test3.func4()
    
    
    # # --------------导入方式4: 导入包中__init__.py文件中所有的全局变量--------------
    # from package1 import *
    # print(y)
    # func3()
    
    # --------------导入方式5: 直接导入包中的指定模块中的指定变量--------------
    # from package1.test3 import z, func4
    # print(z)
    # func4()
    
    
    # from package3.abc.test5 import xx
    # print(xx)
    
    
    # from package1 import y
    # print(y)
    
    
    # import package1
    # print(package1.y)
    # package1.func3()
    #
    # print(package1.test2.x)
    # print(package1.test3.z)
    
    
    # from package1.abc.test6 import abs
    # from package1 import abs
    # print(abs(-199))
    
    import package1
    print(package1.abs(-823))
    

数学模块math、cmath

# math - 普通数字对应的数学模块
# cmath - 复数对应的数学模块
# 补充复数  - python支持复数
# 格式: a + bj
num1 = 10 + 3j
num2 = 5 - 6j
print(num1 + num2)
print(num1 * num2)
# 1.浮点数转整数
# 1)int(浮点数)  -  直接保留整数部分
print(int(1.23))        # 1
print(int(-1.23))       # -1

# 2)math.ceil(浮点数)  -   向大取整
print(math.ceil(1.98))      # 2
print(math.ceil(1.002))     # 2
print(math.ceil(-1.23))     # -1

# 3)math.floor(浮点数)     -   向小取整
print(math.floor(1.98))     # 1
print(math.floor(1.002))    # 1
print(math.floor(-1.23))    # -2

# 4)round(浮点数)      -   四舍五入
# >0.5 -> 入
# <0.5 -> 舍
# == 0.5 ->可能舍也可能入
print(round(1.68))      # 2
print(round(1.402))     # 1

# 注意: x.5的时候,x如果是奇数就入,x是偶数就舍
print(round(1.5))       # 2
print(round(4.5))       # 4


# 2.求绝对值
# 1)abs(数字)
print(abs(-23))
print(abs(-23.45))

# 2)fabs(数字)
print(math.fabs(-23))       # 23.0
print(math.fabs(-23.45))    # 23.45

随机模块 random

# 1. 创建随机整数 : randint(a, b)  - 产生[a,b]的随机整数
print(random.randint(1, 2))


# 2. 创建随机小数:random()  -  产生[0,1)的随机小数
print(random.random())

# 产生 0 ~ 100的随机小数
print(random.random() * 100)
print(float(f'{random.random() * 100: .2f}'))
print(int(random.random() * 10000) / 100)

# 产生30~100的随机小数
print(random.random() * 70 + 30)


# 产生25~55的随机小数
# 0 ~ 1  * 30 -> 0 ~ 30  + 25  -> 25 ~ 55
print(random.random() * 30 + 25)

# 3. 在指定的等差数列中随机获取一个数: randrange(N)、randrange(M, N)、randrange(M, N, step)
print(random.randrange(0, 100, 2))
print(random.randrange(10, 61, 10))


# 4.洗牌:shuffle(列表)  -  将列表中元素的顺序随机打乱
nums = [10, 20, 30, 40, 50]
random.shuffle(nums)
print(nums)


# 5.抽牌
# 1)choice(序列)  - 从指定序列中随机获取一个元素
print(random.choice('abc123'))
print(random.choice(nums))

# 2)
# choices(序列) - 从指定序列中随机获取一个元素,返回值是列表
print(random.choices([10, 20, 30, 40, 50]))
print(random.choices('abc123'))

# choices(序列, k=次数) - 从指定序列中随机获取指定个数个元素,返回值是列表 (有放回抽样)
print(random.choices([10, 20, 30, 40, 50], k=2))

# choices(序列, weights=权重列表, k=次数)
# weights: [1, 1, 1, 1, 1]    1/5
# weights: [1, 2, 1, 1, 1]    1/6、2/6、1/6、1/6、1/6
list1 = ['谢谢!', '5元红包', '100元红包', 'ipone13', 'macPro最新', '100万现金']
print(random.choices(list1, weights=[50000, 50000, 5, 3, 2, 1]))


# 3)
# random.sample(序列, k=次数)         (无放回抽样)  # 3.9以前的版本
# random.sample(序列, k=次数, counts=权重列表)   # 3.9以后的版本
print(random.choices([10, 20], k=2))
print(random.sample([10, 20], k=2))
print(random.sample(list1, k=1, counts=[50000, 50000, 5, 3, 2, 1]))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值