23 python初学(模块和包)
模块(module):
好处: 提高代码可维护性 + 编写代码不必从零开始
模块有三种: python标准库、第三方模块、应用程序自定义模块
另外,使用模块还可以避免函数名和变量名冲突,相同名字的函数和变量完全可以分别存在不同的模块中。因此,我们在自己编写模块时,不必考虑名字会与其他模块冲突,但是也要注意,尽量不要与内置函数名字冲突。
搜索路径:sys.path
现在有 calculate.py文件,内有 add()、sub()方法
模块导入方法:
- 导入整个模块:
import calculate,time (多个模块使用 , 分隔开)
print(calculate.add(1, 2))
2. 导入模块内的多个方法:
from calculate import add,sub
print(add(3, 2))
import calculate # 解释器通过搜索路径找到 calculate.py 后,将 calculate = calculate.py all code
import sys
需要使用 calculate 来调用add方法
print(calculate.add(1, 2))
# 搜索路径
print(sys.path)
from calculate import *: # 此种情况遇到的问题是 calculate 中的 add 方法与本文件中的 add 方法有重复时,会按照顺序来决定使用哪一个。因此不建议使用此种方式
from calculate import add as plus: # 这样就不能再使用 add 方法,而是使用 plus 方法
from calculate import add, minus
# 此时不能再使用 calculate 来调用add方法,他并不是一个可以直接拿到的变量了。
print(add(3, 2)) from calculate import add as plus
print(plus(3, 3))
- 从包 (web) 中导入模块:
- 如果包和文件在同一级目录: from web import logger (不能 import web.logger)
- 包 web 和文件在同一目录,web下还有包 web2,web2 下有文件logger:
- 如果想导入 web.web2 下的模块 logger 导入 mylogger 方法:
- from web.web2.logger import mylogger
- 导入包: import web # 这句话执行了包 web 下的 _init_ 模块
# from web import logger # 从同级包导入模块
import web # 导入包,执行了_init_模块
print(web.main.x) #报错AttributeError: module 'web' has no attribute 'main'
包:模块使用来组织函数的,包是用来组织模块的;
包下面有 _init_ 文件
目录结构:
bin(入口):_init_.py 、 bin.py
module(主逻辑):_init_.py 、 main.py 、logger.py
conf(配置):
# 在被调用时,不会编译执行此段代码
if __name__ == “__main__”:
序列化:
json:
pickle:
shelve:
xml:
标签、属性: <country name = ‘panama’> </country>
23 python初学(模块和包)的更多相关文章
- Python之模块和包导入
Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...
- 一文搞懂 Python 的模块和包,在实战中的最佳实践
最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...
- python基础-------模块与包(一)
模块与包 Python中的py文件我们拿来调用的为之模块:主要有内置模块(Python解释器自带),第三方模块(别的开发者开发的),自定义模块. 目前我们学习的是内置模块与第三方模块. 通过impor ...
- Python之模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- 《Python》模块和包
一.模块 1.什么是模块: 一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编写的代码(. ...
- Python之模块和包(Day21)
一.Python模块 Python模块(module),是一个Python文件,以.py结尾,包含了Python对象定义和Python语句. 模块让你能够有逻辑的组织你的Python代码段 把相关的代 ...
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- (Python )模块、包
本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...
- Python 基金会 —— 模块和包简介
一.模块(Module) 1.模块的作用 在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...
- python中模块,包,库的概念
模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...
随机推荐
- ThreadLocal使用和原理简析
1. 解决共享资源冲突 对于并发工作,需要某种方式来防止两个任务同时访问相同的资源,至少在关键阶段不能出现这种冲突情况. 方法之一就是当资源被一个任务使用时,在其上加锁.第一个访问某项资源的任务必须锁 ...
- PC逆向之代码还原技术,第三讲汇编中加法的代码还原
目录 PC逆向之代码还原技术,第三讲汇编中加法的代码还原 一丶汇编简介 二丶高级代码对应汇编观看. 1.代码还原解析: 总结 PC逆向之代码还原技术,第三讲汇编中加法的代码还原 一丶汇编简介 在讲解加 ...
- Tapestry3.0开发概论
一.TAPESTRY技术的综述. tapestry是平行于struts/Spring MVC/webwork /jsf等开发工具的语言.tapestry是基于组件的开发工具.它具有组件的可重用性.因为 ...
- windows资源管理器多标签打开 windows文件夹多标签浏览 浏览器tab页面一样浏览文件夹 clover win8 win10 报错 无响应问题怎么解决 clover卡死 clover怎么换皮肤
大家都知道,我们打开一堆文件夹的时候,是什么样子 “厚厚的一叠”图标堆叠在一起的,非常的不方便 那么,是不是可以像浏览器一样的tab页面展示呢? 答案是可以的 安装好就是这样子的 是不是方便漂亮了很多 ...
- Spring基础系列-参数校验
原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9953744.html Spring中使用参数校验 概述 JSR 303中提出了Bea ...
- C#简单接口和继承示例详解——快速入门
上一篇中我们说到继承,其实他们之间是差不多的. 接口是方法的抽象,如果不同的类有同样的方法,那么就应该考虑使用接口. C#中接口可以多继承,接口之间可以相互继承和多继承.一个类可以同时继承一个类和多个 ...
- .net core EFCore CodeFirst 迁移出现错误【No project was found. Change the current working directory or use the --project option. 】
PM> dotnet ef Migrations add Init No project was found. Change the current working directory or u ...
- .Net中Log4Net的使用
2018-08-23 .Net中Log4Net的使用 一.log4net 分类型记录日志存放多个日志文件 1.在webconfig里添加配置 1.1 在<configSections> 中 ...
- 解决MySQL报错The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents .....
1.前言 今天在用SpringBoot2.0+MyBatis+MySQL搭建项目开发环境的时候启动项目发现报了一个很奇怪的错,报错内容如下: java.sql.SQLException: The se ...
- php 时间戳最大值
今天遇到一个bug,获取有效期值错误,在定位跟踪后发现有效期有值,如下: $expireDate = ; //2037-08-16 09:30:48 但是在该时间戳的基础上加上1 year后, $ex ...