Python3基础之import和from import的用法和区别

一、模块和包

1、模块

一个 python 的文件就叫做模块(module),如 xxx.py。模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能。

2、包

一个包含有__init__.py 文件的目录或文件夹就叫做包(package)。在 pycharm 中选择 python package 创建的目录就是一个包。

二、模块和包的作用

1、方便管理

随着程序的发展,功能越来越多,为了方便管理,我们通常将程序分成一个个的文件,这样做程序的结构更清晰,方便管理。这时我们不仅仅可以把这些文件当做脚本去执行,还可以把他们当做模块来导入到其他的模块中,实现了功能的重复利用

2、提升开发效率

我们也可以下载别人写好的模块然后导入到自己的项目中使用,可以极大地提升我们的开发效率

3、包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来

随着功能越写越多,我们无法将所以功能都放到一个文件中,于是我们使用模块去组织功能,而随着模块越来越多,我们就需要用文件夹将模块文件组织起来,以此来提高程序的结构性和可维护性

三、模块和包的使用

项目结构如下图所示,要求:在 test.py 下调用模块文件中的变量、函数等。

➤module1.py 中代码

➤module2.py 中代码

1、方式一:from 模块 import 变量/函数/类

格式:from module import var,func,cls

注意:导入模块名和当前的 py 文件必须在同一级目录

例如:实现在 test.py 中调用 module2 模块中的内容

2、方式二:from 模块 import 变量名 as 其他变量名

格式:from module import var as other_var

例如: 要求test.py 中存在有与 module2 相同的变量名,要求同时使用 2 个变量名

3、方式三:from 包.模块 import 变量/函数/类

格式:from pkg.module import var,func,cls

例如:实现在 test.py 中调用 module1 模块中的内容

4、方式四:from 包 import 模块

格式:from pkg import module

注意:调用模块中的变量、函数和类名时,要用模块名。变量或者模块名。函数或者模块名。类名方式来调用

例如:实现在 test.py 中调用 module1 模块中的内容

5、方式五:from 模块 import *(不推荐)

格式:from module import *

注意:这种方式是将模块中的所有变量、函数和类名导入,不推荐使用这种方式,容易导致名字重复的冲突。

例如:实现在 test.py 中调用 module2 模块中的内容

6、方式六:import 变量/函数/类

格式:import var,func,cls

注意:python 的内置模块可以使用这种方式,也可以用 from module import var,func,cls 方式来进行代替

例如:实现在 test.py 中调用内置模块 time 中的内容

四、import和from import的区别

import和from import都是用来引入其他模块或包的关键字。它们之间的区别在于引入的方式和作用范围

  1. import:使用import关键字可以引入整个模块或包,并且在使用其中的函数、类或变量时需要通过模块名来访问。例如:import module_name,然后使用module_name.function_name()来访问模块中的函数。

  1. from import:使用from import关键字可以从模块或包中直接引入特定的函数、类或变量,而不需要通过模块名来访问。例如:from module_name import function_name,然后直接使用function_name() 来访问函数。

平时的编码过程中,我们推荐使用:import 模块名,然后再 模块名.xxx来调用的形式,会让代码更加清晰,更好维护。禁止使用from xxx import *这种写法,它会给你带来无穷无尽的噩梦。

参考链接:https://mp.weixin.qq.com/s/L-ZL9Rffgff81f_WQWScXg

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

【51单片机】初学者必会项目——按键控制LED流水灯模式(定时器&中断系统的应用)(10)

前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 主要内容含: 欢迎订阅 YY滴C专栏!更多干货持续更新!以下是传送门! YY的《C》专栏YY的《C11》专栏YY的…

盘点全网好用的ai伪原创工具

在信息内容发展的今天,写作在我们每个人的生活当中息息相关。可能写作对于有的人来说很简单,但对于有些人来说可能也会很难,幸运的是,我们在这个技术发达的今天,对于很多难题都是可以迎刃而解的,即使对于那…

nginx服务基础用法(概念、安装、热升级)

