首先,说明一下,我使用的是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

pygame constants

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以及模块、包、库的概念的更多相关文章

  1. Python及bs4、lxml、numpy模块包的安装

    http://blog.csdn.net/tiantiancsdn/article/details/51046490(转载) Python及bs4.lxml.numpy模块包的安装 Python 的安 ...

  2. python中给程序加锁之fcntl模块的使用

    python 中给文件加锁——fcntl模块import fcntl 打开一个文件##当前目录下test文件要先存在,如果不存在会报错.或者以写的方式打开f = open('./test')对该文件加 ...

  3. Python中的日志记录方案-logging模块&loguru模块

    原文链接 原创: 崔庆才 在 Python 中,一般情况下我们可能直接用自带的 logging 模块来记录日志,包括我之前的时候也是一样.在使用时我们需要配置一些 Handler.Formatter ...

  4. Python中xlrd、xlwt、win32com模块对xls文件的读写操作

    # -*- coding: utf-8 -*- #xlrd和xlwt只支持xls文件读写,openpyxl只支持xlsx文件的读写操作 import xlrd import xlwt import w ...

  5. Python中Cookie的处理(二)cookielib库

    Python中cookielib库(python3中为http.cookiejar)为存储和管理cookie提供客户端支持. 该模块主要功能是提供可存储cookie的对象.使用此模块捕获cookie并 ...

  6. Python中Cookie的处理(一)Cookie库

    Cookie用于服务器实现会话,用户登录及相关功能时进行状态管理.要在用户浏览器上安装cookie,HTTP服务器向HTTP响应添加类似以下内容的HTTP报头: Set-Cookie:session= ...

  7. Python模块/包/库安装几种方法(转载)

    一.方法1: 单文件模块直接把文件拷贝到 $python_dir/Lib 二.方法2: 多文件模块,带setup.py 下载模块包(压缩文件zip或tar.gz),进行解压,CMD->cd进入模 ...

  8. Python中循环引用(import)失败的解决方法

    原文链接:http://blog.ihuxu.com/the-solution-to-the-problem-of-circular-import-in-python/ 我是采用方案三 "将 ...

  9. Python中from scipy.misc import imread报错的原因?

    from scipy.misc import imread 报错 查询后其原因是from scipy.misc import imread,imwrite 等方法已经被弃用,Python已经将imre ...

  10. 解决bs4在python中出现“ImportError: cannot import name ‘HTMLParseError‘”错误

    在使用BeautifulSoup4时候出现了ImportError: cannot import name 'HTMLParseError'的错误. 根本原因是BeautifulSoup在4.4.0以 ...

随机推荐

  1. python内存泄露查找

    1 前言: 1.1 像Java程序一样,虽然Python本身也有垃圾回收的功能,但是同样也会产生内存泄漏的问题 1.2 在Python程序里,内存泄漏是由于一个长期持有的对象不断的往一个dict或者l ...

  2. C#驱动级模拟按键操作

    C#驱动级模拟按键操作 2013-09-26 03:17 ·AB叔 447 3 <- 点击左侧的数字“攒”一个吧 昨天遇到一个程序自动输入财付通密码的任务. 因为财付通密码控件是有安全保护的,所 ...

  3. Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace

    Delphi 正则表达式之TPerlRegEx 类的属性与方法(4): Replace // Replace var   reg: TPerlRegEx; begin   reg := TPerlRe ...

  4. oracle 创建视图、修改视图、删除视图、利用视图操作基本表

    转:http://blog.sina.com.cn/s/blog_6b58d2fa0100rgvw.html 1.使用create or replace view命令创建视图 语法格式: create ...

  5. mysql数据库存储过程数据迁移案例与比较

    cursor 与 insert ...select 对比: cursor:安全,不会造成死锁,可以在服务运行阶段跑,比较稳定. insert...select :速度快,但是可能造成死锁,相比curs ...

  6. 链接指示:extern "C"

    C++程序有时需要调用其他语言编写的函数,最常见的是调用C语言编写的函数.像所有其他名字一样,其他语言中的函数名字也必须在C++中进行声明,并且该声明必须指定返回类型和形参列表.对于其他语言编写的函数 ...

  7. alter table add constraint 用法

    1.主键约束: 要对一个列加主键约束的话,这列就必须要满足的条件就是分空 因为主键约束:就是对一个列进行了约束,约束为(非空.不重复) 以下是代码   要对一个列加主键,列名为id,表名为emp 格式 ...

  8. Linux:redhat6.5使用yum时提示需要注册问题解决方案

    Linux:redhat6.5使用yum时提示需要注册问题解决方案 一.问题 新安装了redhat6.5.安装后,登录系统,使用yum时候.提示: This system is not registe ...

  9. 2018-2019-2 20165114《网络对抗技术》Exp3 免杀原理与实践

    Exp3 免杀原理与实践 目录 一.实验内容 二.基础问题回答 (1)杀软是如何检测出恶意代码的? (2)免杀是做什么? (3)免杀的基本方法有哪些? 三.实践过程记录 正确使用msf编码器,msfv ...

  10. MyBatis正在爬的坑

    换了份工作,开始接触Mybatis,开一篇文章记录一下自己遇到的坑 2018-06-20 今天遇到了一个问题,编好的sql语句在数据库可以执行但是写到程序里边就GG,什么问题呢?一直纠结在程序哪里写错 ...