[Python] AoP python

Aspect-Oriented Python

Aspect-Oriented Programming

Aspect-oriented Programming

一種程式設計的典範。各子程式模組以完成一特定目的為主。整個程式以各個有特定目標的子模組所組成。

Functional Programming
  • 整個程式由許多函式組成

  • 純函數程式沒有變數和副作用(side effect,指改變外部的狀態,例:全域變數)

  • 常使用遞迴,lambda運算

  • Ex: Haskell, LISP, Erlang, Clean

Generic programming
  • 泛型是程式語言的一種特性。允許程式設計師在強類型程式語言中編寫代碼時定義一些可變部份,那些部份在使用前必須作出指明。各種程式語言和其編譯器、運行環境對泛型的支持均不一樣。

在Python,你可以用兩個方法來達到AOP,

  • Decorators 用’@’這個修飾語法在函式前面,只能在py 2.4,2.5 在py 2.6, 3.0的話,還可以用在fuction,methond,class前面

  • Context manager ‘with’ keyword

Decorators

What is Decorators?

是一種可以被呼叫的物件(函式、方法、物件),它們可以接受函式物件的輸入,並且回傳函式物件。它們在函式物件被定義的時候被呼叫,所以它們可以對此函式:註解、取代、修飾(warp),通常是修飾。

本式

@dec2

@dec1

def func(arg1, arg2, …):

    pass

和這些敘述同等效果

def func(arg1, arg2, …):

    pass

func = dec2(dec1(func))

Context manager

Old way:

 input = open('exmaple.txt')<br /> do_something(input)<br /> input.close()<br />
New way

with open(‘example.txt’) as example:

    for line in example:

        do_something()

with 敘述可以用在所有 file-like的物件上。

Reference

  1. Aspect-Oriented Python<http://livingcode.org/2009/aspect-oriented-python>

廣告

,

  1. 發表留言

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s

%d 位部落客按了讚: