0
点赞
收藏
分享

微信扫一扫

DAY13 包和模块

瑾谋 2022-04-27 阅读 48
python

DAY13 包和模块

一. 模块

1.1 模块

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

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

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

  • 能被使用的内容:所有的全局变量(普通变量,不在函数中的函数,for的变量)

  • 怎么用:使用别的模块中的内容前,必须先导入模块
    在这里插入图片描述

1.3 导入模块

  1. import 模块名 - 导入指定模块;导入后可以通过’模块名.xxx’的方式使用这个模块中所有全局变量
import test
print(test.a)
test.func()
  1. from 模块名 import 变量名1, 变量2, … - 导入指定模块:导入后可以直接使用指定变量
from test import a # 只能用a
print(a)

from test import a, func
print(a)
func()
  1. from 模块名 import * - 导入指定模块中所有的变量,导入后可以直接使用所有变量
from test import *
print(a)
func()
  1. import 模块名 as 新模块名 - 直接导入指定模块并且对模块进行重命名,重命名后需要通过新模块名来代替原模块名使用模块
import test as ts
print(ts.a)
ts.func()
  1. from 模块名 import 变量名1 as 新变量名1, 变量名2, 变量名3 as 新变量名3
from test import a as ta, func
print(ta)
func()

二. 导入原理与阻止导入

2.1 导入模块的原理

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

from test import a as ta, func    # 将test.py结果输出

2.2 阻止导入

  • 因为导入模块的时候默认会执行模块中所有的代码,就会导致有些完全没有必要在导入的时候执行的代码被执行,如果希望导入模块的时候某些代码可以不执行,就需要去阻止代码在被导入的时候执行 - 阻止代码
  • 阻止方法:将不需要执行的代码放到main对应if条件语句里面
# 在被调用的模块中

print('test.py:', __name__)  # 运行test.py是'__main__',导入的模块中被运行是'test'
# 在这个if语句里面的代码在被别的模块导入的时候不会执行(直接写main按enter)
if __name__ == '__main__':  # 运行test.py会执行,导入test.py的文件运行不执行
    for x in range(3):
        print(x)

三. 包

3.1包

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

  • 在项目中新建一个Directory,再在文件夹中创建一个_init_.py文件
  • 在项目中直接新建Python Package

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

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

import package1
print(package1.y)

方法2:import 包名.模块名 - 导入指定包中的指定模块,导入后可以通过’包名.模块名.xxx’来使用指定

import package1.test3
print(package1.test3.z)
package1.test3.func3()

# 改良:重命名
import package1.test3 as test3
print(test3.z)
test3.func3()

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

from package1 import test2, test3
print(test2.x)
test3.func3()

方法4:from 包名 import * - 导入包中_init_.py文件中所有的全局变量

from package1 import *
# print(test3.z)  没有导入test3.py

!方法5:from 包名.模块名 import 变量名1, 变量名2, … - 导入指定模块的指定变量

from package1.test3 import z, func3
print(z)
func3()

四. 数学模块

import math, cmath
# math - 普通数字对应的数学模块
# cmath - 复数对应的数学模块

# 补充复数 - python支持复数
# 格式: a + bj (b = 1不可省略)
num1 = 10 + 1j
num2 = 5 - 6j
print(num1 + num2)

4.1 浮点数转整数

  1. int(浮点数) - 直接保留整数部分
print(int(1.23))  # 1
print(int(-1.23))   # -1
  1. math.ceil(浮点数) - 向大取整
print(math.ceil(1.98))   # 2
print(math.ceil(1.008))   # 2
print(math.ceil(-1.23))   # -1
  1. math.floor(浮点数) - 向小取整
print(math.floor(1.98))   # 1
print(math.floor(1.008))   # 1
print(math.floor(-1.23))   # -2
  1. round(浮点数) - 四舍五入
print(round(1.98))   # 2
print(round(1.008))   # 1
print(round(-1.23))   # -1
# 注意:x.5的时候,x是奇数就入,x是偶数就舍

4.2 求绝对值

  1. abs(数字)
print(abs(32))   # 32
print(abs(-32.23))   # 32.23
  1. fabs(数字) - 求完结果都是浮点数
print(math.fabs(32))    # 32.0
print(math.fabs(-32.34))   # 32.34

五. 随机模块

import random
  1. 创建随机整数:randint(a, b) - 产生[a, b]的随机整数
print(random.randint(0, 10))
  1. 创建随机小数: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)
  1. 在指定的等差数列中随机获取一个数:randrange(N), randrange(M,N), randrange(M,N,step)
print(random.randrange(0, 100, 2))
  1. 洗牌:shuffle(列表) - 将列表中元素的顺序随机打乱
nums = [10, 20, 30, 40, 50]
random.shuffle(nums)
print(nums)
  1. 抽牌
  • choice(序列) - 从指定序列中随机获取一个元素
print(random.choice('abc123'))
print(random.choice(nums))
  • choices(序列) - 从指定序列中随机获取一个元素,返回值是列表
print(random.choices('abc123'))

choices(序列, k=次数) - 从指定序列中随机获取指定个数个元素,返回值是列表(有放回抽取)

print(random.choices(nums, k=2))

choices(序列, weights=权重列表)

list1 = ['谢谢!', '5元', '100元']
print(random.choices(list1, weights=[5000, 50, 1]))
  • sample()

random.sample(序列, k=次数) # 3.9以前的版本(无放回抽样)

random.sample(序列, k=次数, counts=权重列表) # 3.9以后的版本

print(random.sample[10, 20, 30], k=2)

六. time

# import time
from time import *
  1. time() - 获取当前时间, 返回的是时间戳
  • 时间戳 - 通过保存一个时间到1970年1月1日0时0分0秒(格林威治时间)之间的时间差(单位:秒)来保存一个时间值
  • 使用时间戳保存时间的好处:a.节约内容 b.方便加密
t1 = time()
print(t1)   # 1651052171.067138
  1. localtime() - 获取本地当前时间,返回的是结构体时间

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

t2 = localtime()
print(t2)   # tm_wday - 星期(0(周一)~6(周天))
t3 = localtime(0)
print(t3)

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

  • 使用时间戳保存时间的好处:a.节约内容 b.方便加密
t1 = time()
print(t1)   # 1651052171.067138
  1. localtime() - 获取本地当前时间,返回的是结构体时间

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

t2 = localtime()
print(t2)   # tm_wday - 星期(0(周一)~6(周天))
t3 = localtime(0)
print(t3)
举报

相关推荐

寒假:Day13

JVM[day13]

爬虫笔记day13

算法练习-day13

JS基础day13

java基础 Day13

云计算day13

0 条评论