<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    qileilove

    blog已經轉移至github,大家請訪問 http://qaseven.github.io/

    python模塊

    模塊

    前面有簡單介紹如何使用import從外部模塊獲取函數并且為自己的程序所用:

    >>> import math >>> math.sin(0)  #sin為正弦函數 0.0

     

    模塊是程序

    任何python程序都可以作為模塊導入。假設寫如下程序,并且將它保存為以C:\python\hello.py

    #hello.py print "hello,world!"

    下面通過python解釋器調用:

    >>> import sys >>> sys.path.append('c:/python') >>> import hello hello,world!

    再來一次:

    >>> import hello  >>> 

    怎么這次沒結果?因為導入模塊并不意味著在導入進執行某些操作。它們主要用于定義,比如變量、函數和類等。此外,因為只需要定義這些東西一次,導入模塊多次和導入一次的效果是一樣的。

     

     

    模塊用于定義

    1、在模塊中定義函數

    假設我們編寫了一個類似代碼的模塊,將其保存為hello2.py 文件。

    #hello2.py def hello():     print "hello, world !"

    保存后,可以像下面這樣導入:

    >>> import hello2

    模塊會被執行,這意味著hello函數在模塊的作用被定義了。因此可以通過以下方式來訪問函數:

    >>> hello2.hello()

    hello.world!

     

     

    2、在模塊中增加測試代碼

    模塊用來定義函數、類和其他內容,有時候在模塊中添加一些檢查模塊本身是否正常工作的測試代碼是非常有用的。 

    復制代碼
    #hello3.py  def hello():     print "hello.world!"  def test():     hello()  if __name__ == '__main__': test()
    復制代碼

    f __name__ == '__nain__' 解釋

    python文件的后綴為.py ,.py文件可以用來直接運行,就像一個獨立的小程序;也可以用來作為模塊被其它程序調用。

    __name__是模塊的內置屬性,如果等于'__main__' 側表示直接被使用,那么將執行方法test()方法;如果是被調用則不執行 if 判斷后面的test()方法。

    執行結果:

    復制代碼
    >>> import hello3   #表示hello3模塊被調用,不執行test方法,所以沒有輸出  >>> hello3.hello()   #表示程序執行,調用test方法  hello.world!  >>> hello3.hello()   #這里是不是可以反復調用test方法   hello.world!
    復制代碼

     

     

     

    讓模塊可用

    前面的例子中,我們改變了sys.path,其中包含了一個目錄列表,解釋器在該列表中查找模塊。在理想情況下,一開始sys.path本身就應該包含正確的目錄,有兩方法可以做到這一點: 一是將模塊放置在合適的位置,別外一種是告訴解釋器去哪里查找需要的模塊。

    1、將模塊放置在正確的位置

    來看看python解釋器會從哪里查找模塊

    復制代碼
    >>> import sys,pprint >>> pprint.pprint(sys.path) ['',  'I:\\Python27\\Lib\\idlelib',  'C:\\Windows\\system32\\python27.zip',  'I:\\Python27\\DLLs',  'I:\\Python27\\lib',  'I:\\Python27\\lib\\plat-win',  'I:\\Python27\\lib\\lib-tk',  'I:\\Python27',  'I:\\Python27\\lib\\site-packages',  'c:/python']
    復制代碼

    盡管這些目錄下都可以被找到,但site-packages 目錄是最佳選擇。

     

     

    2、告訴編譯器去哪里找

    以下情況是告訴編譯器去哪兒找的原因:

      ** 不希望將自己的模塊填滿python解釋器的目錄

      ** 沒有在python解釋器目錄中存儲文件的權限

      ** 想將模塊放到其它位置

    編輯sys.path ,前面就已經使用了

    >>> import sys >>> sys.path.append('c:/python')

    但更優雅的做法是配置pythonpath環境變量,方法和配置java 環境變量類似。

     

     

    文檔

    模塊信息的自然來源是文檔,除了通過python書籍或標準python文檔來查看某個函數的含義,也可以通過下面方式: 

    復制代碼
    >>> print range.__doc__ range([start,] stop[, step]) -> list of integers  Return a list containing an arithmetic progression of integers. range(i, j) returns [i, i+1, i+2, ..., j-1]; start (!) defaults to 0. When step is given, it specifies the increment (or decrement). For example, range(4) returns [0, 1, 2, 3].  The end point is omitted! These are exactly the valid indices for a list of 4 elements.
    復制代碼

    這樣就獲得了關于range函數的精確描述。

     

     

    time 模塊

    time模塊所包括的函數能夠實現 以下功能:獲得當前時間,操作時間和日期,從字符串讀取時間以及格式化時間為字符串。

    time模塊中重要的函數

     

     time.asctime將當前時間格式化為字符串:

    >>> time.asctime() 'Thu May 16 00:00:08 2013'

     

     

     

    random模塊

    random模塊包括返回隨機的函數,可以用于模擬或者用于任何產生隨機輸出的程序。

    random模塊中的一些重要函數:

     

     

    下面介紹使用random模塊的例子,還需要用到time模塊中的函數。

    例1:首先獲得代表時間間隔(2013年)限制的實數,這可以通過時間元組的方式來表示日期(使用 -1表示一周的某天,一年中某天和夏令時,以例讓python自己計算),并且對這些元組調用mktime 

    復制代碼
    from random import * from time import * data1 = (2013 ,1,1,0,0,0,-1,-1,-1) time1 = mktime(data1) data2 = (2014 ,1,1,0,0,0,-1,-1,-1) time2 = mktime(data2)  #然后在這個范圍內生成隨機數 >>> random_time = uniform(time1,time2) # 可以將數字轉換成易讀的日期形式 >>> print asctime(localtime(random_time)) Fri Jan 18 18:23:16 2013
    復制代碼

     

    例2:下面一個例子,假設三個人打牌,首先要保證54張牌沒有重復的,第人發手里18張(斗地主就不能平均分配了)。

    復制代碼
    >>> values = range(1,13) + 'dwang xwang'.split()  #定義13個數字與大小王 >>> suits = 'hei hong mei fang '.split()           # 定義牌的四種類型(黑、紅、梅、方) >>> deck = ['%s of %s' %(v ,s ) for v in values for s in suits]  #循環嵌套將其循環組合 >>> from pprint import pprint   #調用pprint 模塊 >>> pprint (deck [:18])         #輸出18張牌 ['1 of hei',  '1 of hong',  '1 of mei',  '1 of fang',  '2 of hei',  '2 of hong',  '2 of mei',  '2 of fang',  '3 of hei',  '3 of hong',  '3 of mei',  '3 of fang',  '4 of hei',  '4 of hong',  '4 of mei',  '4 of fang',  '5 of hei',  '5 of hong'] 

    #顯然上面的輸出太整齊,調用隨機函數,隨機一點 >>> from random import shuffle >>> shuffle(deck) >>> pprint(deck[:18]) ['5 of fang', '6 of hong', '5 of mei', 'dwang of fang', 'xwang of fang', '10 of hong', '7 of mei', '12 of hong', '6 of hei', '12 of hei', '7 of hei', '8 of hei', '4 of fang', 'dwang of hei', '11 of hei', '12 of fang', '5 of hei', '2 of hong']
    復制代碼

    不過,依然是有問題的,大小王不應該分類型(黑、紅、梅、方),顯然上面的結果不夠完美。

     

    posted on 2014-02-18 14:01 順其自然EVO 閱讀(191) 評論(0)  編輯  收藏 所屬分類: python

    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導航

    統計

    常用鏈接

    留言簿(55)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    最新評論

    閱讀排行榜

    評論排行榜

    主站蜘蛛池模板: 一级做a免费视频观看网站| 亚洲福利在线观看| 看亚洲a级一级毛片| 97无码免费人妻超级碰碰夜夜| 亚洲一卡2卡4卡5卡6卡残暴在线| 亚洲成年人免费网站| 亚洲的天堂av无码| 野花高清在线观看免费3中文| 亚洲国产精品成人精品小说| ww在线观视频免费观看| 亚洲精品美女久久久久| 免费h片在线观看网址最新| 亚洲在成人网在线看| 四虎永久在线观看免费网站网址 | 又爽又高潮的BB视频免费看| 亚洲av色香蕉一区二区三区| 在线观看免费精品国产| 青青青视频免费观看| 亚洲女初尝黑人巨高清| 久久精品人成免费| 亚洲一区二区三区高清在线观看| 成年女人永久免费观看片| 理论秋霞在线看免费| 亚洲无线码在线一区观看| 在线免费观看亚洲| 亚洲色大网站WWW永久网站| 国产精品免费_区二区三区观看| 在线播放国产不卡免费视频 | 亚欧色视频在线观看免费| 亚洲久悠悠色悠在线播放| 成人伊人亚洲人综合网站222| 国产大片免费天天看| 亚洲日本香蕉视频观看视频| 日韩电影免费在线| 男人天堂免费视频| 亚洲成A人片在线播放器| 亚洲一区视频在线播放| 亚洲免费在线视频观看| jzzijzzij在线观看亚洲熟妇| 亚洲AV中文无码乱人伦下载| 国产一精品一AV一免费孕妇|