首页 > 其他分享 >19. 包

19. 包

时间:2024-10-20 18:00:06浏览次数:6  
标签:__ arith extension 19 init 模块 import

一、什么是包

  在 Python 中,包(Package)也是一个模块。当我们模块中代码过多时,或者一个模块需要被分解为多个模块时,这时就需要使用包。普通的模块就是一个 py 文件,而包一个分级层次的目录结构,它将一组功能相近的模块组织在一个目录下。这样,既可以起到代码规范的作用,又能避免模块名重名引入的冲突。在包中,必须要有一个 __init__.py 这个文件,这个文件中可以包含中的主要内容。

  使用 import 语句首次导入包时,会产生一个名称空间。然后会运行该包下的 __init__.py 文件,将运行过程中生成的名字都会丢到这个名称空间中。然后会在当前执行文件的名称空间拿到一个名字,该名字指向被导入的包的名称空间。

在 Python 3 中可以没有 __init__.py 文件;

二、创建包

  创建一个 【arith】 文件夹,并在该文件夹下创建一个 __init__.py 文件。

num1 = 30
num2 = 40

def add():
    print("我是arith包下__init__模块中的add()方法")

  在 【arith】 目录下,创建 【extension】 文件夹,并在该文件夹下创建一个 __init__.py 文件。

num3 = 30
num4 = 40

def factorial():
    print("我是arith包下extension模块中的factorial()方法")

三、包的使用

  我们可以通过 "import 完整包名.模块名" 的方式加载指定模块。

import arith
arith.add()
import arith.extension
arith.extension.factorial()

  我们还可以通过 "from 完整包名 import 模块名" 的方式加载指定的模块。

from arith import extension
extension.factorial()

  我们还可以通过 "from 完整包名.模块名 import 变量 " 的方式加载指定模块中的指定结构。

from arith import add
add()
from arith.extension import factorial
factorial()

__pycache__ 目录下的文件模块的缓存文件。Python 代码在执行前,需要被解析器先转换为机器码,然后再执行。所以我们在使用模块(包)时,也需要将模块中的代码先转换为机器码然后再交由计算机执行。而为了提高程序的运行的性能,Python 会在编译一次以后,将代码保存到一个缓存文件中。这样在下次加载这个模块(包)时,就可以不再重新编译而是直接加载缓存中编译好的代码即可。

标签:__,arith,extension,19,init,模块,import
From: https://www.cnblogs.com/FlurryHeart/p/18487565

相关文章

  • 20222319 2024-2025-1 《网络与系统攻防技术》实验二实验报告
    1.实验内容本周继续课堂学习了缓冲区溢出的相关知识,面向本次实验,主要学习了后门程序的生成方法,用ncat、socat实现两台计算机间互传文件的方法,体会了通过msf工具与执行好的后门程序实现对被攻击计算机的监听过程。1.1实验内容目录(1)使用netcat获取主机操作Shell,cron启动某项任......
  • PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos():
    问题描述在使用PBootCMS上传附件时,如果遇到错误 UNKNOW:Code:8192;Desc:stripos(),这通常是由于PHP版本或配置问题导致的。stripos() 函数在某些PHP版本中可能会引发警告或错误。解决步骤检查PHP版本确认当前使用的PHP版本是否与PBootCMS兼容。PBootCMS通常支持PHP5.......
  • 信息学奥赛 1322:【例6.4】拦截导弹问题(Noip1999)
     代码:#include<bits/stdc++.h>usingnamespacestd;inta[100005];boola1[100005];intmain(){inti=1;while(cin>>a[i]){a1[i]=false;i++;}i--;intant=0,x=a[1],j=2,sum=1;a1[1]=true;......
  • Leetcode 1926. 迷宫中离入口最近的出口
    1.题目基本信息1.1.题目描述给你一个mxn的迷宫矩阵maze(下标从0开始),矩阵中有空格子(用‘.’表示)和墙(用‘+’表示)。同时给你迷宫的入口entrance,用entrance=[entrancerow,entrancecol]表示你一开始所在格子的行和列。每一步操作,你可以往上,下,左或者右移动一......
  • PbootCMS附件上传失败报错UNKNOW: Code: 8192; Desc: stripos(): Non-string needles
    PbootCMS附件上传失败报错“UNKNOW:Code:8192;Desc:stripos():Non-stringneedleswillbeinterpretedasstringsinthefuture.”是由于PHP版本更新导致的兼容性问题。具体来说,stripos()函数在处理非字符串类型的第二个参数(即needle)时,未来版本的PHP将会将其视为字符串,而......
  • P5048 [Ynoi2019 模拟赛] Yuno loves sqrt technology III
    Sol蒲公英题意基本相同,但是注意到空间限制62.5MB,显然不能用蒲公英的做法。考虑先把整块的答案算出来,然后把小块的部分补上去,显然大块可以预处理,小块可以直接暴力查询是否越界。代码很简单。Code#include<iostream>#include<iomanip>#include<cstdio>#include<vector>......
  • Day19--可变参数
    Day19--可变参数从JDK1.5开始,Java支持传递同类型的可变参数给一个方法。在方法声明中,在指定参数类型后加一个省略号(...)。一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。有时候,代码里面的方法重载有很多,看着很繁琐,这就需要......
  • 二维数组1019
    publicclassPlaceDemo{publicstaticvoidmain(String[]args){//班级学生座位(二维数组)place();pace();}publicstaticvoidplace(){//静态初始化数组-----数据类型[][]数组名=new数据类型[]{元素1,元素2,元素3,··......
  • 嵌入式分享合集192~干货篇
    我自己的原文哦~https://blog.51cto.com/whaosoft/12238584一、电子工程师的常用工具  电子工程师是一个对从事集成电路、电子电气设备等相关产品生产、研发工作的技术人员的统称,一般分为硬件工程师和软件工程师。    硬件工程师主要要了解电路方面的知识,知道常用电......
  • 闲话 24.10.19
    闲话今日推歌:毕业Graduateby天使盐Tenshienfeat.诗岸希望大家幸福。那些你不要的:渐进一例刚过去的STAOIR8T5,很多人用暴力直接草了过去。那么,复杂度真的有保障吗?令\(V=\maxn\in\Theta(n)\),\(A=\mathbbP\cap[1,V]\)。那么枚举\(i\),枚举\(j=n\bmodi\),......