2016.3.30python函數

函數

Python不但能非常靈活地定義函數,而且本身內置了很多有用的函數,可以直接調用。而函數是我們抽象出來的,藉助抽象,我們才能不關心底層的具體計算過程,而直接在更高的層次上思考問題。寫計算機程序也是一樣,函數就是最基本的一種代碼抽象的方式。

調用函數

要調用一個函數,需要知道函數的名稱和參數,比如求絕對值的函數abs,只有一個參數。可以直接從Python的官方網站查看文檔:http://docs.python.org/3/library/functions.html#abs。也可以在交互式命令行通過help(abs)查看abs函數的幫助信息。調用函數的時候,如果傳入的參數數量不對,會報TypeError的錯誤,並且Python會明確地告訴你問題出在了哪裏。如果傳入的參數數量是對的,但參數類型不能被函數所接受,也會報TypeError的錯誤,並且給出錯誤信息:str是錯誤的參數類型。Python中有很多函數,可以在官方文檔中調閱。另外,Python內置的常用函數還包括數據類型轉換函數,比如int()函數可以把其他數據類型轉換爲整數。而且,函數名其實就是指向一個函數對象的引用,完全可以把函數名賦給一個變量,相當於給這個函數起了一個“別名”:

>>> a = abs # 變量a指向abs函數
>>> a(-1) # 所以也可以通過a調用abs函數
1

我的作業是利用Python內置的hex()函數把一個整數轉換成十六進制表示的字符串,交作業如下

a=int(input('請輸入一個整數:'))print('它的十六進制數爲:',hex(a))

運行正確。

可是這個只能運行一次,如何只運行一次就輸出多個十六進制數呢?

while True:
    number = input('請輸入數字...');
    print(hex(int(number)));


定義函數

在Python中,定義一個函數要使用def語句,依次寫出函數名、括號、括號中的參數和冒號:,然後,在縮進塊中編寫函數體,函數的返回值用return語句返回。我們以自定義一個求絕對值的my_abs函數爲例:

def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x

注意,函數體內部的語句在執行時,一旦執行到return時,函數就執行完畢,並將結果返回。因此,函數內部通過條件判斷和循環可以實現非常複雜的邏輯。如果沒有return語句,函數執行完畢後也會返回結果,只是結果爲None。return None可以簡寫爲return。在Python交互環境中定義函數時,注意Python會出現...的提示。函數定義結束後需要按兩次回車重新回到>>>提示符下。

如果把my_abs()的函數定義保存爲abstest.py文件了,那麼,可以在該文件的當前目錄下啓動Python解釋器,用from abstest import my_abs來導入my_abs()函數,注意abstest是文件名(不含.py擴展名)


空函數

空函數什麼事也不做,想定義它,可以使用pass語句。

def nop():
    pass

實際上pass可以用來作爲佔位符,比如現在還沒想好怎麼寫函數的代碼,就可以先放一個pass,讓代碼能跑起來。

pass還可以用在其他語句裏,比如:

if age >= 18:
    pass

缺少了pass,代碼運行就會有語法錯誤。




發佈了20 篇原創文章 · 獲贊 3 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章