python模块和包

一、模块

1、什么是模块

一个py文件,里面包含函数、方法、变量,可以通过import,form … import导入使用

2、模块的作用

直接调用系统自带,或者别人已经写好的函数,简化书写

3、常见导入方法

常见导入方法解释说明示例
import 模块导入一个模块,并且可以引用其所有方法import time
form 模块 import 方法指定到诶模块下的特定发发import sleep
form 模块 import *导入模块下的所有方法,可以在代码中直接使用方法名form time import *
form 模块 import 功能 as 别名为导入的方法添加别名form time import sleep as wating

实例代码:

import time
print(time.time())
print(time.strftime("%Y-%m-%d %H:%M:%S",time.localtime()))

结果:
1731817078.0912356
2024-11-17 12:17:58

注意点:
1)对应的 item 可以自己定义,但是import 语法会首先把 item当作一个包定义的名称。如果没找到,再试图按照一个模块去导入。如果还没找到,抛出一个 :exc:ImportError 异常。
2)如果使用形如 import item.subitem.subsubitem 这种导入形式,除了最后一项,都必须是包,而最后一项则可以是模块或者是包,但是不可以是类,函数或者变量的名字
3)在模块导入时,模块会被先执行一遍,所以不希望在主程序调用的 可以加一个 if name == ‘main’: 判断

4、创建自定义模块

实质:就是创建一个py文件
注意点
a、模块命名要求:名称不能以数字开头
b、模块可以引用多次,但是实例、对象只能创建一次

1)定义一个自定义模块

name 是一个python自定义参数,当在主程序中调用是值为main,当在模块中被调用是值为模块名(model),用来判断是否为主程序调用
创建一个model.py文件,文件内容见下方:

def add(x,y):
    return x+y

def subt(x,y):
    return x-y
if __name__ == '__main__':
    print(f"add的函数输出是:{add(1,2)}")
    print(f"subtranction的返回是: {subt(1,2)}")

2)模块调用

from model1 import *

n = add(2,3)
m = subt(3,1)

print(f"add的结果为:{n}\nsubt的结果是:{m}")

结果:
add的结果为:5
subt的结果是:2

5、allname

  1. name:
    是一个python自定义参数,当在主程序中调用是值为main,当在模块中被调用是值为模块名(model),用来判断是否为主程序调用
    2)all :
    使用场景:控制import * 的内容
    只有all中添加的才能通过 import * 导入

示例:在加入all 限制后,subt()函数不能被主程序所调用

__all__ = ['add']
def add(x,y):
    return x+y

def subt(x,y):
    return x-y

if __name__ == '__main__':
    print(f"add的函数输出是:{add(1,2)}")
    print(f"subtranction的返回是: {subt(1,2)}")

主程序:

from model1 import *

n = add(2,3)
m = subt(3,1)

print(f"add的结果为:{n}\nsubt的结果是:{m}")

结果:
Traceback (most recent call last):
  File "E:\python\python project\venv\model.py", line 8, in <module>
    m = subt(3,1)
NameError: name 'subt' is not defined

二、包

1、包是什么:

一个文件夹,里面存放同种种类的模块文件
注意点:包中一定含有一个 init.py文件,与一般文件夹进行区分

2、python自带包

使用:import 包名.模块名

3.创建自定义包

1)pycharm创建一个自定义包
file --> new --> Python Package
2)添加模块文件

def multiplication(x,y):
    return x*y

def divsion(x,y):
    try:
        r = None
        r = x*y
    except zeroDivisionError as e:
        print(f"输入异常,分母不能为0")
    finally:
        if r:
            return x/y
        else:
            return "输入错误"

if __name__ == '__main__':
    print(multiplication(2,3))
    print(divsion(2,0))

3)主程序调用

#import november.nov1
from november import nov1

print(f"mutiplication的返回是:{nov1.multiplication(2,3)}")
print(f"divison的返回是:{nov1.divsion(4,2)}")

