Mit def
definieren Sie neue Funktionen, die einige möglicherweise unbekannte (!) Argumente akzeptieren.
Also, def sin(x):
bedeutet "definieren Sie eine Funktion namens sin
, die ein Argument akzeptiert". Beachten Sie, dass dieser Code bedeutet, dass x
absolut kann alles sein, die Funktion Definition nicht (und kann) gelten keine Beschränkungen seiner Art, Wert, Größe usw.
Wenn Sie das tun
a = "hello"
def test(a):
pass
die a
in der Funktionsdefinition ist lediglich ein Argument, die nicht jede Beziehung zu jedem anderen a
Sie in Ihrem Code verwenden muss! Sie könnten es x
, pi
, z
oder was auch immer genannt haben der Name ist nicht wirklich wichtig (Code Lesbarkeit beiseite).
Wenn Sie versuchen,
def test(x.y.z):
pass
Sie einen Fehler Syntax erhalten zu schreiben, wie es Einschränkungen für die Variablen existieren und Argumente Namen, die Sie nicht erlauben, eine Variable rufen Sie einen beliebigen Namen. Warum? Einfach weil man sonst viel Unsicherheit bekommt. Zum Beispiel, wie diese analysieren:
# a poorly formatted number literal or a variable definition??
1234hello = "test"
# attempt to access a member of a class (or module) or a variable definition??
x.y.z = 5
# is "yay a variable's name or a poorly formatted string literal??
x = "yay - 5
# the same question as above
f' = df/dx
Eine Funktion Argument ist eine Variable, so dass die gleichen Einschränkungen auf ihn auch auferlegt.
BTW, werfen Sie einen Blick auf die SO-Code-Highlighter gehen Nüsse versuchen, den Code oben zu markieren.
Welche Bedeutung hätte 'x.y.z' in der Funktionssignatur während der Funktion * definition *? Wenn Sie 'def func1 (a):' definieren, definiert es eine Funktion mit einem Argument namens 'a', d.h. der Wert von 'a' im vorhergehenden Code wird nicht einmal berücksichtigt. – vaultah
@vaultah Ich denke, OP, warum, wenn ich importierte Sache zu einer Variablen zuweisen und es als Funktion Argumente verwenden, funktioniert es richtig, aber wenn ich es direkt als Funktion Argument verwende, habe ich einen Syntaxfehler – Arman