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

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.常量”符進行調用,為什么呢?因為上面那句紅色(英語)的話。

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM