中国互联网协会官方网站达州 网站建设

news/2025/10/8 16:43:07/文章来源:
中国互联网协会官方网站,达州 网站建设,大连工程信息招标网,全网推广营销1、什么是包 #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module names” 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 #具体的#xff1a;包就是一个包含有__init__.py文件的文件夹#xff0c;所以其实我…1、什么是包 #官网解释 Packages are a way of structuring Python’s module namespace by using “dotted module names” 包是一种通过使用‘.模块名’来组织python模块名称空间的方式。 #具体的包就是一个包含有__init__.py文件的文件夹所以其实我们创建包的目的就是为了用文件夹将文件/模块组织起来 #需要强调的是   1. 在python3中即使包下没有__init__.py文件import 包仍然不会报错而在python2中包下一定要有该文件否则import 包报错   2. 创建包的目的不是为了运行而是被导入使用记住包只是模块的一种形式而已包的本质就是一种模块 2、为何要使用包 包的本质就是一个文件夹那么文件夹唯一的功能就是将文件组织起来 随着功能越写越多我们无法将所以功能都放到一个文件中于是我们使用模块去组织功能而随着模块越来越多我们就需要用文件夹将模块文件组织起来以此来提高程序的结构性和可维护性 3、注意事项 #1、关于包相关的导入语句也分为import和from ... import ...两种但是无论哪种无论在什么位置在导入时都必须遵循一个原则凡是在导入时带点的点的左边都必须是一个包否则非法。可以带有一连串的点如item.subitem.subsubitem但都必须遵循这个原则。但对于导入后在使用时就没有这种限制了点的左边可以是包模块函数类(它们都可以用点的方式调用自己的属性)。 例import spam.x 导入前import spam.x如果 spam 是一个模块就会报错spam 必须是一个包 导入后spam.x 直接调用模块 spam 下的 x 属性 #2、import导入文件时产生名称空间中的名字来源于文件import 包产生的名称空间的名字同样来源于文件即包下的__init__.py导入包本质就是在导入该文件 调用包就是执行包下的__init__.py文件 #3、包A和包B下有同名模块也不会冲突如A.a与B.a来自俩个命名空间   4、例子 例1 glance/ #Top-level package 大包├── __init__.py #Initialize the glance package├── api #Subpackage for api 小包│ ├── __init__.py│ ├── policy.py│ └── versions.py├── cmd #Subpackage for cmd 小包│ ├── __init__.py│ └── manage.py└── db #Subpackage for db 小包 ├── __init__.py└── models.py 目录结构 #policy.py def get():print(from policy.py)#versions.py def create_resource(conf):print(from version.py: ,conf)#manage.py def main():print(from manage.py)#models.py def register_models(engine):print(from models.py: ,engine)包所包含的文件内容 文件内容 from . import api # 告诉调用 glance 包的模块找api 的话从你自己的 sys.path 下 glance 下开始找 api glance包 __init__ 的文件内容 # print(from api init.py) # __all__[x,y,policy] # all 方法对应 # x1 # y2 from . import policy # 告诉那个导入 api包的模块test找 policy 的时候从他自己的 sys.path 开始找 # import policy# 绝对导入 # 告诉那个导入 api包的模块test找 policy 的时候从他自己的 sys.path 下的 glance.api 开始找 # from glance.api import policy# 相对导入 # 从当前目录开始找 policy 模块 # from . import policy# 帮 test 找到 manage 模块 # from ..cmd import manage# 直接运行此文件会报错 # SystemError: Parent module not loaded, cannot perform relative import # 父模块没有被加载不能使用相对导入的意思 # 说明包里面的模块不应该作为单独文件直接运行 api包 __init__ 的文件内容 # 例1直接 import 包方式导入模块 # import glance.api.policy # 导入 blance包下的api包下的policy模块 # glance.api.policy.get() # 执行 policy下的 get 方法# 例2比较直观的用法 # from glance.api import policy # from 大包.小包 import 模块 # policy.get()# from glance.api import policy.get # 不能这样用报 SyntaxError: invalid syntax 语法错误 # get()# from glance import api.policy # 虽然满足点左边的是包但是这里是 from ... importimport后面必须明确一个不能带点的东西#需要注意的是from后import导入的模块必须是明确的一个不能带点东西否则会有语法错误 # 如from a import b.c 是错误语法# api 的 init 文件 # from glance.api import policy # 当导入包的时候只会执行 api 包下面的 init 文件 # policy.get()# * 的意义 # from glance.api import * # 导入包依然会执行 init 文件但是这里的 * 不代表 api 包下所有的模块 # * 是指 api 下 init 里面 __all__ 里面包含的属性属性可以是任何模块变量等等 # import glance.api # 导入包就执行 glance 和 api 包 init 文件 # print(glance.api.policy) # 但是 policy 依然没有因为这里只是导入包执行 init不会触发 all 方法# import glance.api # 触发 api 下的 init 文件 # print(glance.api.policy) # ImportError: No module named policy # init 下有 import policy # 先从内存里找 policy然后从内建里找最后从当前 test 所在的 sys.path 里找 policy 模块找不到报错# 让 api 包帮我找到 manage 模块 # glance.api.manage.main()import glance glance.api.policy.get()# 如果是导入跟“包”同级的aaa包下的 glacne就要先找到两者的父级目录再从父级目录开始找 import os import sys base_dir os.path.dirname(os.path.dirname(os.path.abspath(__file__))) print(base_dir) # 父级目录 sys.path.append(base_dir) from aaa.glance.api import policy policy.get() 跟 glance 同级的文件 test.py   例2 if __name____main__: # 表示把自己当做脚本去用print(ok) 如果我们是直接执行某个.py文件的时候该文件中那么”__name__ __main__“是True,但是我们如果从另外一个.py文件通过import导入该文件的时候这时__name__的值就是我们这个py文件的名字而不是__main__。 这个功能还有一个用处调试代码的时候在”if __name__ __main__“中加入一些我们的调试代码我们可以让外部模块调用的时候不执行我们的调试代码但是如果我们想排查问题的时候直接执行该模块文件调试代码能够正常运行 logger.py def logging():print(ok)mian.py from core import logger def main():logger.logging()# print(__name__) if __name__ __main__:main()bin.py import os,sys base_diros.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 添加ATM的绝对路径 # print(base_dir) sys.path.append(base_dir) # 把路径添加到系统环境变量里去from core import main main.main() 例子 现象 1、当执行 bin.py 的时候会显示 ok正常运行单独执行 main.py 正常显示一个 ok 2、当 main.py 注释 if __name__ __main__执行 bin.py 会显示两个 ok单独执行 main.py 正常显示一个 ok 3、当 main.py 只有 print(__name__)执行 bin.py 只显示 main执行 main.py 显示 __main__ 结论 1if __name__ __main__ 是用来调试用的在别的地方调用该模块执行的使用不会执行被调用模块下的 if __name__ __main__ 下的代码 2在被调用模块下执行程序会执行 if __name__ __main__ 下的代码因为是自己的地方方便调试   5、包的2种调用方式 logger.py 文件内容 def logger():print(logger) # from web.web2 import logger # 二层目录 调用 logger 模块里的 logger方法 logger.logger() # from web.web2.logger import logger # 调用 web包下的 web2包下的logger 模块的 logger 方法直接用 Logger() 直接调用 logger 模块里的 logger方法 logger() .转载于:https://www.cnblogs.com/tootooman/p/9071402.html

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

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

相关文章

实用指南:vue3+elementplus表格表头加图标及文字提示

实用指南:vue3+elementplus表格表头加图标及文字提示pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas&qu…

菏泽做网站的宁乡市住房和城乡建设局网站

本文通过config server连接git仓库来实现配置中心&#xff0c;除了git还可以使用svn或者系统本地目录都行。引入依赖<dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-config-server</artif…

9.29课后整理 - GENGAR

课程中主要完成一下内容。 1.分析方法重载代码特性:观察给定的MethodOverload类代码,明确其展示的“方法重载”特性,并查看JDK中System.out.println()方法,总结重载规律。 2.比较递归与递推实现阶乘:先用递归方法…

深入解析:【QT】`QTextCursor::insertText()`中插入彩色文本

深入解析:【QT】`QTextCursor::insertText()`中插入彩色文本pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Cons…

Java方法专题 - 动手动脑问题与实验总结

一、随机数生成相关实验 动手动脑1:纯随机数发生器实现 问题要求: 编写一个方法,使用线性同余算法生成指定数目(比如1000个)的随机整数。 算法参数:Modulus = 2 - 1 = int.MaxValue Multiplier = 7⁵ = 16807 C …

2025年中盘点

工作近况 转组有半年了,好久没来写东西了。 第一个产品被reorg了,我的第一份工作在的第一个岗位就戛然而止了。诚实来讲第一个组还是不错的。WLB顶级,领导信任,同事们鼎力配合,这完全是what my dream company sho…

