Die Python-Basis mit Teilfunktion eingerichtet

Zuerst Dekorateur

1.1 Übersicht

Eine dynamische Hinzufügen des Codes während des Betriebsmodus, der „Decorator“ (der Decorator) genannt

Decorator ist eigentlich ein Verschluss, dann gibt die Funktion eine Funktion als Ersatz-Version der Funktion, ist im Wesentlichen eine Funktion, dass die Renditen Funktionen höherer Ordnung

1.2 einfacher Dekorateur

Die Funktion kann auch ein Objekt sein, und die Objektfunktion können Variablen zugewiesen werden, so dass von Variablen können die Funktion auch aufrufen

def now():
    ptint("2018-3-18")

f = now
f()

Es gibt eine Funktion Objekt _NAME_ Eigenschaft können Sie den Namen der Funktion erhalten:

def now():
    print("2018-4-3")

f = now
f()
print(now.__name__)
print(f.__name__)
#结果
'now'
'now'

Jetzt müssen wir die Funktion now () Funktionen, wie zum Beispiel das Drucken für eine Weile verbessern, bevor die Funktion Trennzeichen aufgerufen wird.

def log(func):
    def wrapper():
        print("**********")
        return func()
    return wrapper

def now():
    print("2018-3-18")

#装饰器的调用
f = log(now)
f()
1.3 kompliziert Dekorateure

Voraussetzungen: Geben Sie das Alter, und drucken Sie es aus

def getAge(age):
    print("Tom age is %d"%age)
getAge(10)

#调用getAge方法得到年龄,但是如果输入的是负数就会得到不符合常理的结果
getAge(-10)

def wrapper(func):
    def inner(num):
        if num < 0:
            num = 0
        return func(num)
    return inner
newGetAge = wrapper(getAge)
newGetAge(-10)

Auf diese Weise wird unser Code einfacher, logische Grenze Kontrollen in separate Prozesse isoliert und das Anwendungspaket durch Dekorateure Ausführungsform, wo wir geprüft werden müssen.

Eine weitere Aufgabe der Art und Weise durch den Beginn der Berechnungsmethode und der Methodenaufruf zurückkehrt, bevor der Grenzwert für den gleichen Zweck überprüft wird, ist aber nicht negiert, der Dekorateur ermöglicht es uns, die geringste Menge an Codes Koordinaten Grenzen Prüfung zu erreichen .

1.4 decorator @ Identifikator

Verwendung @ Identifikator wird auf die Dekorfunktion angewendet

python2.4 und über Unterstützung der Verwendung von Identifikatoren @ dekorativen Anwendungen auf der Funktion, kurz vor der Definition von Funktionen durch den @ Namen und Dekorateure erforderlich

def logger(func):
    def inner(*args,**kwargs):
        print("***********")
        return func(*args, **kwargs)
    return inner

@logger
def myPrint():
    print("you are very good")

myPrint()

Hinweis: Zum Beispiel in dem eigentlichen Entwicklungsprozess des Unternehmens, wenn es jemand anderes, eine Funktion zu schreiben, dass Sie bestimmen Funktionen hinzufügen oder ändern mögen, die bestimmte Funktionen, während andere Sie benötigen nicht willkürlich die Funktion des anderen zu verändern, zu dieser Zeit, können Sie mit Dekorateur, ohne den Quellcode anderer Menschen zu modifizieren können auch eigene Funktionen hinzuzufügen.

Zweitens ist die Teilfunktion

Das Python functools Modul bietet viele nützliche Funktionen, von denen eine der Teilfunktion (Partial-Funktion).

Einfach ausgedrückt Teilfunktion der Rolle ist es, einige Parameter an die Funktion von festen setzen (die den Standardwert festgelegt ist), eine neue Funktion zurückgibt, wird diese neue Funktion aufrufen einfacher sein.

#functools 模块
import functools
#int()函数将字符串转换为整数,默认按十进制转换
#可以设置进制
print(int("100",base = 2))
#结果为4,100是二进制中4的表示

#类似于偏函数的功能
def int2(str, base=2):
    return int(str, base)
print(int2("10"))

