程式設計正規化總結

2021-10-10 19:18:23 字數 3519 閱讀 2292

什麼是物件導向程式設計?

object oriented programming(oop)

​ 把物件作為基本單元,把物件抽象成類(class),包含成員和方法

​ 資料封裝、繼承、多型

​ python中使用類來實現。過程式程式設計(函式),oop(類)

類變數和例項變數的區別

區分類變數和例項變數

​ 類變數由所有例項共享

​ 例項變數由例項單獨享有,不同例項之間不影響

​ 當我們需要在乙個類的不同例項之間共享變數的時候使用類變數

classmethod/staticmethod區別

classmethod vs staticmethod

​ 都可以通過class.method()的方式使用

​ classmethod第乙個引數是cls,可以引用類變數

​ staticmethod使用起來和普通函式一樣,只不過放在類裡去組織

什麼是元類?使用場景

元類(meta class)是建立類的類

​ 元類允許我們控制類的生成,比如修改類的屬性等

​ 使用type來定義元類

​ 元類最常見的乙個使用場景就是orm框架

什麼是裝飾器

decorator

​ python中一切皆物件,函式也可以當做引數傳遞

​ 裝飾器是接受函式作為引數,新增功能後返回乙個新函式的函式(類)

​ python中通過@使用裝飾器

import time

deflog_time

(func)

:def

_log

(*args,

**kargs)

: beg = time.time(

) res = func(

*args,

**kargs)

print

('use time:{}'

.format

(time.time(

)- beg)

)return res

return _log

@log_time # @裝飾器語法糖

defmysleep()

: time.sleep(1)

if __name__ ==

'__main__'

: mysleep(

)# 去除@log_time

# newsleep = log_time(mysleep)

# newsleep()

import time

class

logtime()

:def

__call__

(self, func)

:def

_log

(*args,

**kargs)

: beg = time.time(

) res = func(

*args,

**kargs)

print

('use time:{}'

.format

(time.time(

)- beg)

)return res

return _log

@logtime(

)def

mysleep()

: time.sleep(1)

if __name__ ==

'__main__'

: mysleep(

)

import time

class

logtime()

:def

__init__

(self, use_int=

false):

self.use_int = use_int

def__call__

(self, func)

:def

_log

(*args,

**kargs)

: beg = time.time(

) res = func(

*args,

**kargs)

if self.use_int:

print

('use time:{}'

.format

(int

(time.time(

)- beg)))

else

:print

('use time:{}'

.format

(time.time(

)- beg)

)return res

return _log

@logtime(use_int=

true

)def

mysleep()

: time.sleep(1)

if __name__ ==

'__main__'

: mysleep(

)

設計模式

檢視設計模式總結文章

函式式程式設計

python支援部分函式式程式設計特性

​ 把電腦的運算視作數學上的函式計算(lambda演算)

​ 高階函式: map/reduce/filter

​ 無***,相同的引數呼叫始終產生同樣的結果

什麼是閉包?

closure

​ 繫結了外部作用域的變數的函式

​ 即使程式離開外部作用域,如果閉包仍然可見,繫結變數不會銷毀

​ 每次執行外部函式都會重新建立閉包

​ 閉包:引用了外部自由變數的函式

​ 自由變數:不在當前函式定義的變數

​ 特性:自由變數會和閉包函式同時存在

from functools import wraps

defcache

(func)

: store =

@wraps(func)

def_

(n):

if n in store:

print

(store[n]

)return store[n]

else

: res = func(n)

store[n]

= res

return res

return _

@cache

deff

(n):

# 斐波那契數列

if n ==0:

return

0if n ==1:

return

1return f(n -1)

+ f(n -2)

if __name__ ==

'__main__'

:print

(f(7

))

程式設計正規化21

double all 123 4 246 8 incr all 123 4 234 5 define double x x2 define incr x 1 map double 1 2 3 4 24 68 eval這個過程的用法,利用它可以實現用scheme語言本身來解釋scheme表示式的功能,...

程式設計正規化概述

程式設計正規化這個名詞聽起來好像比較高深,但是其實本質上是它是對於程式設計風格,或者設計思路的抽象。它並不是跟程式語言是一一繫結的關係,有些程式語言python 天生可以支援多種程式設計正規化。從程式設計根本思維上的差異上區分,目前主要分成兩種 命令式 指令式 程式設計 和宣告式程式設計 命令式程式...

程式設計正規化 程式設計的本質

程式設計正規化的種類 很多人認同的兩個觀點 程式 資料結構 演算法 這個表示式認為,如果資料結構設計得好,演算法也會變得簡單,而且乙個好的通用的演算法應該可以用在不同的資料結構上。演算法 控制 業務邏輯 這個表示式則想表達的是資料結構不複雜,複雜的是演算法,演算法由兩個邏輯組成,乙個是真正的業務邏輯...