Python —— 模块、包

一、模块和包

1. 模块module

模块是 Python 程序架构的一个核心概念。Python中模块就是一个.py文件,模块中可以定义函数变量。模块可以被其他模块引用

1.1. 创建模块文件

创建文件:utils.py

# 定义变量 
name = '张三'

# 定义函数
def sum(a,b):
    return a+b

# 定义类
class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age
    def __str__(self):
        return 'name:{},age:{}'.format(self.name,self.age)

1.2. 导入模块中的功能

整体导入模块

# 导入模块
import utils

# 使用模块中功能
print(utils.name)
# 调用模块中的sum方法
result = utils.sum(10,20)
# 创建模块utils中的Person类对象
p = utils.Person('张三',30)

导入模块中部分功能

# 从模块中导入部分功能
from utils import name, sum

# 使用name
print(name)
# 调用sum函数
result = sum(10,20)

导入模块中全部功能

from utils import *

# 使用name
print(name)
# 调用sum函数
result = sum(10,20)
# 创建Person对象
p = Person('林青霞',60)

2. 模块的导入冲突

如果两个模块中有同名的变量、函数或者类,同时引入就可能出现冲突

2.1. 部分导入冲突

from hello import name
from hi import name

print(name)

同时引入name的话,输出的namehi中的name,是有顺序的

局部引入冲突解决方案

可以通过as 给功能起别名

from hello import name as hello_name
from hi import name as hi_name

print(hello_name)
print(hi_name)

2.2. 全部导入冲突

from hello import *
from hi import *

print(name)

同样输出的是hi中的name属性

全部引入冲突解决方案

直接引入模块

import hello
import hi

print(hello.name)
print(hi.name)

3. 模块的内置变量__name__

__name__是模块中的内置变量,每个模块都有这个属性

创建hello.py

print(__name__)

直接运行hello.py,结果为:

__main__

其它模块导入hello.py

import hello

结果为:

hello

3.1. __name__的特点

  • 如果将当前模块作为启动项,__name__值为__main__
  • 如果当前模块当作依赖引入,__name__值不为__main__,为依赖的模块名称

3.2. __name__作用

python没有入口函数的概念,可以通过__name__的功能

def sum(m,n):
    return m+n

if __name__ == '__main__':
    a = 10
    b =20
    result = sum(a,b)
    print(result)

主程序的代码放在if __name__ == '__main__':里。这样当前模块即可以独立测试运行,也可以被其他文件导入使用。如果不添加此if判断,别的地方导入当前文件模块时,会运行一些不需要的代码。

4. 包 package

包就是个文件夹,用来放模块的,限定了模块的命名空间

4.1. 包的作用

  • 用来管理模块的
  • 让业务更清晰化
  • 解决一些命名的问题
network包:可以用来管理网络访问
    cart模块中,可以提供购物车的增删改查功能
    product中,可以提供商品的查看功能
    user模块中,可以提供登录,注册等功能

storage包:可以用来管理本地存储
    cart模块中,可以提供购物车存储功能
    product中,可以提供商品存储功能
    user模块中,可以提供用户信息存储功能

4.2. 引入包中模块的功能方法一

import 包名.模块名

import pkg.hello

#访问模块中的属性
print(pkg.hello.name)

#访问模块中的函数
pkg.hello.say()

#访问模块中的类
nice = pkg.hello.Nice()

4.3. 引入包中模块的功能方法二(推荐)

from pkg import hello

#访问模块中的属性
print(hello.name)

#访问模块中的函数
hello.say()

#访问模块中的类
nice = hello.Nice()

4.4. 引入包中模块的功能方法三(推荐)

from pkg.hello import name
from pkg.hello import say
from pkg.hello import Nice

#访问模块中的属性
print(name)

#访问模块中的函数
say()

#访问模块中的类
nice = Nice()

4.5. 引入包中模块的功能方法四

from pkg.hello import *

#访问模块中的属性
print(name)

#访问模块中的函数
say()

#访问模块中的类
nice = Nice()

二、系统的内置模块

1. sys模块

  • sys.argv 获得启动时的参数
  • sys.path 获取加载的环境
  • sys.exit()程序退出

2. time模块

time模块,包含和时间相关信息