#functools.partical可以帮助创建偏函数,不用自己定义int2函数
#作用:把一个函数的某些参数给固定住(也就是设置默认值),返回一个新的函数,调用这个新的函数会更简单。
int3 = functools.partial(int, base=2)
print(int3("100"))
#在创建偏函数的时候,实际上固定了关键字参数base
#结果
4

Beispiel 2

import functools
max2 = functools.partical(max, 10)
#实际上会把10作为*args的一部分自动加到左边
max2(5, 6, 7)
相当于
args =(10, 5, 6, 7)
max(args)

Übung:

Design der Zugabe einer Teilfunktion, add () verwendet, wenn die Betreiber Bedürfnisse Importmodul erfordert Teilfunktion die Funktion ist, finden eine beliebige Anzahl von 100 und hinzugefügt.

Drei variable Umfang

3.1 Übersicht

Laufendes Programm in Python, erstellen, ändert Zeit die Variablennamen, Variablennamen zu finden sind in einem Raum gespeichert, die wir den Namespace nennen, die auch als Rahmen bekannt.

Vereinfacht ausgedrückt, bezieht sich variable Umfang auf den Bereich von Variablen, die verwendet werden können,

Variablen nicht das Programm an einem beliebigen Ort zugreifen kann, hängt davon ab, den Zugang in dem das Variable zugeordnet ist.

3.2 Umfang der Teilung

L (local) lokaler Bereich

Lokale Variablen: def Schlüsselwort in einem Block von Anweisungen enthalten, wie in der Definition der Variablen, die in der Funktion definiert ist, wird jedes Mal die Funktion aufgerufen erstellt einen neuen lokalen Bereich.

Hinweis: Wenn Sie globale Variablen innerhalb einer Funktion zuweisen müssen, erklärt die Variable als globale Variablen innerhalb der Funktion durch die globale Aussage

E (einschließende) Verschachtelungsebenen

Auch bekannt Funktionsumfang, die äußere Verschlussfunktion in der Funktion

G (global) globale Reichweite

Variablen in der Modulebene definiert ist, ist jedes Modul ein globaler Bereich

Hinweis: Der Umfang des globalen Geltungsbereich wird in einem einzigen Dateimodul begrenzt

B (eingebaut) gebaut Umfang

Befestigung des Moduls innerhalb des Systems definierten Variablen, wie beispielsweise innerhalb eines vordefinierten eingebauten Moduls.

#查看所有的内置变量
print(vars())
3.3 Variable Namensauflösung LEGB Gesetz

Priorität Suche Variablennamen: lokale Variable> verschachtelte Tive> global scope> Built-Scope

LEGB Regel :

Wenn Sie einen Variablennamen in unbestimmter Funktion verwendet, wird Python von vier Such folgt Scopes nach Priorität und so die Bedeutung der Variablennamen zu bestimmen.

Zunächst suchen lokalen Bereich (L), die durch die verschachtelten Bereiche gefolgt def oder Lambda-Funktionen in einer verschachtelten Struktur Schicht (E), die von globalem Bereich (G) gefolgt und schließlich gebaut Bereiche (B) .

Nach diesem Prinzip zu finden, fand in erster Linie an der Haltestelle, und wenn keine gefunden werden, Nameerror Fehler treten auf

def func():
    var = 300
    print("var",var)
var = 100
func()
print("var", var)
#结果
300
100
3.4 Schlüsselwort global
#声明全局变量
global var

var = 200
def func():
    # var = 200
    print("var_", var)
    def fun():
        var = 100
        print("var", var)
    fun()
func()

Hinweis: Python nur Modul (Module1), Klasse (Klasse) und eine Funktion (def, lambda), bevor Sie einen neuen Bereichs, der anderen Codeblöcke Einführung wie if / else, versuchen Sie / ausgenommen, für / while wie nicht die Einführung neuer Rahmen, dass variable Definitionen dieser Aussagen können auch extern genutzt werden.

if 1:
    num = 10
print(num)
Veröffentlicht 31 Originalarbeiten · erntete Lob 4 · Aufrufe 3518

Ich denke du magst

Origin blog.csdn.net/qq_29074261/article/details/80016724
Empfohlen
Rangfolge