python包和模块

本文详细介绍了Python中的模块和包的使用,包括导入模块的多种方式、阻止导入的原理、包的概念及其使用方法,以及数学模块和随机模块的常用功能,如浮点数转整数、求绝对值、创建随机数等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 模块

1.1 什么是模块

python中一个py文件就是一个模块。

1.2 怎么在一个模块中使用另一个模块的内容

1)前提:被使用的模块的模块名(py文件的文件名)必须符合变量名的要求(是标识符,不是关键字);

2)能被使用的内容:所有的全局变量;

3)怎么用:使用别的模块中的内容前,必须先导入模块。

1.3 导入模块

1)import 模块名 - 导入指定模块;导入后可以通过’模块名.xxx’的方式使用这个模块中所有的全局变量;

import test
print(test.a)
test.func1()
print(test.b)

2)from 模块名 import 变量名1,变量名2,… - 导入指定模块;导入后可以直接使用指定变量;

from test import a,b,func1
print(a)
func1()
print(b)

3)from 模块名 import * - 导入指定模块中的变量;导入后可以直接使用所有变量;

from test import *
print(a)
func1()
print(b)

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

import test as ts
print(ts.a)
ts.func1()
print(ts.b)

5)from 模块名 import 变量名1 as 新变量名1,变量名2,变量3 as 新变量名3,…。

from test import a as ta,func1,b
print(ta)
func1()
print(b)

2. 导入原理与阻止导入

2.1 导入模块的原理

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

2.2 阻止导入

1)因为导入模块的时候默认会执行模块中所有的代码,就会导致有写完全没有必要在导入的时候执行的代码被执行。
2)如果希望导入模块的时候某些代码可以不执行,就需要去阻止代码在被导入的时候执行。

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

print(f'download:',__name__)
def download_movie(name):
    print(f'{name}开始下载')
    print('下载中')
    print(f'{name}结束下载')

# 在这个if语句里面的代码在被别的模块导入的时候不会被执行。  -  直接写main敲回车
if __name__ == '__main__':
    names = ['a','b','c','d']
    for name in names:
        download_movie(name)

3. 包

3.1 什么是包

包就是存放_init_.py文件的文件夹。

3.2 怎么使用包(文件夹)中的内容

1)import 包名 - 直接导入包,导入后可以通过’包.xxx’的方式使用_init_.py中所有的全局变量;

# 导入方式1:直接导入包
import package1
print(package1.y)
package1.func3()

2)import 包名.模块名 - 导入指定包中的指定模块,导入后可以通过’包名.模块名.xxx’来使用指定模块中所有的全局变量;

# 导入方式2:直接导入包中的指定模块
import package1.test2
print(package1.test2.x)
package1.test2.func2()

# 改良
import package1.test2 as test2
print(test2.x)
test2.func2()

3)from 包名 import 模块名1,模块名2,… - 导入包中的指定模块,导入后通过’模块名.xxx’使用对应的模块中的内容;

# 导入方式3:直接导入包中的指定模块
from package1 import test2,test3
print(test2.x)
test2.func2()
print(test3.z)
test3.func4()

4)from 包名 import * - 导入__init__.py文件中所有的全局变量;

# 导入方式4: 导入包中__init__.py文件中所有的全局变量
from package1 import *
print(y)
func3()

5)from 包名.模块名 import 变量1,变量2,… - 导入指定模块中的指定变量。

# 导入方式5:直接导入包中的指定模块中的指定变量
from  package1.test3 import z,func4
print(z)
func4()

4. 数学模块

import math,cmath
# math  -  普通数字对应的数学模块
# cmath  -  复数对应的数学模块
# complex  -  复数: a + bi

4.1 补充复数

python支持复数。

# 格式: a + bj  (j ** 2 = -1)
num1 = 10 + 3j
num2 = 5 - 6j
print(num1 + num2)   # (15-3j)
print(num1 * num2)   # (68-45j)

4.2浮点数转整数

4.2.1 int(浮点数)

int(浮点数) - 直接保留整数部分;

print(int(1.23))    # 1
print(int(-1.23))   # -1
4.2.2 math.ceil(浮点数)

math.ceil(浮点数) - 向大取整;

print(math.ceil(1.98))    # 2
print(math.ceil(1.002))   # 2
print(math.ceil(-1.23))   # -1
4.2.3 math.floor(浮点数)

math.floor(浮点数) - 向小取整;

print(math.floor(1.89))    # 1
print(math.floor(1.002))   # 1
print(math.floor(-1.23))   # -2
4.2.4 round(浮点数)

round(浮点数) - 四舍五入;

print(round(1.98))    # 2
print(round(1.002))   # 1

注意:x.5的时候,x如果是奇数就入,x是偶数就舍。

print(round(1.5))     # 2
print(round(4.5))     # 4

4.3 求绝对值

4.3.1 abs(数字)
print(abs(-23))       # 23
print(abs(-23.45))    # 23.45
4.3.2 fabs(数字)
print(math.fabs(-23))     # 23.0
print(math.fabs(-23.45))  # 23.45

5. 随机模块

5.1 创建随机整数

randint(a,b) - 产生[a,b]的随机整数。

print(random.randint(1,2))

5.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)

5.3 在指定的等差数列中随机获取一个数

# random.randrange(N)、random.randrange(M,N)、random.randrange(M,N,step)

print(random.randrange(0, 100, 2))
print(random.randrange(10, 61, 10))

5.4 洗牌

shuffle(列表) - 将列表中元素的顺序随机打乱.

nums = [10, 20, 30, 40, 50]
random.shuffle(nums)
print(nums)

5.5 抽牌

5.5.1 choice(序列)
# 1) choice(序列)  -  从指定序列中随机获取一个元素
print(random.choice('abc'))
print(random.choice(nums))
5.5.2 choices(序列)、choices(序列,key=次数)
# choices(序列)  -  从指定序列中随机获取一个元素,返回值是列表
print(random.choices([10, 20, 30, 40, 50]))
print(random.choices('abc123'))

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

# choices(序列,weights=权重列表,key=次数)
# weights: [1, 1, 1, 1, 1]  1/5
# weights: [1, 2, 1, 1, 1]  1/6、1/3、1/6、1/6、1/6
list1 = ['谢谢!','5元红包','100元红包','iphone13','macPro','100万现金']
print(random.choices(list1,weights=[50000, 5000, 10, 3, 2, 1]))
5.5.3 sample()
# sample() -  (无放回抽烟)
# 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, 5000, 10, 3, 2, 1]))

6. time模块

6.1 time()

time() - 获取当前时间,返回的是时间戳。

1)时间戳 - 通过保存一个时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单 位:秒)来保存一个时间值;

2)使用时间戳保存时间的好处:a. 节约内存 b. 方便加密。

t1 = time.time()
print(t1)    # 1651052118.7687235

6.2 localtime()

1)localtime() - 获取本地当前时间,返回的是结构体时间;

2)localtime() - 将时间戳转换成结构体时间。

t2 = time.localtime()
print(t2)              # tm_day - 星期:0(星期一) ~ 6(星期天)
t3 = time.localtime(0)
print(t3)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值