time.time()获取当前时间戳,单位是秒,(相对于1970年1月1日的0点0时0分0秒)

import time
result = time.time() # 获取当前时间
print(result)

time.sleep(秒)阻断程序

import time

# print('程序开始')
# 睡眠3秒钟
time.sleep(3)
# print('程序结束')

3. datetime模块

datetime获取日期

datetime.datetime.now().year
datetime.datetime.now().month
datetime.datetime.now().day

import datetime
# 获取当前年
year = datetime.datetime.now().year
# 获取月
month = datetime.datetime.now().month
# 获取日期
day = datetime.datetime.now().day
print(year)
print(month)
print(day)

# 格式化日期时间
now = datetime.datetime.now()
str_time = datetime.datetime.strftime(now, "%Y-%m-%d %H:%M:%S")

4. 计算排序

aaa = [2, 4, 1, 2, 3, 6]
# 列表最大值
print(max(aaa))
# 列表最小值
print(min(aaa))
# 列表和
print(sum(aaa))
# 列表长度
print(len(aaa))
# 列表排序
print(sorted(aaa))
# 列表倒序
print(sorted(aaa, reverse=True))

5. math模块

math是数学相关的库

math.pow        求幂
math.floor    取下
math.ceil        取上
round                四舍五入
math.sin cos tan…

import math
# 幂
print(math.pow(10, 2))
# 向下取整
print(math.floor(1.8234234234234))
# 向上取整
print(math.ceil(1.1234234234234))
# 四舍五入
print(round(1.6234234234234))

# sin  传入弧度值  pi 3.14 180度
print(math.sin(1.57))

5. random模块

random主要用来产生随机数

random.randint(start,end)	# 随机整数,[start,end]
random.random()						# 随机浮点数, [0,1)
random.uniform(start,end)	# 随机浮点数, [start,end]
random.choice([])					# 随机数组, 返回单个元素
random.choices([])				# 随机数组, 返回列表
import random

# 随机整数
print(random.randint(10, 20))
# 随机小数 [0, 1)
print(random.random())
# 随机浮点类型数据
print(random.uniform(1.3, 8.5))

# 从列表中随机获取元素
lst = [10,20,30]
print(random.choice(lst))

# 随机返回列表 返回单个元素的列表
print(random.choices(lst))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/581377.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Qt绘图与图形视图之场景、视图架构的简单介绍

往期回顾 Qt绘图与图形视图之绘图技术知识点的简单介绍-CSDN博客 Qt绘图与图形视图之常见图形、路径、文字、图片的绘制介绍-CSDN博客 Qt绘图与图形视图之移动鼠标手动绘制任意多边形的简单介绍-CSDN博客 Qt绘图与图形视图之场景、视图架构的简单介绍 一、GraphicsView 1、存…

项目部署总结

1、安装jdk 第一步:上传jdk压缩安装包到服务器 第二步:将压缩安装包解压 tar -xvf jdk-8uXXX-linux-x64.tar.gz 第三步:配置环境变量 编辑/etc/profile文件,在文件末尾添加以下内容: export JAVA_HOME/path/to/j…

12:HAL----I2C

目录 一:I2C通信协议 1:I2C简历 2:硬件电路 3:I2C时序基本单元 A : 开/ 终条件 2:发送一个字节 3:接收一个字节 4:应答机制 4:I2C时序 1:指定地址写 2:当前地址读 3: 指定地址读 二:HAL库 A:轮询方式 B:中断方式 三:案例 A:轮询方式-…

代码随想录算法训练营第12天:滑动窗口和前缀和

代码随想录算法训练营第12天:滑动窗口和前缀和 这里我参考了西法的博客, 467. 环绕字符串中唯一的子字符串(中等)795. 区间子数组个数(中等)904. 水果成篮(中等)992. K 个不同整数的子数组(困难)1109. 航班预订统计(中等) 前四…

第G9周:ACGAN理论与实战

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 由于ACGAN的原理在上一篇文章中已经很详细的解释过了,这次我们直接上代码 一、代码解读 import argparse import os import numpy as npimport t…

视频批量下载工具

1、功能演示 该工具实现了某个人主页视频批量下载,最多支持一次下载50个视频,这50个选取的是最新发布的50个视频,视频为高清的1080p,并直接将视频保存到本地。 2、软件使用介绍 2.1 解压 拿到工具软件后,首先是对软件…

