一、模块

定义:在python中,一个 .py 文件就称为一个模块

使用模块的好处:最大的好处就是提高了代码的可维护性

分类(三种):

  • python标准库
  • 第三方模块
  • 应用程序自定义模块

模块导入方法:

#cal.py
def add(x,y)
return x + y
def sub(x,y)
return x - y

1. import 语句

import module1[, module2[,.... moduleN]]

#举例:

#test.py

import cal
print(cal.add(3,5))
print(cal.sub(3,5))

注意:
import 做了两件事情:一是运行cal函数;第二是引入变量名

2. from...import 语句

from modulename import name1[, name2[, ... nameN]]

注意:
这个声明不会把整个modulename模块导入到当前的命名空间中,
只会将它里面的name1或者name2单独引入到执行这个声明的模块的全局符号表。

#举例:

#test.py

from cal import add
from cal import sub
print(add(3,5))
print(sub(3,5))

3. from...import*语句

from modulename import*
#举例:
#test.py

from cal import*
print(add(3,5))
print(sub(3,5))

(*代表一切,但是不推荐这种模块导入方式)

关于路径的补充:

当我们使用import语句时,python解释器是怎么样找到对应的文件的?
答案是解释器有自己的搜索路径,存在 sys.path里。

import sys
print(sys.path)

#存放的是执行文件的路径

二、包(package)

1. 基本概念

为了避免模块名相同带来的冲突,python引入按照目录组织模块的方法,称为包(package)

每个包目录下面都会有有个 __init__.py 的文件,这是区别普通目录的。如果没有__init__.py ,则不是一个包

__init__.py 可以是空文件,也可以有python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字

引入包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。

2. 包之间多层点的调用

举例:

#main.py
def add(x, y):
return x + y
def sub(x, y):
return x - y

调用方式一:

#test.py
from my_module.web1.web2.web3.main import sub
print(sub(2,5))

调用方式二:

#test.py
from my_module.web1.web2.web3 import main
print(main.add(2,5))

注意:包只要被调用,就是执行该包的 __init__.py 文件

Python(28)---模块和包的基本概念的更多相关文章

  1. 第10章 Python的模块和包

    前面几章介绍的Python基础知识,相关案例都是以单源代码文件为例来说明的,这种单源代码文件在Python中就是模块,每个模块文件都可以被其他应用导入,Python正是通过模块导入技术来实现很灵活的功 ...

  2. 一文搞懂 Python 的模块和包,在实战中的最佳实践

    最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...

  3. Python之模块和包导入

    Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...

  4. python中模块,包,库的概念

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  5. (Python )模块、包

    本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...

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

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

  7. python中模块,包,库

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

  8. Python之模块和包学习

    模块简介 python是由一系列的模块组成的,每个模块就是一个py为后缀的文件,同时模块也是一个命名空间,从而避免了变量名称冲突的问题.模块我们就可以理解为lib库,如果需要使用某个模块中的函数或对象 ...

  9. Python中 模块、包、库

    模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...

随机推荐

  1. 2018.11.02 洛谷P2312 解方程(数论)

    传送门 直接做肯定会TLETLETLE. 于是考验乱搞能力的时候到了. 我们随便选几个质数来checkcheckcheck合法解,如果一个数无论怎么checkcheckcheck都是合法的那么就有很大 ...

  2. java socket之上传文件

    一.功能介绍 该功能主要实现,将客户端的:F:/work/socketSample/filetemp/client/test_client.txt上传到服务端F:/work/socketSample/ ...

  3. nginx proxy_pass后的url加不加/的区别

    在nginx中配置proxy_pass时,当在后面的url加上了/,相当于是绝对根路径,则nginx不会把location中匹配的路径部分代理走;如果没有/,则会把匹配的路径部分也给代理走. 下面四种 ...

  4. c语言结构体链表

    原文链接:http://zhina123.blog.163.com/blog/static/417895782012106036289/ 引用自身的结构体,一个结构体中有一个或多个成员的基类型就是本结 ...

  5. springMVC注解(一)Controller

    HelloWorld程序 Step1  编写web.xml文件 <?xml version="1.0" encoding="UTF-8"?> < ...

  6. bzoj4873(最大权闭合子图)

    今天学了最大权闭合子图..然后找了这道题,发现完全不会..... 看了题解发现这种有诸如选了一个就一定要选另外的一些的限制又要求最优值的题有的可以转化成最大权闭合子图, 这个题我们首先想到不会选相交的 ...

  7. day37(类加载器)

    类的加载器:将class文件加载到JVM中执行这个文件. Java中将类加载器分成三类: 引导类加载器:     JAVA_HOME/jre/lib/rt.jar | 扩展类加载器:     JAVA ...

  8. 【repost】Chrome 控制台console的用法

    下面我们来看看console里面具体提供了哪些方法可以供我们平时调试时使用. 目前控制台方法和属性有: ["$$", "$x", "dir" ...

  9. Establish a website in 5 minutes

    $sudo apt-get update                                    //update   $sudo apt-get install tasksel     ...

  10. RMQ算法区间最值

    问题类型:是多次询问一个大区间里子区间的最值问题 dp + 位运算的思想处理 rmax[i][j]表示从i开始到i + 2^j - 1的区间里的最大值dp[i][j] ==== (i,i + 2^j ...