【python】包(package)与模块(module)、import、__name__与__main__

导入模块一般写在程序最前面,且顺序为:内置模块、第三方模块、自定义模块


一、模块(module)与包(package)

模块(module)可以理解为是一个.py文件,import 模块 相当于执行了 这个.py文件
包(package)可以理解为包含着__init__.py的文件夹,import 包 相当于执行了 对应的__init__.py文件
(一个包中可以包含多个模块/多个包)
以pycharm为例,包与普通文件夹的图片如下所示(如果把__init__.py文件删除,则图标变为普通文件夹的图标)

在这里插入图片描述

二、模块的import与from import

导入模块的语法:
# 导入模块
import 模块名 as 别名 # 执行模块名.py
# 导入模块中某个函数/类/变量
from 模块名 import 函数名/类名/变量 as 别名 # 也会执行模块名.py,但只能用所导入的函数名/类名/变量
查找模块的顺序:
import sys
print(sys.path)# 输出包含多个文件夹路径的列表

模块的查找顺序是根据sys.path列表中的路径顺序进行的,大致如下:

  1. 先找当前py文件的同级目录下是否有对应模块
  2. 找当前项目目录下是否有对应模块
  3. 找python解释器目录下是否有对应模块
导入模块的具体流程:

判断内存中是否已加载了对应模块,如已加载则直接返回内存地址,如没加载则开辟一块内存,执行所导入的模块中的所有python代码。

内置变量__name__:

每个python文件中都会有内置的__name__变量
直接运行该python文件的时候,__name__的值是__main__
当以模块的形式导入该python文件时,__name__的值是模块名(比如abc.py则值就是abc)

比如以下python文件命名为a.py,当直接运行该文件则会打印出"测试案例",在其他python文件中import a时则不会打印出"测试案例"

def func():print("a模块里的func被调用了")class Student:def __init__(self,name):self.name = namedef eat(self, food):print(f"{self.name}在吃{food}")if __name__ == '__main__':print("测试案例")

三、包的import与from import

导入包中模块的语法:
# 导入包
import 包名 # 执行包名下的__init__.py
# 直接导入模块(不常用)
import 包名.(包名.)模块名
# 导入包里某个模块(常用)
from 包名(.包名) import 模块名
# 导入包里某个模块的具体类、方法(常用)
from 包名.(包名.)模块名 import (函数名/类名/变量) 

注意:from import语法中import后面不允许出现 "." !!!!!!!

示例:

在这里插入图片描述

# 导入policy模块
from glance.api import policy
# 导入policy中Student这个类
from glance.api.policy import Student

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言-详解指针

目录 一.内存 1.内存的定义 2.内存的结构图 二.地址 1.什么是地址 2.什么是变量的地址 三.什么是指针 1.指针的定义 四.如何获取数据存储空间的地址 1.&运算符 五.指针变量 1.什么是指针变量(一级指针变量) 2.指针变量的定义 3…

Http中post和get

