Python中的import,from...import以及模块、包、库的概念
首先,说明一下,我使用的是python3.6.3win32版本,使用的IDE是pycharm2017社区免费版。
刚开始接触python编程不久,有很多概念都不是特别清楚,但是我觉得既然选择,尽自己最大努力做到最好吧。这几天在玩python的一个开源框架(也就是库)pygame,特别好玩,而且制作2D小游戏很简单。不过都是比着别人的例子敲代码,实验游戏效果,渐渐的,想自己创造自己的游戏了,所以有一些问题咱们必须趁早搞醒合,弄懂!
pygame,被称作一个库,当然也有人说这是一个框架,两者都没错!既然提到‘库’的概念,那么这里先讲一下,模块、包、库的纠纷。
模块:就是指以.py为后缀名的文件
包:就和Java中的包一样,包下面可以有多级子包,每个包中可以有任意个(包含0)模块。就和windows中的文件夹概念一样。
库:其实和上面两者没有什么关系。能解决同一类问题模块的集合就可以叫做库,库中包含模块的个数可以是1个或者2个...具体看待解决问题的大小以及编写库的程序员对模块的具体划分。例如:pygame库中,就有处理音频、视频、鼠标事件等等的模块,具体模块可以参照 www.pygame.org/docs/# 文档说明。
讲清楚了上面三个概念,那么导入的时候,我们得遵循什么技巧呢?
那么,重点来了,我经过实验以及到处查阅了一些资料(毕竟新手),得出来一下两个结论:
import xxx.xxx 的落脚点一定是模块,这句话什么意思呢?就是说xxx.xxx的最后一级一定是.py的文件名。且以这种方式导入的模块调用方式,必须是“模块名.xxx”,xxx可能是函数,常量等等。
但是有时候只需要导入模块中的某些部分。那么我们就是用:
from 模块名 import xxx ,xxx可以是类,函数,常量等等。注意模块名可能是什么包下面的模块,形如:xxx.xxx。
为什么把这个写成一篇博客,直接原因如下:
pygame库中有一个模块,pygame.locals这个模块里面全是一些常量(constants),一般都会导入进去。先来分析一下,pygame.locals的结构,“pygame.locals”中的“pygame”是一个包名,实际上,这个包下面还有很多模块,还有子包mixer(同时还有pygame.mixer模块,这里的mixer说明在pygame文件夹下面有一个mixer.py的文件,子包mixer说明有一个mixer的文件夹)。但是要注意的是(下面是这个模块官方说明文档):
pygame.locals
This module contains various constants used by pygame. It’s contents are automatically placed in the pygame module namespace. However, an application can use pygame.localspygame constants to include only the pygame constants with a ‘from pygame.localspygame constants import *’.
Detailed descriptions of the various constants are found throughout the pygame documentation. pygame.display.set_mode()Initialize a window or screen for display flags like HWSURFACE are found in the Display section. Event types are explained in the Event section. Keyboard K_ constants relating to the key attribute of a KEYDOWN or KEYUP event are listed in the Key section. Also found there are the various MOD_ key modifiers. Finally, TIMER_RESOLUTION is defined in Time.
也就是说,如果我们导入了pygame模块而不导入pygame.locals这个模块,那么我们可以使用“pygame.常量”符进行调用,为什么呢?因为上面那句红色(英语)的话。
Python中的import,from...import以及模块、包、库的概念的更多相关文章
- Python及bs4、lxml、numpy模块包的安装
http://blog.csdn.net/tiantiancsdn/article/details/51046490(转载) Python及bs4.lxml.numpy模块包的安装 Python 的安 ...
- python中给程序加锁之fcntl模块的使用
python 中给文件加锁——fcntl模块import fcntl 打开一个文件##当前目录下test文件要先存在,如果不存在会报错.或者以写的方式打开f = open('./test')对该文件加 ...
- Python中的日志记录方案-logging模块&loguru模块
原文链接 原创: 崔庆才 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样.在使用时我们需要配置一些 Handler.Formatter ...
- Python中xlrd、xlwt、win32com模块对xls文件的读写操作
# -*- coding: utf-8 -*- #xlrd和xlwt只支持xls文件读写,openpyxl只支持xlsx文件的读写操作 import xlrd import xlwt import w ...
- Python中Cookie的处理(二)cookielib库
Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...
- Python中Cookie的处理(一)Cookie库
Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理.要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: Set-Cookie:session= ...
- Python模块/包/库安装几种方法(转载)
一.方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip或tar.gz),进行解压,CMD->cd进入模 ...
- Python中循环引用(import)失败的解决方法
原文链接:http://blog.ihuxu.com/the-solution-to-the-problem-of-circular-import-in-python/ 我是采用方案三 "将 ...
- Python中from scipy.misc import imread报错的原因?
from scipy.misc import imread 报错 查询后其原因是from scipy.misc import imread,imwrite 等方法已经被弃用,Python已经将imre ...
- 解决bs4在python中出现“ImportError: cannot import name ‘HTMLParseError‘”错误
在使用BeautifulSoup4时候出现了ImportError: cannot import name 'HTMLParseError'的错误. 根本原因是BeautifulSoup在4.4.0以 ...
随机推荐
- 006-shiro授权
一.授权流程 二.三种授权方式 2.1.编程式:通过写if/else 授权代码块完成: Subject subject = SecurityUtils.getSubject(); if(subject ...
- Visual Studio Code 配合 Node.js 轻松实现JS断点调试
一直喜欢vscode这个编辑器,今天看在liaoxuefeng.com学习nodejs时,看到上面 讲了使用vscode配合nodejs调试JS代码,原来这么简单,现在分享如下: 本人环境: Visu ...
- [设计模式]State模式
<Java与模式> 又称状态对象模式.状态模式是对象的行为模式.GOF95 一个对象的行为取决于一个或者多个动态变化的属性,这样的属性叫做状态.这样的对象叫做有状态的对象(stateful ...
- [转]Asp.net MVC 中Ajax的使用
Asp.net MVC 抛弃了Asp.net WebForm那种高度封装的控件,让我们跟底层的HTML有了更多的亲近.可以更自由.更灵活的去控制HTML的结构.样式和行为.而这点对于Ajax的应有来说 ...
- Part1.2 、RabbitMQ -- Publish/Subscribe 【发布和订阅】
python 目录 (一).交换 (Exchanges) -- 1.1 武sir 经典 Exchanges 案例展示. (二).临时队列( Temporary queues ) (三).绑定(Bind ...
- Uber中国在地方城市的人员架构是怎样的?
http://www.thepaper.cn/newsDetail_forward_1390516 澎湃新闻:Uber中国在地方城市的人员架构是怎样的? 柳甄:一般是3人组成的小团队作战.一名城市 ...
- Python面试题之Python对象反射、类反射、模块反射
python面向对象中的反射:通过字符串的形式操作对象相关的属性.python中的一切事物都是对象(都可以使用反射) 一.getattr 对象获取 class Manager: role = &quo ...
- 20165101 实验二 Java面向对象程序设计
20165101 实验二 Java面向对象程序设计
- spring与memcached整合[转]
1, 开始肯定是下载需要的文件了,这里就下载附件里的文件就好,我也是在网上down的,放这好找.然后我们安装一下Memcache服务器,找到解压的memcached-1.2.1-win32,启动cmd ...
- eclipse向上/下复制一行(或者多行)的快捷键失效的基本解决方法
在eclipse中,快捷键Ctrl+Alt+↓是向下复制选中的行,快捷键Ctrl+Alt+↑是向上复制选中的行. 这两个快捷键也是我常用的快捷键之一,以前也遇到失效. 所以现在记录一个解决的方法: 在 ...