pygame的init()

你究竟有(init)幾個好(子)妹(模)妹(塊)圈澈?

當我們在init()的時候,我們在干什么

init 這個單詞在我們用python進行面向?qū)ο箝_發(fā)的時候是跑不了的按价。理解python的__init__其實就是和這里的init作用差不多惭适。做的工作都是初始化.

在和孩子解釋這個概念的時候,我的理解還是楼镐,保持它的專業(yè)性癞志,告訴他們這個專有名詞——初始化(initialize vt.)。至于他在干什么框产,我的解釋是這樣的:

我們已經(jīng)知道python有一個特殊的“工具包(模塊)”叫pygame了凄杯。在我們要動手用它完成我們的想法之前师溅,電腦這個強迫癥需要我們檢查一遍,這個工具包是否完整盾舌,能否正常給我們提供幫助墓臭。而這個檢查的動作,就是pygame.init()

那么init()實際上檢查了哪些東西呢妖谴?

這個其實也不難實驗窿锉。直接在shell里面,我執(zhí)行了這個函數(shù):

>>> import pygame
>>> pygame.init()
(6, 0)

不明所以的膝舅,他給了我一個元組(6,0)嗡载,我也很不理解,這個6和0分別代表什么意思仍稀。所以查閱了pygame的官方文檔

initialize all imported pygame modules

init() -> (numpass, numfail)

Initialize all imported pygame modules. No exceptions will be raised if a module fails, but the total number if successful and failed inits will be returned as a tuple. You can always initialize individual modules manually, but pygame.init() is a convenient way to get everything started. The init() functions for individual modules will raise exceptions when they fail.

You may want to initialize the different modules separately to speed up your program or to not use things your game does not.

It is safe to call this init() more than once: repeated calls will have no effect. This is true even if you have pygame.quit() all the modules.

初始化所有導入的pygame模塊洼滚。如果模塊失敗,則不會引發(fā)異常技潘,但如果成功且失敗的總數(shù)將作為元組返回遥巴。您可以隨時手動初始化單個模塊,但pygame.init()初始化所有導入的pygame模塊是一種方便的方法來啟動所有內(nèi)容享幽。各個模塊的init()函數(shù)會在失敗時引發(fā)異常铲掐。

您可能希望單獨初始化不同的模塊以加速您的程序或不使用您的游戲沒有的東西。

不止一次調(diào)用此init()是安全的:重復調(diào)用將不起作用值桩。即使你有pygame.quit()所有模塊也是如此摆霉。

關(guān)于init()的一個意外的實驗

我以前從來沒有深究過pygame.init()這個函數(shù)究竟init了哪些模塊,僅僅在實踐的過程中知道奔坟,音頻播放和創(chuàng)建文字字體的時候携栋,如果沒有init就會報錯。

今天我在安裝我的新的電腦環(huán)境的時候咳秉,因為不知道電腦的型號婉支,所以并沒有特意去搜索和安裝電腦對應(yīng)的驅(qū)動。結(jié)果在安裝完python之后滴某,安裝pygame(wheel也要安裝)之后磅摹,運行常規(guī)的測試函數(shù)pygame.init()返回的數(shù)字是(5,1)

排除問題的方法就是把已知可以init()的子模塊都先運行掉霎奢。經(jīng)過排查户誓,發(fā)現(xiàn)pygame無法調(diào)用聲卡驅(qū)動。剩下的事情就好辦很多了幕侠,重新安裝一下聲卡驅(qū)動帝美,重啟之后就可以正常init了。

但是在這個過程中晤硕,我可以得出比以前更加接近實際的一個結(jié)論:

pygame.init()在做的悼潭,其實就是檢查庇忌,電腦上一些需要的硬件調(diào)用接口、基礎(chǔ)功能是否有問題舰褪。如果有皆疹,他會在程序運行之前就反饋給你,方便你進行排查和規(guī)避占拍。

說了這么多略就,它到底init了哪些子模塊

