Python中的import,from...import以及模块、包、库的概念

  首先,说明一下,我使用的是python3.6.3win32版本,使用的IDE是pycharm2017社区免费版。html

  刚开始接触python编程不久,有不少概念都不是特别清楚,可是我以为既然选择,尽本身最大努力作到最好吧。这几天在玩python的一个开源框架(也就是库)pygame,特别好玩,并且制做2D小游戏很简单。不过都是比着别人的例子敲代码,实验游戏效果,渐渐的,想本身创造本身的游戏了,因此有一些问题我们必须趁早搞醒合,弄懂!python

  pygame,被称做一个库,固然也有人说这是一个框架,二者都没错!既然提到‘库’的概念,那么这里先讲一下,模块、包、库的纠纷。程序员

       模块:就是指以.py为后缀名的文件编程

  包:就和Java中的包同样,包下面能够有多级子包,每一个包中能够有任意个(包含0)模块。就和windows中的文件夹概念同样。windows

  库:其实和上面二者没有什么关系。能解决同一类问题模块的集合就能够叫作库,库中包含模块的个数能够是1个或者2个...具体看待解决问题的大小以及编写库的程序员对模块的具体划分。例如:pygame库中,就有处理音频、视频、鼠标事件等等的模块,具体模块能够参照       www.pygame.org/docs/#   文档说明。app

  讲清楚了上面三个概念,那么导入的时候,咱们得遵循什么技巧呢?框架

   那么,重点来了,我通过实验以及处处查阅了一些资料(毕竟新手),得出来一下两个结论:函数

   import xxx.xxx 的落脚点必定是模块,这句话什么意思呢?就是说xxx.xxx的最后一级必定是.py的文件名。且以这种方式导入的模块调用方式,必须是“模块名.xxx”,xxx多是函数,常量等等。spa

   可是有时候只须要导入模块中的某些部分。那么咱们就是用:code

   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.常量”符进行调用,为何呢?由于上面那句红色(英语)的话。

相关文章
相关标签/搜索