Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Dekoratoren verstehen

Python-Dekoratoren verstehen

零到壹度
零到壹度Original
2018-04-16 11:53:271214Durchsuche

Der Inhalt dieses Artikels befasst sich mit dem Verständnis von Python-Dekoratoren, das jetzt mit allen geteilt werden kann. Freunde in Not können sich darauf beziehen

Kern: Funktionen sind „Variablen“

Definition: Das Wesentliche ist eine Funktion, die darin besteht, anderen Funktionen zusätzliche Funktionen hinzuzufügenPrinzip:
1. Ändern Sie nicht den Quellcode des Originals Funktion


2. Ändern Sie nicht die Aufrufmethode der ursprünglichen Funktion

Funktion höherer Ordnung + verschachtelte Funktion => Decorator

#### 第一波 ####
def foo():
    print 'foo'
 
foo     #表示是函数
foo()   #表示执行foo函数
 
#### 第二波 ####
def foo():
    print 'foo'
 
foo = lambda x: x + 1
 
foo()   # 执行下面的lambda表达式,而不再是原来的foo函数,因为函数 foo 被重新定义了

2. Die Nachfrage kommt

Das Startup-Unternehmen verfügt über N Geschäftsabteilungen und 1 Basisplattformabteilung Die Basisplattform ist für die Bereitstellung der zugrunde liegenden Funktionen verantwortlich, z. B. Datenbankoperationen, Redis-Aufrufe, Überwachungs-API und andere Funktionen. Wenn Geschäftsabteilungen Basisfunktionen nutzen, müssen sie nur die von der Basisplattform bereitgestellten Funktionen aufrufen. Wie folgt:

############### 基础平台提供的功能如下 ###############
 
def f1():
    print 'f1'
 
def f2():
    print 'f2'
 
def f3():
    print 'f3'
 
def f4():
    print 'f4'
 
############### 业务部门A 调用基础平台提供的功能 ###############
 
f1()
f2()
f3()
f4()
 
############### 业务部门B 调用基础平台提供的功能 ###############
 
f1()
f2()
f3()
f4()


Derzeit geht das Unternehmen ordnungsgemäß vor. Allerdings haben die Entwickler der Basisplattform in der Vergangenheit nicht auf die Verifizierung geachtet Probleme beim Schreiben von Code, nämlich: Basisplattform Die bereitgestellte Funktionalität kann von jedem genutzt werden. Jetzt ist es notwendig, alle Funktionen der Basisplattform zu rekonstruieren und einen Überprüfungsmechanismus für alle von der Plattform bereitgestellten Funktionen hinzuzufügen, dh vor der Ausführung der Funktion zu überprüfen.

Der Chef gibt den Job an Low B, das macht er:


1

跟每个业务部门交涉,每个业务部门自己写代码,调用基础平台的功能之前先验证。诶,这样一来基础平台就不需要做任何修改了。


当天Low B 被开除了...

老大把工作交给 Low BB,他是这么做的:


1

1


只对基础平台的代码进行重构,让N业务部门无需做任何修改

Python 面向对象 对象 redis 数据库 重构

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn