python函式模組

學習完本篇,你將會深入掌握

  • 函式相關知識

    1.函式定義

    2.函式如何呼叫

    3.遞迴函式以及匿名函式使用
  • 模組相關知識

    1.模組如何匯入呼叫

    2.函式呼叫順序

函式定義

  • 函式程式碼塊以 def 關鍵詞開頭,後接函式識別符號名稱和圓括號()。
  • 任何傳入引數和自變數必須放在圓括號中間。圓括號之間可以用於定義引數。
  • 函式的第一行語句可以選擇性地使用文件字串—用於存放函式說明。
  • 函式內容以冒號起始,並且縮排。
  • return [表示式] 結束函式,選擇性地返回一個值給呼叫方。不帶表示式的return相當於返回 None。

函式語法

  • Python函式語法跟java以及C類似
語法:
def functionname( parameters ):
"函式_文件字串"
function_suite
return [expression]
例項:
def printme( str ):
"列印傳入的字串到標準顯示裝置上
“ print str”
return

引數傳遞

  • 定義一個函式,給出函式包含的引數以及程式碼塊結構。函式的基本結構給出後,就可以直接呼叫
#!/usr/bin/python
#-*- coding: UTF-8 -*-
#定義一個函式
def add(num1,num2):
return num1+num2 If __name__ == “__main__”
var_1 = 50
var_2 = 60
print add(50,60)
  • Python中型別屬於物件,變數沒有型別

不可變型別 類似 c++ 的值傳遞,如 整數、字串、元組。如fun(a),傳遞的只是a的值,沒有影響a物件本身。比如在 fun(a)內部修改 a 的值,只是修改另一個複製的物件,不會影響 a 本身。
可變型別 類似 c++ 的引用傳遞,如 列表,字典。如 fun(la),則是將 la 真正的傳過去,修改後fun外部的la也會受影響

引數型別

  • Python函式引數有四個引數型別,分別為

    1、必備引數

    2、關鍵字引數

    3、預設引數

    4、不定長引數
  • 必備引數:必備引數須以正確的順序傳入函式,呼叫時的數量必須和宣告時的一樣。
#!/usr/bin/python
#-*- coding: UTF-8 -*-
#可寫的函式說明
def printstr(str):
‘’’列印任何引數’’’
print str
return If __name__ == “__main__”
printstr(“hello”)
  • 關鍵字引數:關鍵字引數和函式呼叫關係緊密,函式呼叫使用關鍵字引數來確定傳入的引數值,同時引數傳入的順序可以不一致。
#-*- coding: UTF-8 -*-
#可寫的函式說明
def printinfo(name ,age):
print “name:%s\n age:%d” %(name,age)
return If __name__ == “__main__”:
printinfo (age = 50,name = ‘zhangmou’)
  • 預設引數:呼叫函式時,預設引數的值如果沒有傳入,則被認為是預設值。
#-*- coding: UTF-8 -*-
#可寫的函式說明
def printinfo(name ,age = 10):
print “name:%s\n age:%d” %(name,age)
return If __name__ == “__main__”
printinfo (age = 50,name = ‘zhangmou’)
printinfo (name= ‘limou’)
printinfo(‘limou’)
  • 不定長引數:一個函式能處理比當初宣告時更多的引數。這些引數叫做不定長引數
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 可寫函式說明
def printinfo( arg1, *vartuple ):
print "輸出: "
print arg1 for var in vartuple:
print var return; If __name__ == “__main__”
printinfo( 10 );
printinfo( 70, 60, 50 );

匿名函式

  • Python用lambda建立匿名函式
  • Lambda的是一個表示式,而不是一個程式碼塊,lambda有自己的名稱空間
# -*- coding: UTF-8 -*-
# 可寫函式說明
sum = lambda arg1, arg2: arg1 + arg2;
If __name__ == “__main__”
# 呼叫sum函式 print "相加後的值為 : ",
sum( 10, 20 )
print "相加後的值為 : ", sum( 20, 20 )

Return語句

  • Return語句[表示式]退出函式,不帶引數的return語句返回None。
# -*- coding: UTF-8 -*-
def sum(arg1,arg2)
reurn arg1+arg2
If __name__ == “__main__”
# 呼叫sum函式 print "相加後的值為 : ",
Total = sum(1,2)
print "相加後的值為 : ", Total

變數作用域

  • 一個程式的所有的變數並不是在哪個位置都可以訪問的。訪問許可權決定於這個變數是在哪裡賦值的。
  • 變數的作用域決定了在哪一部分程式你可以訪問哪個特定的變數名稱。兩種最基本的變數作用域如下:

    1.全域性變數

    2.區域性變數
  • 定義在函式內部的變數稱為區域性變數
  • 定義在函式外部的變數稱為全部變數

# -*- coding: UTF-8 -*-
total = 0;#這是一個全域性變數
Def sum(arg1,arg2):
total = arg1 + arg2;#這是一個區域性變數
print “區域性變數total:%d” %total
return toal If __name__ == “__main__”
# 呼叫sum函式 print "相加後的值為 : ",
Sum(1,30)
print “全部變數total: ", total

Python模組

  • Python模組是一個python檔案,以py結尾的。模組能讓你更有邏輯的組織你的python程式碼段。
Calc.py模組:

def   sum(arg1,arg2)
return arg1+arg2 def min(arg1,arg2)
return arg1-arg2

匯入模組

  • Python匯入模組有很多方式:

    1.import Modules

    2.from modules import fun

    3.from…import *

模組載入

  • 當你匯入一個模組,python直譯器對模組位置的搜尋順序是:

    1.當前目錄

    2.如果不在當前目錄,Python 則搜尋在 shell 變數 PYTHONPATH 下的每個目錄。

    3.如果都找不到,Python會察看預設路徑。UNIX下,預設路徑一般為/usr/local/lib/python/。

    4.模組搜尋路徑儲存在 system 模組的 sys.path 變數中。變數裡包含當前目錄,PYTHONPATH和由安裝過程決定的預設目錄。

模組函式

  • Python有相應的模組函式獲取模組資訊

    | 函式 | 描述 |

    | ------------ | ------------ |

    | dir() | 返回的列表容納了在一個模組裡定義的所有模組,變數和函式。 |

    | globals() | 返回的是所有在該函式裡能訪問的全域性名字。 |

    | reload() | 重新匯入之前模組,頂層模組會重新執行一次。 |

  • 包是一個分層次的檔案目錄結構,它定義了一個由模組及子包,和子包下的子包等組成的 Python 的應用環境。通俗的講,包就是資料夾

  • 建立一個package_runoob包,包中有runoob1.py, runoob2.py, init.py

  • 建立一個package_runoob包,包中有runoob1.py, runoob2.py, init.py package_runoob 同級目錄下建立 test.py 來呼叫 package_runoob 包