12 - 模塊與函數

1.Python 程序的結構

Python程序由package、module和function組成。
package是由一系列模塊組成的集合,module是處理某一類問題的集合。、
package必須至少含有一個 init.py 文件,該文件內容可以爲空,用於標識當前文件夾是一個包。

2.module

  • Python程序由一個個的模塊組成的,一個python文件就是一個模塊。
  • 當python導入一個module時,首先查找當前路徑,然後查找lib目錄、site-packages目錄和環境變量PYTHONPATH設置的目錄。
  • 模塊的導入:
import module_name
from module_name import fuction_name
from module_name import *
  • module的內置屬性
  • _name__ 用於判斷當前模塊是否是程序的入口,如果當前程序正在被使用,那麼其值爲 __main__ ,通常給每個模塊都加上一個條件語句,用於單獨測試該模塊的功能
if __name__ == `__main__`:
    print("module作爲主程序運行")
else:
    print("module供其他程序所調用")
  • __doc__ 文檔字符串,存儲文檔相關描述信息。可以用三引號來定義。

3.自定義包package

package 的作用與Java中的作用是相同的,都是爲了實現程序的重用。
每個package中都必須含有一個 __init__.py 在模塊被 import的時候被調用

如:

__all__ =["module1","module2"]   #記錄當前package所包含的模塊列表,添加了這一行之後就可以用 from module import * 方式導入全部模塊了

if __name__ == "__main__":
    print("作爲主函數運行") 
else:
   print("供其他程序調用")

4.lambda函數

lambda函數用於創建一個匿名函數。使用lambda函數可以返回一些簡單的運算結果。其格式如下:

lambda var1, var2, ... : expression

其中變量用於表達式的計算。通常把lambda賦值給一個變量,變量就可以作爲函數使用。例如:

func = lambda var1, var2, ... : expression
func()    #調用

這樣就把lambda和變量func綁定在一起了,變量func的名字就是函數名

注意:lambda中只能使用表達式,不能使用判斷、循環等多重語句。

5. Generator函數

  • 生成器(Generator)的作用是一次產生一個數據項,並把數據輸出。Generator函數可以用在for循環中。
  • Generator函數的定義與普通函數沒有區別,只要在函數體內使用 yield 生成數據項即可。
  • Generator函數可以被for循環遍歷,而且可以通過next()方法獲得yield生成的數據項。

示例代碼如下:

def func(n):    #Generator函數定義
    for i in range(n):
        yield i

for i in func(5):    #for 循環遍歷
    print(i)

gen = funct(5)
print(gen.next())    #next()獲取下一個元素
print(gen.next())
print(gen.next())

Generator與序列的區別:

  • Genarator一次只返回一個數據項,佔用更少的內存。元素通過next()訪問。每次生成數據都要記錄當前的狀態,便於下一次生成數據。
  • 序列一次返回所有數據,元素通過索引訪問
  • 當程需要較高的性能或者一次只需要一個值進行處理地時候。使用Generator函數。當需要一次性生成所有數據的時候,使用序列
發佈了89 篇原創文章 · 獲贊 80 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章