發表文章

目前顯示的是 11月, 2017的文章

[Python] ctype 的型態小記

ctype的形式可參考 官網 ctypes type C type Python type c_bool _Bool bool (1) c_char char 1-character string c_wchar wchar_t 1-character unicode string c_byte char int/long c_ubyte unsigned   char int/long c_short short int/long c_ushort unsigned   short int/long c_int int int/long c_uint unsigned   int int/long c_long long int/long c_ulong unsigned   long int/long c_longlong __int64  or  long   long int/long c_ulonglong unsigned   __int64  or  unsigned   long   long int/long c_float float float c_double double float c_longdouble long   double float c_char_p char   *  (NUL terminated) string or  None c_wchar_p wchar_t   *  (NUL terminated) unicode or  None c_void_p void   * int/long or  None 上圖引用自官網 另外標示,如果使用uint_32t等等型態,可利用c_uint32 如果是char的陣列,則可以直接利用char*字串長度 而結構(Struct)的建構則為: from ctype import * class Structex(Structure): _fields_ = [ ('name', c_char *10), #= c , char[10] ('age', c_int) #= c , int ] 利用_fields_和上表可以

[Python] 觀念小記

可變、不可變 參數分為可變、不可變兩種型態,不可變的有int,float,string ex: str = 'abc'  , str[1] = 'a' , str[1] = 'd' -> error 不可 原因: Python變數使用參照方式,不可變形態中都是單一參照,不能對單獨內容改變 自訂義函式 定義中可以設定default值,但有設定的需在未設定的後面 ex: def add(a , b=0) -> ok  ,  def add (a = 1 ,b) -> error 輟星運算式 * , **  對函式輸入執行拆解 *拆解list , ** 拆解dictionary ex: def add(*arg) -> add(1,2,3)  -> 輸入arg 為list -> arg=[1,2,3] 閉包和裝飾器 Python中 函式可以利用函式為輸入,在函式內有函式 又稱為閉包 利用此特性建立裝飾器 @ 閉包 ex: def add(num1): def add2(num2): return num1+num2 return add2 利用gen_power(2)(3) 分別當成輸入 num1 和 num2 ,輸出為5 可以看出來num1會傳遞至下一層def中 藉此方法修飾函式,製作成裝飾器 ex: 想製作一個通用的輸出decorator def print_func(title): def decorator(func): def modified_func(*args,**kwards): result =func(*args,**kwards) print title , result return modified_func return decorator @print_func(title='result:') def add(*lst): return sum(lst) 執行 add(1,2,3) 輸出 result: 6 decorator的執行流程 print_func -> d