1. 程式人生 > >python語法(五)—函式

python語法(五)—函式

  前面幾天學習了python的基礎語法,判斷,迴圈,以及檔案操作等等內容,對python也是有了一個認識。今天開始學習python的函式和模組。

函式

  • 函式是什麼?
    我的理解就是,他和java中的方法是一樣的,表示的是一個動作,將程式的一段邏輯單獨抽象出來,在其他需要的地方可以直接進行呼叫,而不是重複的寫邏輯,即讓程式變的乾淨整潔,也可以節約更多的時間與空間。
  • 函式建立
    函式是使用def語句進行建立,基本語法如下:
def functionName(arg):
    "functionExplain"
    functionContent
    return functionReturn ;
 

  函式由def去定義,然後加上函式名,加上引數(括號中的,可有,可無),在加上方法說明(相當於方法的註釋),方法內容(函式所要表達的動作),最後還有函式返回,當然,如果這個函式沒有返回則可以直接不寫。
  我們看下面例子:

# -*- coding=utf-8 -*-
'''
Created on 2019年1月1日
函式

@author: Administrator
'''
def printTest (num = 1) :
    print("*" * num);
 

我們如果只這樣寫一個函式,直接run的時候發現,其實沒有任何的東西打印出來,因為這裡只是定義了函式,要想讓函式執行,我們必須呼叫函式才可以。

# -*- coding=utf-8 -*-
'''
Created on 2019年1月1日
函式

@author: Administrator
'''
def printTest (num = 1) :
    print("*" * num);

printTest(5);
 

這樣才會後5個“*”號打印出來。
如果我們需要一個函式執行之後,想得到執行後的結果,那麼我們可以在最後加上return語句

def printTest (num = 1) :
    print("*" * num);
    return "seccess";
str = printTest(5);
print(str);
 

這樣,當我們輸出str的值的時候就可以得到“seccess”,當然,如果我們函式沒有return語句,則預設返回None。
下面我們將之前寫過的一個根據使用者輸入的數生成斐波那契數列的例子用一個函式去表示:

# -*- coding=utf-8 -*-
'''
Created on 2019年1月1日
函式

@author: Administrator
'''

def fibonacci (num=2) :
    "生成長度為num的斐波那契數列"
    num = num - 2;
    fid = [0, 1];
    if num < 0 :
        print("請輸入大於2的數字:");
        return;

    for i in range(num) :
        fid.append(fid[-1] + fid[-2]);
    else :
        return fid;

num = int(input("請輸入一個大於2的數字:"));
fid = fibonacci(num);
print(fid);
 
  • 形式引數
    上面例子中,我在定義fibonacci函式時在括號中寫了一個num=2,其中這裡的num表示形式引數,簡稱形參,它寫在函式名的後面的括號中,因為他不是實際存在的引數,所以叫做形參,也 被叫做虛擬引數。
  • 實際引數
    實際引數就是在實際呼叫函式時傳入的引數,它是實際存在的。
    我在下面呼叫fibonacci函式時,將使用者輸入的數字作為實參傳給了 fibonacci 函式。而且在上面例子中,我預設num等於2,如果在呼叫這個函式時,不傳入實參,則num預設實參為2.
  • 傳遞引數
    呼叫函式時,實參的個數需要和形參的個數一致,並且將實參依次傳遞給形參。
  • 位置引數
    與shell指令碼一樣,python指令碼也可以將位置引數傳入模組中,其中可以使用sys模組的argv列表進行接收。
#!/usr/bin/env python
import sys;
print sys.argv;
 

  上述例子由於要直接執行python指令碼,所以就不在ide中執行,我直接開啟我的雲,在雲上寫的一個簡單的小例子,下面是我執行兩次的結果:

[[email protected] python]# ./hello.py 
['./hello.py']
[[email protected] python]# ./hello.py hello word
['./hello.py', 'hello', 'word']
 

  第一次沒有傳任何引數,所以argv陣列中就只有1個元素,第二次執行,傳了2個引數,所以argv陣列中則有3個引數。需要注意的是,這裡傳入的引數都是字串型別的。

 

 

 

-------------------- END ---------------------

 

 

 

最後附上作者的微信公眾號地址和部落格地址 

 

 

 

公眾號:wuyouxin_gzh

 

 

 

 

 

 

 

 

 

 

Herrt灬凌夜:https://www.cnblogs.com/wuyx/