Beachten Sie die ausführliche Erläuterung der Probleme beim Zuweisen von Funktionen zu Variablen in Python

黄舟
Freigeben: 2017-08-20 10:50:57
Original
2179 Leute haben es durchsucht

Variablenzuweisung ist ein Problem, auf das wir in der täglichen Entwicklung häufig stoßen. Der folgende Artikel führt Sie anhand von Beispielcode vor allem in einige Probleme ein, auf die Sie achten müssen ist detailliert und hat einen gewissen Referenz- und Lernwert für alle Freunde, die es brauchen, können einen Blick darauf werfen.

Vorwort

Dieser Artikel führt Sie hauptsächlich in einige Probleme ein, auf die beim Zuweisen von Funktionen zu Variablen in Python geachtet werden muss Teilen Sie sie mit Ihnen. Referenzstudie, unten gibt es nicht viel zu sagen, werfen wir einen Blick auf die detaillierte Einführung:

Ich habe zwei Formen der Funktionszuweisung zu Variablen gesehen, eine ist


a=f
Nach dem Login kopieren

Das andere ist


a=f()
Nach dem Login kopieren

Es gibt einen Unterschied zwischen diesen beiden Formen .

1. Der Typ a=f ​​verweist auf Variablen.

Überprüfen Sie es mit Code:


>>> f = abs
>>> f(-10)
10
Nach dem Login kopieren

Erklärung, dass die Variable f nun auf die abs-Funktion selbst zeigt. Der direkte Aufruf der Funktion abs() ist genau dasselbe wie der Aufruf der Variablen f(). Dies ist ein Beispiel aus dem Python-Tutorial von Lehrer Liao Xuefeng. Jetzt sind Aufrufe von f() und Aufrufe von abs() gleich.

Ein weiteres Beispiel einer Factory-Funktion:


def maker(N):

  def action(X):

    return X**N

  return action
Nach dem Login kopieren

Der äußere Rückgabewert dieser verschachtelten Funktion ist der innere Funktionsname der Funktion. Beachten Sie, dass es keine Klammern gibt. Es gibt einen großen Unterschied, ob Klammern vorhanden sind oder nicht. Zu diesem Zeitpunkt heißt die externe Funktion:


f=maker(2)
Nach dem Login kopieren

Dann zeigt f, wie oben erwähnt, auf die Aktionsfunktion und die Einschränkungsbedingung ist N = 2, was kann als f verstanden werden N Die Aktionsfunktion, wenn sie gleich 2 ist. Nennen wir es:


>>> f(3)
9
Nach dem Login kopieren

Beweisen Sie, dass f und Aktionsfunktionen gleich sind.

2. Der Typ a=f() gehört hier zum Prozess der Zuweisung des Rückgabewerts von f() zu einem

A empfängt nur den Rückgabewert von f(), wenn f() keinen Rückgabewert hat, dann wird a der Wert None zugewiesen. Bemerkenswert ist hier, dass a=f() während der Ausführung von f() einmal ausgeführt wird, was ich gerade herausgefunden habe, wie zum Beispiel:


>>> def add(x,y):
    z=x+y
    print(z)
>>>a=add(3,4)
7
Nach dem Login kopieren

Obwohl Hier wird nur eine Zuweisungsanweisung ausgeführt, das Ergebnis 7 gibt an, dass die Zuweisungsprozessfunktion add ausgeführt wird. Der Wert von a ist jedoch None und kann nur über die print-Anweisung angezeigt werden. Es wird nicht nur die Zuweisungsprozedurfunktion ausgeführt, sondern auch die darin geschriebene Return-Anweisung.


>>>def log(func):
   def wrapper(*args, **kw):
     print('call %s():' % func.__name__)
     return func(*args, **kw)
   return wrapper
>>>@log
>>>def now():
    print('2015-3-25')
Nach dem Login kopieren

Dies ist die Routine im Dekorationsabschnitt des Python-Tutorials von Lehrer Liao Xuefeng. Zuerst dachte ich, dass die return func(*args,**kw)-Anweisung die Funktion now() zurückgibt. (d. h. func-Funktion) wurde später festgestellt, dass die Now-Funktion keinen Rückgabewert hat, nämlich None. Daher wird diese Anweisung tatsächlich während des Zuweisungsprozesses ausgeführt, dh die Druckanweisung der Funktion Now wird ausgeführt.

In der folgenden Übung besteht eine Variante darin, „Aufruf beginnen“ und „Aufruf beenden“ vor und nach dem Funktionsaufruf auszudrucken. Das von einem Internetnutzer unten geschriebene Programm sieht folgendermaßen aus: func(*args,**kw)


Zuerst habe ich nicht ganz verstanden, warum der Satz

verwendet wurde, aber später wurde mir klar, dass die Zuweisung an sich keine Bedeutung hat, aber dieser Satz auch die Funktion func zum Laufen bringt , also wird es geschrieben als
def wrapper(*args,**kw):
   print(t+'begin call')
   result=func(*args,**kw)
   print(t+'end call')
   return result
Nach dem Login kopieren

result=func(*args,**kw)


Das Ergebnis ist das gleiche.

def wrapper(*args,**kw):
   print(t+'begin call')
   func(*args,**kw)
   print(t+'end call')
Nach dem Login kopieren

Zusammenfassung

Das obige ist der detaillierte Inhalt vonBeachten Sie die ausführliche Erläuterung der Probleme beim Zuweisen von Funktionen zu Variablen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage