首先,說明一下,我使用的是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
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.locals
pygame constants to include only the pygame constants with a ‘from pygame.locals
pygame 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.常量」符進行調用,爲何呢?由於上面那句紅色(英語)的話。