get产生一个tcp数据包,服务器只响应一次,而post请求服务器会响应两次(第一次发送请求头响应100,再次响应返回200,成功

高性能、低功耗并附带RAM的涓流充电实时时钟电路芯片D1302的描述

D1302是一块高性能、低功耗并附带RAM的涓流充电实时时钟电路。 主要特点: ● 实时时钟可提供秒、 分、小时、星期、日期、月 份和年等计时数据,到2100 年止。一个月小于31天时可自动调整,且具有闰年补偿功能 ● 31X8 位通用暂存RAM ● 采用…

XXL-JOB 日志表和日志文件自动清理

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

【POSTGIS】判定点位是否在范围内

项目上的需求,要判断当前打卡位置是否在项目范围10m内。 先做需求分析: (1)既然有10m的缓冲范围,那么就要用到st_buffer函数; (2)既然以m为单位,就要用到投影坐标系&…

vue中的动画组件使用及如何在vue中使用animate.css

“< Transition >” 是一个内置组件&#xff0c;这意味着它在任意别的组件中都可以被使用&#xff0c;无需注册。它可以将进入和离开动画应用到通过默认插槽传递给它的元素或组件上。进入或离开可以由以下的条件之一触发&#xff1a; 由 v-if 所触发的切换由 v-show 所触…

PHP之curl详细讲解

cURL&#xff08;全称为Client for URLs&#xff09;是一个功能强大的开源库&#xff0c;用于在多种协议上进行数据传输、发送HTTP请求和获取响应。它支持多种协议&#xff0c;包括HTTP、HTTPS、FTP、SMTP等&#xff0c;并且能够与各种服务器进行通信。 cURL库可以通过命令行工…

单机无锁线程安全队列-Disruptor

Disruptor 1、基本介绍 说到队列&#xff0c;除了常见的mq中间件&#xff0c;java中也自带线程安全的BlockingQueue&#xff0c;但是BlockingQueue通过在入队和出队时加锁的方式避免并发操作&#xff0c;性能上会大打折扣。 而Disruptor是一个线程安全、低延迟、吞吐量高的队…

redis整理

1. 数据类型 string , hash, 链表&#xff0c;Set, ZSet. string 底层是sds, sds与普通字符串的区别: a. sds存储了字符串长度&#xff0c;获取长度的时间复杂度为O(1); b. sds操作字符串会预先判断长度是否满足要求, 不会有字符串溢出的情况出现; c. 提前预分配, 惰性回收…

Vue学习计划--Vue2(四)watch、class、style、set

Vue 监听(watch): 监听一个属性的变化 监事属性watch: 当监视的属性变化时&#xff0c;回调函数自动调用&#xff0c;进行相关操作监视的属性必须存在&#xff0c;才能进入监视监视的两种写法&#xff1a; new Vue 时传入watch配置通过 vm.$watch()监视 immediate初始化时让han…

SpectralGPT: Spectral Foundation Model 论文翻译3

遥感领域的通用大模型 2023.11.13在CVPR发表 原文地址&#xff1a;[2311.07113] SpectralGPT: Spectral Foundation Model (arxiv.org) E.消融研究 在预训练阶段&#xff0c;我们对可能影响下游任务表现的各种因素进行了全面研究。这些因素包括掩蔽比、ViT patch大小、数据规…

多线程--11--ConcurrentHashMap

ConcurrentHashMap与HashMap等的区别 HashMap线程不安全 我们知道HashMap是线程不安全的&#xff0c;在多线程环境下&#xff0c;使用Hashmap进行put操作会引起死循环&#xff0c;导致CPU利用率接近100%&#xff0c;所以在并发情况下不能使用HashMap。 ConcurrentHashMap 主…

Linux信息收集

Linux信息收集 本机基本信息 #管理员 $普通用户 之前表示登录的用户名称&#xff0c;之后表示主机名&#xff0c;再之后表示当前所在目录 / 表示根目录 ~表示当前用户家目录1、内核&#xff0c;操作系统和设备信息 uname -a 打印所有可用的系统信息 uname -r 内核版本 u…

01_阿里云_Xshell连接服务器

PC使用Xshell连接阿里云服务器 问题引出 之前使用Xshell连接阿里云服务器连接的好好的&#xff0c;今天准备上去服务器学习Linux发现连不上了&#xff0c;后来发现是防火墙的问题&#xff0c;还有阿里云的安全组也需要设置 解决方案 方法一&#xff1a;&#xff08;简单粗暴…

3D模型材质编辑

在线工具推荐&#xff1a; 三维数字孪生场景工具 - GLTF/GLB在线编辑器 - Three.js AI自动纹理化开发 - YOLO 虚幻合成数据生成器 - 3D模型在线转换 - 3D模型预览图生成服务 如今&#xff0c;3D 纹理、打印和建模都非常流行。使用可用的高级工具&#xff0c;创建 3D 模型…

基于Git的代码工程管理——学习记录一

一、Git简概[1] Git是一个分布式版本控制系统&#xff0c;它跟踪任何一组计算机文件的更改&#xff0c;通常用于在软件开发过程中协调协作开发源代码的程序员之间的工作。其为实现快速、数据完整性以及分布式非线性工作流程&#xff08;在不同计算机上运行数千个并行分支&#…

钉钉提交审批意见,并上传附件接口集成

一&#xff1a;适配器 DingtalkApprovalFilesExecute 参考方案链接&#xff1a;轻易云数据集成平台 二&#xff1a;请求接口。配置参数 接口文档&#xff1a;使用了新旧接口 服务端API发起带有附件的审批流并下载附件 - 钉钉开放平台 接口&#xff1a;topapi/processinsta…

搜索与回溯算法②

求0-9的数字可以组成的所有k 位数。 def backtrack(start, path, k, n, results):"""核心函数。:param start: 下一个添加的数字的起始位置:param path: 当前构建的路径&#xff0c;代表一个组合:param k: 组合中所需的数字个数:param n: 可选数字的最大值:par…

Python编程技巧:多层for循环的高级应用

更多资料获取 &#x1f4da; 个人网站&#xff1a;ipengtao.com Python的for循环结构是编程中最基础也是最常用的控制结构之一。通过for循环&#xff0c;可以轻松遍历数据集合和执行重复的操作。然而&#xff0c;当我们面对多层for循环时&#xff0c;性能和可读性可能会成为挑…

linux使用逻辑券lvm进行磁盘管理

lvm的安装 在线安装 yum install lvm2 离线安装&#xff0c;下载后执行 rpm -ivh * --nodeps --force 在如下网站中挨个下载http://mirrors.163.com/centos/7/os/x86_64/Packages/ device-mapper-1.02.170-6.el7_9.5.x86_64.rpm device-mapper-event-1.02.170-6.el…