首先,说明一下,我使用的是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. SQL 时间函数 Datepart()与DateName()

    1.Datepart() 返回代表指定日期的指定日期部分的整数 语法 Datepart(datepart,date) 返回类型 int datepart: 日期部分 缩写 year yy, yyyy ...

  2. Vue(3)- 安装脚手架、过滤器、生命周期的钩子函数、vue-router基本使用

    一.安装脚手架 1.下载node.js,本文下载版本为node-v8.12.0-x64.msi,一键式安装. 2.安装完成后,打开终端,输入node,可进入node环境(两次ctrl+c退出),如下图 ...

  3. 5 TensorFlow入门笔记之RNN实现手写数字识别

    ------------------------------------ 写在开头:此文参照莫烦python教程(墙裂推荐!!!) ---------------------------------- ...

  4. mysqlbinlog作用

    mysqlbinlog:解析mysql的binlog日志 在 mysql-bin.index里面记录了所有的binlog文件,它是一个索引 binlog日志的作用:用来记录mysql内部增删改查等对m ...

  5. 解释一下python中的逻辑运算符

    python中有三个逻辑运算符:and.or.not print(False and True)#False print(7<7 or True)#True print(not 2==2)#Fa ...

  6. 数据结构:JAVA实现二叉查找树

    数据结构:JAVA实现二叉查找树 写在前面 二叉查找树(搜索树)是一种能将链表插入的灵活性与有序数组查找的高效性结合在一起的一种数据结构. 观察二叉查找树,我们发现任何一个节点大于左子节点且小于其右子 ...

  7. HDU - 6395 Sequence (分块+快速矩阵幂)

    给定递推式: 求Fn. 分析:给出的公式可以用快速矩阵幂运算得到,但 P/n 整除对于不同的i,值是不同的. 可以根据P将3-n分成若干块,每块中P整除n的值是相同的.分块的时候要注意判断. 将每块的 ...

  8. C++添加简单的日记记录

    #include<fstream>#include<iostream> using namespace std;//这是一种日记记录 b 种void LOG(char *tx, ...

  9. 用OpenCV实现Photoshop算法(三): 曲线调整

    http://blog.csdn.net/c80486/article/details/52499919 系列文章: 用OpenCV实现Photoshop算法(一): 图像旋转 用OpenCV实现Ph ...

  10. 什么时候需要用super

    1.子类构造函数调用父类构造函数用super 2.子类重写(覆盖)父类方法后,若想调用父类中被重写的方法,用super 3.未被重写的方法可以直接调用.