目录 一、I/O模型概述 1、I/O概念 1.1 计算机的I/O 1.2 Linux的I/O 2、零拷贝技术 3、同步/异步(消息反馈机制) 4、阻塞/非阻塞 5、网络I/O模型 5.1 阻塞型 I/O 模型(blocking IO) 5.2 非阻塞型 I/O 模型 (nonblocking …

win系统下安装mysql5.7并配置环境变量、设置root用户和服务启动的详细操作教程

本篇文章主要讲解:win系统下安装mysql5.7并配置环境变量、设置root用户和服务启动的详细操作教程 日期:2024年2月22日 作者:任聪聪 一、mysql5.7版本的下载 官方下载地址:https://downloads.mysql.com/archives/community/ 步骤…

Spring框架@Autowired注解进行字段时,使用父类类型接收子类变量,可以注入成功吗?(@Autowired源码跟踪)

一、 前言 平常我们在使用spring框架开发项目过程中,会使用Autowired注解进行属性依赖注入,一般我们都是声明接口类型来接收接口实现变量,那么使用父类类型接收子类变量,可以注入成功吗?答案是肯定可以的!…

linux下执行文件包含^M,将window文件格式内容转为linux格式

查看文件内容 cat -v jvm_options 报错信息 ./bin/install-plugin.sh: /bigdata/opt/s/seatunnelsgg/apache-seatunnel-2.3.4/mvnw: /bin/sh^M: bad interpreter: No such file or directory install connector : connector-selectdb-cloud安装工具 yum install -y dos2uni…

一文了解LM317T的引脚介绍、参数解读

LM317T是一种线性稳压器件,它具有稳定输出电压的特性。LM317T可以通过调整其输出电阻来确保输出电压的稳定性,因此被广泛应用于各种电子设备中。 LM317T引脚图介绍 LM317T共有3个引脚,分别是: 输入引脚(输入电压V_in&…

本地配置多个git账户及ll设置

本地配置多个git账户 清除全局配置将命令行,切换到ssh目录生成GitLab和Gitee的公钥、私钥去对应的代码仓库添加 SSH Keys添加私钥ll设置 管理密钥验证仓库配置关于gitgitee.com: Permission denied (publickey) 清除全局配置 此步骤可以不做,经测试不影…

测试环境搭建整套大数据系统(六:搭建sqoop)

一:下载安装包 https://archive.apache.org/dist/sqoop/ 二:解压修改配置。 tar -zxvf sqoop-1.4.7.bin__hadoop-2.6.0.tar.gz -C /opt cd /opt mv sqoop-1.4.7.bin__hadoop-2.6.0/ sqoop-1.4.7修改环境变量 vi /etc/profile#SQOOP_HOME export SQOOP_…

成功经营社区店的商业模式与案例分析

随着互联网的发展,线上购物已经成为了人们生活中不可或缺的一部分。然而,实体店依然具有不可替代的优势,特别是在社区环境中。 社区店不仅能够为居民提供便利的购物体验,还能为店主带来稳定的收入。 本人在社区开鲜奶吧已经5年时…

数据结构2月19日

题目&#xff1a;顺序表作业 代码&#xff1a; 功能区&#xff1a; #include <stdio.h>#include <stdlib.h>#include "./d2191.h"SeqList* create_seqList(){SeqList* list (SeqList*)malloc(sizeof(SeqList));if(NULL list){return NULL;}list->p…

罗克韦尔AB的PLC实现ModbusTCP和ModbusRTU协议标签方式通讯

本文是通过IGT-DSER智能网关读写AB罗克韦尔Compact、Control系列PLC的标签数据缓存并转为Modbus从站协议&#xff0c;与上位机通讯的案例。 打开智能网关的参数软件(下载地址)&#xff0c;通过功能->数据转发与平台对接&#xff0c;再选择数据转发与缓存’&#xff0c;进入以…

基于SpringBoot的教师宿舍管理系统设计与实现(源码+调试)

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。今天给大家介绍一篇基于SpringBoot的教师宿…

PolarDN MISC做题笔记

cat flag 使用01打开flag.png,发现图片尾部有padding的数据。D0 CF 11 E0 A1 B1 1A E1为office2007以前版本的文件头。将其另存为flag.doc,打开发现提示需要密码。&#xff08;可以注意到&#xff1a;D0CF11E0非常类似DOCFILE&#xff09; 使用john的office2john.py 提取hash …

第3部分 原理篇2去中心化数字身份标识符(DID)(2)

3.2.2. DID相关概念 3.2.2.1. 去中心化标识符 (Decentralized identifier&#xff0c;DID) 本聪老师&#xff1a;DID有两个含义&#xff0c;一是Decentralized identity&#xff0c;就是去中心化身份&#xff0c;是广泛意义的DID。另外一个是Decentralized identifier&#xf…

小兴教你做平衡小车-stm32程序开发(新建通用工程)

文章目录 1、准备工作2、拷贝文件2.1 拷贝文件到FWLIB文件夹2.2 拷贝文件到CMSIS文件夹2.3 拷贝文件到USER文件夹 3、keil新建工程4、通用工程下载 参考博客&#xff1a; 零死角玩转stm32初级篇1-从零创建STM32工程模板 1、准备工作 首先呢&#xff0c;我们用压缩软件解压之前…

基于springboot+vue的植物健康系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…

2024开年,手机厂商革了自己的命

文&#xff5c;刘俊宏 编&#xff5c;王一粟 2024开年&#xff0c;AI终端的号角已经由手机行业吹响。 OPPO春节期间就没闲着&#xff0c;首席产品官刘作虎在大年三十就迫不及待地宣布&#xff0c;OPPO正式进入AI手机时代。随后在开年后就紧急召开了AI战略发布会&#xff0c;…

Django学习笔记-创建第一个django项目

1.创建一个虚拟环境的python项目 2.点击解释器设置 3.安装django包 4.终端选择Command Prompt 5.创建django项目运行django-admin startproject demo01(自命名) 6.修改连接数据库为mysql 7.修改语言(中国汉语)和时区(亚洲上海)USE_TZ改为False,否则时区不生效 8.修改TEMPLA…

Vue | (四)使用Vue脚手架(上) | 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;初始化脚手架&#x1f407;创建初体验&#x1f407;分析脚手架结构&#x1f407;关于render&#x1f407;查看默认配置 &#x1f4da;ref与props&#x1f407;ref属性&#x1f407;props配置项 &#x1f4da;混入&#x1f4da;插件&#x1f4da;scoped样…