结果:
mutiplication的返回是:6
divison的返回是:2.0

4、下载外部包

原因:使用外部已经别人已经开发好的包提供效率
方法:pip install -i 镜像地址/包名
常用镜像站地址:
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
豆瓣:http://pypi.douban.com/simple/

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

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

相关文章

Spring-事务学习

spring事务 1. 什么是事务? 事务其实是一个并发控制单位&#xff0c;是用户定义的一个操作序列&#xff0c;这些操作要么全部完成&#xff0c;要不全部不完成&#xff0c;是一个不可分割的工作单位。事务有 ACID 四个特性&#xff0c;即&#xff1a; 原子性&#xff08;Atom…

RHCE的学习(21)

第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况&#xff0c;Linux Shell提供了一组测试运算符。 通过这些运算符&#xff0c;Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句&#xff0c;例如判断语句和循环语句中…

用pyspark把kafka主题数据经过etl导入另一个主题中的有关报错

首先看一下我们的示例代码 import os from pyspark.sql import SparkSession import pyspark.sql.functions as F """ ------------------------------------------Description : TODO&#xff1a;SourceFile : etl_stream_kafkaAuthor : zxxDate : 2024/11/…

单片机_day3_GPIO

目录 1. 灯如何才能亮 1.1原理图 1.2 二极管 1.3 换了一个灯和原理图 ​编辑 1.4 三极管 1.4.1 NPN型三极管 1.4.2 PNP型三极管 2. 基本概念 3. 输入 3.1 浮空输入 3.2 上拉输入 3.3 下拉输入 3.4 模拟输入 4. 输出 4.1 推挽输出 4.2 开漏输出 如何让开漏输出…

基于视觉智能的时间序列基础模型

GitHub链接&#xff1a;ViTime: A Visual Intelligence-Based Foundation Model for Time Series Forecasting 论文链接&#xff1a;https://github.com/IkeYang/ViTime 前言 作者是来自西安理工大学&#xff0c;西北工业大学&#xff0c;以色列理工大学以及香港城市大学的研…

java项目-jenkins任务的创建和执行

参考内容: jenkins的安装部署以及全局配置 1.编译任务的general 2.源码管理 3.构建里编译打包然后copy复制jar包到运行服务器的路径 clean install -DskipTests -Pdev 中的-Pdev这个参数用于激活 Maven 项目中的特定构建配置&#xff08;Profile&#xff09; 在 pom.xml 文件…

Qt按钮类-->day09

按钮基类 QAbstractButton 标题与图标 // 参数text的内容显示到按钮上 void QAbstractButton::setText(const QString &text); // 得到按钮上显示的文本内容, 函数的返回就是 QString QAbstractButton::text() const;// 得到按钮设置的图标 QIcon icon() const; // 给按钮…

论文6—《基于YOLOv5s的深度学习在自然场景苹果花朵检测中的应用》文献阅读分析报告

论文报告&#xff1a;基于YOLOv5s的深度学习在自然场景苹果花朵检测中的应用 基于YOLOv5s的深度学习在自然场景苹果花朵检测中的应用 摘要国内外研究现状1. 疏花技术研究2. 目标检测算法研究 研究目的研究问题使用的研究方法试验研究结果文献结论创新点和对现有研究的贡献1. Y…

「人眼视觉不再是视频消费的唯一形式」丨智能编解码和 AI 视频生成专场回顾@RTE2024

你是否想过&#xff0c;未来你看到的电影预告片、广告&#xff0c;甚至新闻报道&#xff0c;都可能完全由 AI 生成&#xff1f; 在人工智能迅猛发展的今天&#xff0c;视频技术正经历着一场前所未有的变革。从智能编解码到虚拟数字人&#xff0c;再到 AI 驱动的视频生成&#…

计算机毕业设计Python美食推荐系统 美团爬虫 美食可视化 机器学习 深度学习 混合神经网络推荐算法 Hadoop Spark 人工智能 大数据毕业设计

温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 温馨提示&#xff1a;文末有 CSDN 平台官方提供的学长联系方式的名片&#xff01; 作者简介&#xff1a;Java领…

GPU分布式通信技术-PCle、NVLink、NVSwitch深度解析

GPU分布式通信技术-PCle、NVLink、NVSwitch 大模型时代已到来&#xff0c;成为AI核心驱动力。然而&#xff0c;训练大模型却面临巨大挑战&#xff1a;庞大的GPU资源需求和漫长的学习过程。 要实现跨多个 GPU 的模型训练&#xff0c;需要使用分布式通信和 NVLink。此外&#xf…

MySQL:联合查询(2)

首先写一个三个表的联合查询 查询所有同学的每门课成绩&#xff0c;及同学的个人信息 1.我们首先要确定使用哪些表 学生表&#xff0c;课程表&#xff0c;成绩表 2.取笛卡尔积 select * from score,student,course; 3. 确定表与表之间的联合条件 select * from score,stud…

【leetcode】704. 二分查找

注意一般mid left (right-left)/2; 不要用mid (right - left)/2 中间值的计算需要考虑到整型溢出的问题。 如果使用 mid (right - left) / 2 的方式计算中间值&#xff0c;那么在 right 和 left 的值接近极限值的情况下&#xff0c;可能会导致计算出的中间值发生整型溢出&…

RHCE的练习(12)

写一个脚本&#xff0c;完成以下要求&#xff1a; 给定一个用户&#xff1a; 如果其UID为0&#xff0c;就显示此为管理员&#xff1b;否则&#xff0c;就显示其为普通用户&#xff1b; #!/bin/bash ​ # 使用read命令获取用户名 read -p "请输入用户名: " username ​…

WPF-控件的属性值的类型转化

控件的属性值需要转成int、double进行运算的&#xff0c;可以使用一下方法 页面代码 <StackPanel Margin"4,0,0,0" Style"{StaticResource Form-StackPanel}"> <Label Content"替换后材料增加金额&#xff…

【从零开始的LeetCode-算法】3270. 求出数字答案

给你三个 正 整数 num1 &#xff0c;num2 和 num3 。 数字 num1 &#xff0c;num2 和 num3 的数字答案 key 是一个四位数&#xff0c;定义如下&#xff1a; 一开始&#xff0c;如果有数字 少于 四位数&#xff0c;给它补 前导 0 。答案 key 的第 i 个数位&#xff08;1 < …

iMetaOmics | 刘永鑫/陈同-用于食物微生物组成和时间序列研究的微生物组数据库FoodMicroDB...

点击蓝字 关注我们 FoodMicroDB&#xff1a;用于食物微生物组成和时间序列研究的微生物组数据库 iMeta主页&#xff1a;http://www.imeta.science 研究论文 ● 原文链接DOI: https://doi.org/10.1002/imo2.40 ● 2024年11月1日&#xff0c;中国农业科学院深圳农业基因组研究所刘…

视觉slam十四讲 ch8 光流法和直接法

之前的都是单层光流 转载至Blibli 视觉SLAM十四讲_7视觉里程计1_计算相机运动_哔哩哔哩_bilibili

QSS 设置bug

问题描述&#xff1a; 在QWidget上add 一个QLabel&#xff0c;但是死活不生效 原因&#xff1a; c 主程序如下&#xff1a; QWidget* LOGO new QWidget(logo_wnd);LOGO->setFixedSize(logo_width, 41);LOGO->setObjectName("TittltLogo");QVBoxLayout* tit…

Linux运维篇-iscsi存储搭建

目录 概念实验介绍环境准备存储端软件安装使用targetcli来管理iSCSI共享存储 客户端软件安装连接存储 概念 iSCSI是一种在Internet协议上&#xff0c;特别是以太网上进行数据块传输的标准&#xff0c;它是一种基于IP Storage理论的存储技术&#xff0c;该技术是将存储行业广泛…