什么是外汇爆仓?怎样避免?

外汇爆仓是指当交易者的保证金低于特定比例时,经纪商会自动平仓一个或所有的开仓头寸。避免外汇爆仓的关键在于合理配置资金、设置止损、适度交易、顺势而为以及调整心态。 外汇爆仓是外汇交易中的一种风险控制机制。当交易者的账户净值低于已用保证金的特定比例时&…

AI图书推荐:《企业AI转型:如何在企业中部署ChatGPT?》

Jay R. Enterprise AI in the Cloud. A Practical Guide...ChatGPT Solutions (《企业AI转型:如何在企业中部署ChatGPT?》)是一本由Rabi Jay撰写、于2024年由John Wiley & Sons出版的书籍,主要为企业提供实施AI转型…

【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么做到的?

1. 漏洞赏金计划(Bug Bounty Programs) 2. 安全咨询服务 3. 安全培训和教育 4. 写作和发表研究 5. 参与安全竞赛(CTFs) 6. 开发和销售安全工具 在网络安全领域,通过合法的方式利用漏洞赚钱主要涉及以下几种方法。…

【服务器部署篇】Linux下Tomcat安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

记录一次 vue3 + ele pls 改写 饿了么主题色实践

一、改写 element 主题色 在 main.ts 中引入需要改写的 scss 文件 main.ts: import ./styles/element-plus.scss在自定义的 element-plus.scss 文件中改写 ele pls 的变量 element-plus.scss: /** * 更改主题色 */ :root {--el-color-primary: #285fbb; // 主…

python使用opencv对图像的基本操作(3)

17.颜色空间的转换 17.1.rgb图像转gray图像 from skimage import io,color img io.imread(lbxx.jpg) img_gray color.rgb2gray(img) #将rgb图像转换成gray图像 io.imshow(img_gray)运行结果: 17.2.rgb图像转hsv图像 from skimage import io,color img io.im…

网红大佬的面子,高阶智驾的里子 | 2024北京车展

相关阅读:2023北京车展 《没有争奇斗艳的车模,只有往死里卷的智能汽车》。 文|刘俊宏 李想、李斌绑定“车圈新顶流”雷军互相抬轿子,红衣大叔周鸿祎高情商点评各家汽车新品...... 为了流量,今年车企大佬们比任何时候…

volatile的相关知识点

volatitle这个关键字,不管是在Java还是在C中都有使用到,但是在两种语言中,由于编译器的原因,他们存在一点点区别。 C中的volatile关键字 在C中volatile主要用于告诉编译器,这个变量的值可能会意外改变 ,例如被硬件或者…

力扣刷题 62.不同路径

题干 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。 问总共有多少条不同的路径? …

HertzBeat:一款开源实时监控告警系统,简直太好用了!

😄 19年之后由于某些原因断更了三年,23年重新扬帆起航,推出更多优质博文,希望大家多多支持~ 🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Mi…

训练营第三十六天动态规划(基础题part2)

训练营第三十六天动态规划(基础题part2) 62.不同路径 力扣题目链接 题目 一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。 机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角&am…

企业计算机服务器中了rmallox勒索病毒怎么办,rmallox勒索病毒解密流程

对于众多的企业来说,通过网络开展各项工作业务已经成为常态,网络为企业的生产运营提供了极大便利,也大大加快了企业发展的步伐,但众多企业越来越重视企业发展中的核心数据安全问题。近期,云天数据恢复中心接到众多企业…

Linux的学习之路:21、线程(1)

摘要: 本章说一下线程 目录 摘要: 一、回忆一下 二、如何理解线程 三、命令行看线程 四、利用函数进行使用 五、本章总结 1、线程的优点 2、线程的缺点 3、线程的异常 4、线程的用途 一、回忆一下 1、exe就是一个文件 2、我们的可执行程序…

企业工厂如何逆风翻盘:VR全景打破多重桎梏

现阶段,制造业工厂面临的困境,就是用着上百万的设备,却赚着几毛钱的利润。传统的工厂参观方式也存在着很多的局限性,例如时间上不方便、不能实地参访、生产线具有隐患等,都会使得参观者不能深入地了解工厂的生产环境和…
最新文章