>>> import pygame
>>> pygame.init()
(6, 0)
>>> pygame.display.init()
>>> pygame.font.init()
>>> pygame.joystick.init()
>>> pygame.mixer.init()
>>> pygame.freetype.init()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'pygame' has no attribute 'freetype'
>>> pygame.midi.init()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AttributeError: module 'pygame' has no attribute 'midi'
>>> pygame.cdrom.init()
>>> pygame.scrap.init()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
pygame.error: No display mode is set

我把pygame官網(wǎng)上面的doc里介紹的所有帶有init的子模塊都運行了一遍。其中midi和freetype這兩個模塊已經(jīng)沒有了(吐槽一下官方的文檔吧晃酒,都沒了還放著嘛)表牢。最后一個scrap初始化是因為沒有窗口。這樣的話贝次,其實已經(jīng)有5個模塊是被初始化了崔兴。但是scrap在沒有窗口的情況下會報錯,到底算不算一個init蛔翅。還需要后面再仔細看看文檔和源碼吧敲茄。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市搁宾,隨后出現(xiàn)的幾起案子折汞,更是在濱河造成了極大的恐慌,老刑警劉巖盖腿,帶你破解...
    沈念sama閱讀 212,542評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異损同,居然都是意外死亡翩腐,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評論 3 385
  • 文/潘曉璐 我一進店門膏燃,熙熙樓的掌柜王于貴愁眉苦臉地迎上來茂卦,“玉大人,你說我怎么就攤上這事组哩〉攘” “怎么了?”我有些...
    開封第一講書人閱讀 158,021評論 0 348
  • 文/不壞的土叔 我叫張陵伶贰,是天一觀的道長蛛砰。 經(jīng)常有香客問我,道長黍衙,這世上最難降的妖魔是什么泥畅? 我笑而不...
    開封第一講書人閱讀 56,682評論 1 284
  • 正文 為了忘掉前任,我火速辦了婚禮琅翻,結(jié)果婚禮上位仁,老公的妹妹穿的比我還像新娘柑贞。我一直安慰自己,他們只是感情好聂抢,可當我...
    茶點故事閱讀 65,792評論 6 386
  • 文/花漫 我一把揭開白布钧嘶。 她就那樣靜靜地躺著,像睡著了一般琳疏。 火紅的嫁衣襯著肌膚如雪康辑。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評論 1 291
  • 那天轿亮,我揣著相機與錄音疮薇,去河邊找鬼。 笑死我注,一個胖子當著我的面吹牛按咒,可吹牛的內(nèi)容都是我干的酸休。 我是一名探鬼主播利凑,決...
    沈念sama閱讀 39,107評論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼变抽!你這毒婦竟也來了奔缠?” 一聲冷哼從身側(cè)響起掠抬,我...
    開封第一講書人閱讀 37,845評論 0 268
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎校哎,沒想到半個月后两波,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡闷哆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,612評論 2 327
  • 正文 我和宋清朗相戀三年腰奋,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抱怔。...
    茶點故事閱讀 38,747評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡劣坊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出屈留,到底是詐尸還是另有隱情局冰,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評論 4 333
  • 正文 年R本政府宣布灌危,位于F島的核電站康二,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏乍狐。R本人自食惡果不足惜赠摇,卻給世界環(huán)境...
    茶點故事閱讀 40,072評論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧藕帜,春花似錦烫罩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至时甚,卻和暖如春隘弊,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背荒适。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評論 1 267
  • 我被黑心中介騙來泰國打工梨熙, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人刀诬。 一個月前我還...
    沈念sama閱讀 46,545評論 2 362
  • 正文 我出身青樓咽扇,卻偏偏與公主長得像,于是被迫代替她去往敵國和親陕壹。 傳聞我的和親對象是個殘疾皇子质欲,可洞房花燭夜當晚...
    茶點故事閱讀 43,658評論 2 350

推薦閱讀更多精彩內(nèi)容