4.27包和模块学习笔记
模块
1. 模块
Python中一个py文件就是一个模块
2. 怎么在一个模块中使用另一个模块的内容
前提: 被使用的模块的模块名(py文件的文件名)符合变量名的要求(是标识符,不是关键字)
能被使用的内容:所有的全局变量
怎么用:使用别的模块中的内容前,必须先导入模块
3. 导入模块
1) import 模块名 - 导入指定模块名;导入后可以通过’模块名.XXX’的方式使用这个模块中的全局变量
2) from 模块名 import 变量名1, 变量名2, … - 导入指定模块;导入后可以直接使用指定变量
3) from 模块名 import * - 导入指定模块中所有变量;导入后可以直接使用所有变量
4) import 模块名 as 新模块名 - 直接导入指定模块并且对模块进行重命名,重命名后需要通过新模块名来代替原模块名来使用
5) from 模块名 import 变量名1 as 新变量名1, 变量名2, 变量名3 as 新变量名3, … - 对变量进行重命名
导入方式1
import test
print(test.a)
test.func1()
print(test.b)
导入方式2
from test import a, func1
print(a)
导入方式3
from test import *
print(a)
func1()
print(b)
import test as ts
导入方式4
print(ts.a)
ts.func1()
print(ts.b)
from test import a as c, func1
print(c)
导入原理
1. 导入模块原理
不管以什么样的方式导入模块,导入模块时系统会自动进入模块执行其中所有代码
from download import download_movie
download_movie('加勒比海盗')
2. 阻止导入
因为导入模块的时候默认会执行模块中所有代码,就会导致有些完全没有必要在导入时执行的代码被执行
如果希望导入模块时某些代码不执行,就需要去阻止代码被导入时执行 - 阻止导入
阻止方法:将不需要被执行的代码放入__name__的if语句中
包
1.包
包就是存放__init__.py文件的文件夹
2.怎么使用包中的内容
方法1:import 包名 - 直接导入包,导入后可以通过’包名.XXX’的方式使用__init__.py中所有内容
方法2:import 包名.模块名 - 导入指定包中的指定模块,导入后可以通过’包名.模块名.XXX’的方式使用模块内所有内容
方法3*:from 包名 import 模块名1, 模块2, … - 导入指定包中的指定模块,导入后可以通过’模块名.XXX’的方式使用模块内所有内容
方法4:from 包名 import * - 导入包中__init__.py文件中所有全局变量
方法5*:from 包名.模块名 import 变量1, 变量2, … - 导入指定模块中的指定变量
导入方式1:
import package3
print(package3.y)
导入方式2:
import package3.test2 as ts2
print(ts2.x)
导入方式3:
from package3 import test3 as ts3
print(ts3.m)
ts3.func3()
导入方式4:
from package3 import *
print(y)
func4()
导入方式5:
from package3.test3 import m, func3
print(m)
func3()
import package3
print(package3.test2.x)
数学模块
import math, cmath
math - 普通数学
cmath - complex 复数对应的数学模块
补充复数 - Python支持复数
格式: a + bi -> a + bj b==1时 在python中不能省
num3 = 1 + 1j
num2 = 2 - 2j
print(num2 + num3)
1.浮点数转整数
1)int(浮点数) - 直接保留整数
print(int(1.23))
print(int(-1.23))
2)math.ceil(浮点数) - 向大取整
print(math.ceil(1.98))
print(math.ceil(1.0002))
print(math.ceil(-1.23))
3)math.floor(浮点数) - 向小取整
print(math.floor(1.98))
print(math.floor(1.002))
print(math.floor(-1.23))
4)round(浮点数) - 四舍五入
print(round(1.68))
print(round(-1.02))
注意:x.5时 x如果是奇数就入, x是偶数就舍
print(round(1.5))
print(round(4.5))
2.绝对值
abs(数字)
print(abs(2.34))
fabs(数字)
print(math.fabs(-234))
随机模块
import random
1. 创建随机整数:randint(a, b)
print(random.randint(1, 100))
2.创建随机小数:random() - 产生[0, 1)的随机小数
print(random.random())
产生0 - 100的随机小数
print(f'{random.random() * 100:.2f}')
产生30 - 100的随机小数
print(random.random() * 70 + 30)
产生一个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('abc'))
2) choices(序列) - 从指定序列中随机获取一个元素,返回值是列表
print(random.choices('abc'))
choices(序列, k=个数) - 从指定序列中随机获取指定个数个元素,返回值为列表(有放回抽取)
print(random.choices(nums, k=2))
# choices(序列,k=次数)
# weights: [1, 1, 1, 1, 1] 1/5
# weights: [1, 2, 1, 1, 1] 1/6、2/6、176、176、1/6
list1 =['谢谢!', '5元红包', '100元红包', 'ipone13', 'macPro最新', '100万现金']
# count = 0
# while True:
# count += 1
# x = random.choices(list1, weights=[100000, 1000, 5, 3, 2, 1])
# if x == '100万现金':
# break
# print(count)
3)
random.sample(序列, k=次数) - (无放回抽样)
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])) python3.9