学习问题日记-3

在学习Docker过程中,在linux上安装docker的时候,为了进行docker仓库换源,执行了以下命令之后遇到了一个报错。 yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo y…

怎么用dw英文版做网站wordpress新增文章小工具

近几年&#xff0c;随着大数据和人工智能技术的发展&#xff0c;智能化、程序化营销在国内获得高速发展。从以创意内容、提升效率的工具到现在驱动企业数字化转型的智能营销&#xff0c;营销云在国内的热度与成熟度不断提升。营销云起源于“Enterprise Marketing Software Suit…

商城网站建站方案汕头 做网站

京准电钟&#xff5c;基于纳秒级的GPS北斗卫星授时服务器 京准电钟&#xff5c;基于纳秒级的GPS北斗卫星授时服务器 你有没有思考过这样一个问题&#xff1a;火车站内&#xff0c;熙熙攘攘&#xff0c;旅客排队进站、列车停靠发车&#xff0c;一切井然有序。一旦有个别时间出现…

企业网站建设网站优化网站跳出

&#x1f493; 博客主页&#xff1a;从零开始的-CodeNinja之路 ⏩ 收录文章&#xff1a;【Web开发】CSS教学(超详细,满满的干货) &#x1f389;欢迎大家点赞&#x1f44d;评论&#x1f4dd;收藏⭐文章 目录 CSS一. 什么是CSS?1.1 基本语法规范1.2 引入方式1.3 规范 二. CSS选…

【CVE-2025-4123】Grafana完整分析SSRF和从xss到帐户接管 - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

差分约束乘法改加减

洛谷P4926 [1007] 倍杀测量者#include<bits/stdc++.h> using namespace std; const int N=1010; const double INF=1e18; const double eps=1e-7; struct node{int v;double k;int tp; }; vector<node> ed…

01-方法-课后作业

Demo:MethodOverLoad展示了相同名称不同参数类型的方法,也叫做方法重载,在程序调用方法时会按照参数的类型而选择相应符合的方法。

域名建设好了怎么在建设网站创意设计图片素材

目录 一、Elasticsearch是什么&#xff1f; 二、为什么要使用ElasticSearch 2.1 关系型数据库有什么问题&#xff1f; 2.2 ElasticSearch有什么优势&#xff1f; 2.3 ES使用场景 三、ElasticSearch概念、原理与实现 3.1 搜索引擎原理 3.2 Lucene 倒排索引核心原理 倒排…

应用程序io接口

字符设备接口 字符设备只数据的存取和传输时以字符为单位的设备,比如键盘打印机,基本都是传输肃立比较低,不可寻址,并且在io时候,通常采取中断驱动的方式 块设备接口 块设备时至数据的存取和传输时以数据库为单位…

凡客网站登陆深圳工业设计培训班

转载自 如何设计一个高可用的运营系统 这是一篇来自粉丝的投稿&#xff0c;作者【林湾村龙猫】近一年在做关于运营活动方面的设计。本文是他的关于运营活动的总结&#xff0c;Hollis做了一点点修改。 概述 一个产品业务的发展总是离不开运营二字。随着业务快速的发展以及新…

深圳自助网站建设做网站的程序

在学习之前,一直以为WebService就是一个工具,在两个服务器之间建立一个通信,帮我们把需要传输的数据组织成规范的XML数据并发送到目的地,实际情况也确实是这样的,不过更高级一点的是,XFire不但可以帮我们生成XML发送,而且可以在接收了xml之后还可以直接返回对象给我们用…

【学习记录】Django Channels + WebSocket 异步推流编写常用命令汇总

【学习记录】Django Channels + WebSocket 异步推流编写常用命令汇总pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: &qu…

边缘数据库近期想法(2)

近期读的这几篇论文主要是两种:对于边缘网络一些事务处理或的系统架构,其中关键在于协议的设计:边缘服务器上可扩展的数据管理、在无服务器的边缘网络架构可靠交易 一些大众研究内容适应性部署在边缘网络中以此提高…

方法-课后作业1

一、随机数生成实践 1. 自定义算法生成随机数:按纯随机数发生器参数(Modulus=2-1,Multiplier=16807,C=0),以公式xₙ₊₁=(a*xₙ + c) mod m编写方法,生成1000个随机整数,确定种子后循环计算即可。 2. 对比多种…