一:区分Python文件的2种用途

  1个Python文件的2种用途

  1.1 当作脚本执行:        if __name__ == '__main__':

  1.2 当作模块导入使用     if __name__ == '模块名':

            if __name__ == '__main__':

               pass

    spam.py

    说明 在Python内有一种方法

__name__   这种方法在文件当中默认等于__main__    (此处为2个_)  这样的作用就是。代码可以调试的时候运行的是整个spam.py
 money = 1000

 def index():
print('in the index', money) def bbs():
print('in the bbs', money) def delphi():
print('in the delphi', money) if __name__ == '__main__':
bbs()
delphi()
index()
print('调试功能') print(__name__) # __main__

写完后本地调用直接运行;其他地方需要引用默认不会输出

二:模块的搜索路径

  1   内存

      

sys.modules  查看已经加载到内存的模块

  2   内置模块   sys   内置模块都是C语言写的

  3 自己定义的模块    sys.path-->查看当前环境变量

需要加入到环境变量才可以执行:

自己定义模块的时候 不能定义跟内置一样的模块

三: 包

    1.什么是包

        包就是1个包含__init__.py的文件夹,(可以往该文件夹下放一堆子模块)

在python3中,即时包的文件夹下没有__init__.py文件 python3也不会报错,但是python2会报错

之所以这样做是因为在import package1的时候,看似导入的是package1   实际上导入的是它下面的__init__.py文件

示例如下

在__init__.py中写入:

然后在包的导入.py文件中执行导入操作后的执行结果

================示例1 begin===================

init文件

解释如下:

当包的使用.py运行时,import package1 实际上是导入运行了package1文件夹下的init文件;

然后在执行

from package1 import m1
在package1下的m1被导入了init当中
因而最后包的导入中的package1.m1.func()就可以运行了

================示例1 end===================

注意核心是:根据执行文件所在的路径去找,只有执行文件所在的路径才会加到环境变量当中

2   包的使用

      注意:但凡在导入时,出现.   (点)   这是导入包才用的语法

点的左边必须是一个包;使用的时候没有限制

以上的导入方式太麻烦了;那么针对此;有没有简便的方法?

=====================================示例2==================================================

要实现该功能,只要在D:\Document\Python0404\day5\模块和包\测试2\package1\__init__.py中写入

上面的导入方式是绝对导入

之所以要这么做   是为了区分开开发者和使用者

=============================================示例3===========================================

原先结构不变;

程式照样运行

注意点   相对导入是从当前init的路径下开始找      .   点  表示当前文件夹

一个点就表示往上一层

 from ..m1 import func1
def func2():
func1()
print('in the func2 m2')

Python Day5 模块 包的更多相关文章

  1. python中模块包的离线下载教程

    1.简介 当我们进行Python项目的迁移时(例如迁移到另外一台服务器上),如果该服务器要求离线安装, 往往需要我们将项目中的所需模块包进行离线操作. 2.教程 2.1 首先安装pip2pi模块,它可 ...

  2. Python安装模块包

    可以利用pycharm安装模块包 使用这种方法安装时,可能会报下面类型的异常 AttributeError: module 'pip' has no attribute 'main' 出现这这样的异常 ...

  3. 跟着ALEX 学python day5 模块

    文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  模块 1.模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是.py结尾的pyt ...

  4. python基础--模块&包

    一.模块 1.模块是程序 任何Python程序都可以作为模块导入. 程序的保存也很重要,如果想把程序保存在C:\python (Windows)目录下,需要告诉解释器在哪里寻找模块了. >> ...

  5. python基础模块,包

    #import cal,time #导入模块名可以看作导入一个变量 #from cal import add # from cal import *#引入所有变量 *代表所有 占内存 不推荐 # # ...

  6. Python札记 -- 使用easy_install进行模块/包管理

    今天在阅读以前项目代码时,发现里面使用的第三方模块的参数相当诡异,总是对不上.经过分析之后,发现是自己安装的第三方模块跟项目使用的版本不一致.在Python中进行模块/包管理的话,就不得不提到easy ...

  7. python导入模块和包的使用

    做项目的时候经常会要求做到模块化管理,即同样功能的代码放到同一个文件夹下,以便于方便管理,相信很多人对模块的引用都模糊不清,今天鄙人在这里就总结下. 一.模块导入的使用 在同一个文件夹下有两个文件分别 ...

  8. Python学习 之 包和模块

    1.rpm -ql python #查看python在计算机中安装了哪些文件 2.模块是一个可以导入的Python脚本文件 包是一堆按目录组织的模块和子包,目录下的__init__.py文件存放了包的 ...

  9. Python 基金会 —— 模块和包简介

    一.模块(Module) 1.模块的作用      在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...

随机推荐

  1. HTML:foreach

    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"% ...

  2. Java 模拟面试题

    1.面向对象的特点 继承,封装,多态 2.对象和类的区别是什么? 对象是对客观事物的抽象,类是对对象的抽象.类是一种抽象的数据类型,它们的关系是,对象是类的实例,类是对象的模板. 3.静态成员和实例成 ...

  3. python全栈开发笔记---------数据类型-----集合set

    定义:由不同元素组成的集合,集合中是一组无序排列的可hash值,可以作为字典的key 1.不同元素组成 2.无序 3.集合中元素必须是不可变类型(数字,字符串,元组) 特性:集合的目的是讲不同的值放到 ...

  4. Java servlet 实现的简易购物车

    首页 2.购买页 3.购物车页 1. 首页代码 发送一个post请求 <!DOCTYPE html><html lang="en"><head> ...

  5. 2.3 利用FTP服务器下载和上传文件

    二.利用FTP服务器的下载文件 from ftplib import FTP from os.path import exists def getfile(file,site,dir,user=(), ...

  6. rod cutting

    for a rod of length i the price of it si pi,to cut the rod to earn more money package dynamic_progra ...

  7. 剑指Offer 58. 对称的二叉树 (二叉树)

    题目描述 请实现一个函数,用来判断一颗二叉树是不是对称的.注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的. 题目地址 https://www.nowcoder.com/practice/ ...

  8. 网络编程并发 多进程 进程池,互斥锁,信号量,IO模型

    进程:程序正在执行的过程,就是一个正在执行的任务,而负责执行任务的就是cpu 操作系统:操作系统就是一个协调.管理和控制计算机硬件资源和软件资源的控制程序. 操作系统的作用: 1:隐藏丑陋复杂的硬件接 ...

  9. 【转载】 强化学习(十一) Prioritized Replay DQN

    原文地址: https://www.cnblogs.com/pinard/p/9797695.html ------------------------------------------------ ...

  10. pytorch中,不同的kernel对不同的feature map进行卷积之后输出某一个channel对应的多个feature map如何得到一个channel的feature map

    实际上在卷积操作的时候,比如说,我某一层输出的feature map的size为4713*13 channel的数目为7,设经过某卷积层之后,网络输出的feature map的channel的数目为1 ...