Heim  >  Artikel  >  Backend-Entwicklung  >  Analyse eines Teils der Funktion in Python

Analyse eines Teils der Funktion in Python

不言
不言nach vorne
2018-09-28 14:10:152173Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Analyse einiger Funktionen in Python. Ich hoffe, dass er für Freunde hilfreich ist.

In Python hat eine Variable keinen Typ, sie ist eine Referenz auf ein Objekt und der Typ gehört zum Objekt
Eine Variable ist im Wesentlichen ein Platzhalter! Variablen werden normalerweise mit Kleinbuchstaben benannt.

1: Syntax

def Funktionsname (Parameterliste):
Funktionskörper
(Funktionsnamen verwenden im Allgemeinen eine Kombination aus Kleinbuchstaben + einzelnen unterstrichenen Zahlen usw.)

2: Arten häufig verwendeter Funktionen

(1) Funktionen mit Parametern: Parameter müssen in der richtigen Reihenfolge an die Funktion übergeben werden

(2) Standardparameterfunktion: if Es werden keine Parameter übergeben, es werden die Standardparameter verwendet. Wenn die Standardparameter nicht am Ende stehen, wird ein Fehler gemeldet!

(3) Schlüsselwortparameter: Funktionsaufrufe verwenden Schlüsselwortparameter, um die übergebenen Parameterwerte zu bestimmen

(4) Parameter unbestimmter Länge: Die Funktion kann mehr Parameter verarbeiten als bei der ursprünglichen Deklaration. Alle Variablen in

①*args werden in ein Tupel gepackt, um alle unbenannten Variablen zu speichern
②Alle Variablen in **args werden in ein Wörterbuch gepackt

( 5) Bei der Deklaration von a Funktion, das Sternchen * im Parameter kann alleine erscheinen und die Parameter nach * müssen mit Schlüsselwörtern übergeben werden

(6) Anonyme Funktion, verwenden Sie die Lambda-Funktion, um eine anonyme Funktion zu erstellen

①Lambda ist nur ein Ausdruck, und der Funktionskörper ist viel einfacher als def
②Der Hauptkörper von Lambda ist ein Ausdruck, kein Codeblock
③Die Funktion hat ihren eigenen Namensraum und kann nicht außerhalb ihres eigenen Parameters zugreifen Liste oder Parameter im globalen Namespace.

Drei: Übergabe von Python-Funktionsparametern:

Unveränderlicher Typ:

C++-ähnliche Wertübergabe, z. B. int, string, tuple.
Wie bei fun(a) wird nur der Wert von a übergeben und hat keinen Einfluss auf das a-Objekt selbst.
Zum Beispiel ändert das Ändern des Werts eines Inside-Fun(a) nur ein anderes kopiertes Objekt und hat keinen Einfluss auf ein Objekt selbst.

Variablentyp:

Ähnlich wie bei der C++-Referenzübergabe, z als Listen und Wörterbücher. Zum Beispiel ist Spaß (la) tatsächlich la. Nach der Änderung wird auch la außerhalb des Spaßes beeinflusst.

Alles in Python ist ein Objekt im strengen Sinne, wir können nicht sagen, ob es durch Wert oder durch übergeben wird Referenz. Es sollte gesagt werden, dass das Übergeben unveränderlicher Objekte und das Übergeben veränderlicher Objekte

Vier: Variablenbereich

Es gibt im Allgemeinen vier Arten von Bereichen in Python:

L (Lokal) Lokaler Bereich Domäne
E (Einschließend)
G (Global) in Funktion außerhalb der Abschlussfunktion (Global) Globaler Bereich
B (Eingebaut) Integrierter Bereich

Suchregel ist L -> ;E->G->B

In Python führen nur Module, Klassen und Funktionen (def, lambda) neue Bereiche ein (z. B. if /elif/else/, try/exclusive, for/while usw.) führen keine neuen Gültigkeitsbereiche ein, was bedeutet, dass auf die in diesen Anweisungen definierten Variablen auch von außen zugegriffen werden kann.

5: Globale Variablen und lokale Variablen

Variablen, die innerhalb einer Funktion definiert sind, haben einen lokalen Gültigkeitsbereich, und Variablen, die außerhalb der Funktion definiert sind, haben einen globalen Gültigkeitsbereich.

Wenn der innere Bereich die Variablen des äußeren Bereichs ändern möchte, werden die Schlüsselwörter global und nonlocal verwendet.

(1) global wird verwendet, um den Wert globaler Variablen zu ändern.

(2) nonlocal wird benötigt, um Variablen im verschachtelten Bereich (umschließender Bereich, äußerer nicht-globaler Bereich) zu ändern. Nichtlokales Schlüsselwort

Sechs: Tipps zum Funktionsaufruf (wichtig)

Funktionsname.__doc__ Holen Sie sich das Hilfedokument der Funktion

Der Funktionsname kann als Hilfedokument einer anderen Funktion verwendet werden. Formal Parameter

mehrere Rückgabewerte werden in Form von Tupeln zurückgegeben

interne Funktionen, auf globale Variablen kann zugegriffen werden, ohne sie zu ändern! !

Interne Funktion: Wenn Sie die globale Variable mit demselben Namen ändern, geht Python davon aus, dass es sich um eine lokale Variable handelt! !

Sieben: Informationen zur Benennung

(1) Dateiname: alles in Kleinbuchstaben, Sie können Unterstriche verwenden

(2) Funktionsname: Kleinbuchstaben, Prinzip der Kleinschreibung

(3) Variablennamen: alle in Kleinbuchstaben, verbunden durch Unterstriche

Detaillierte Benennungsregeln finden Sie in PEP8

8: Mehrere Sonderfunktionen
zuordnen
reduzieren
Filter

# --------------------------------------------------------------------------#
# 函数的语法及调用
# --------------------------------------------------------------------------#


def func(func_name, number):        # 函数的定义
    """打印输入的任何字符串"""
    print(func_name, number)
    return 'Done'


func('func_1', 'faith')             # 函数的调用

# --------------------------------------------------------------------------#
# 不定长参数函数,封装成元组
# --------------------------------------------------------------------------#


def func_1(func_name, *number):
    """
    打印输入的任何字符串
    """
    print(type(number))
    print(func_name, number)
    return 'Done'


func_1('func_1', 1, 2, 2, 3)


def func_2(func_name, number):   #
    print(type(number))
    print(func_name, number)
    return 'Done'


func_2('func_2', (1, 2, 2, 3))


def func_3(func_name, *number):
    print(func_name)
    print(number[3])            # 根据元组index中一部分变量
    print(number[4])
    return 'Done'


func_3('func_3', 1, 2, 2, 3, 'aaa', 'abc')


# get out question: the number of index isn't known in most case!
# --------------------------------------------------------------------------#
# 不定长参数函数,封装成字典
# --------------------------------------------------------------------------#


def func_4(func_name, **number):  # 可变参数必须在函数参数的最后
    # print(type(number))
    print(func_name, number)
    return 'Done'


func_4('func_4', name='faith')

# --------------------------------------------------------------------------#
# 命名关键字函数
# --------------------------------------------------------------------------#


def func_5(a, x, c, *, china, uk):
    print('func_5:', china, uk)
    print(a, x, c)


func_5(1, 2, 3, china='bJ', uk='rs')    # 调用时必须加上关键字
# func_5(1, 2, 3, 'bJ', 'rs')

# --------------------------------------------------------------------------#
# 函数应用之-递归
# --------------------------------------------------------------------------#


def my_sum(i):
    if i < 0:
        raise ValueError    # 抛出错误
    elif i <= 1:
        return i
    else:
        return i + my_sum(i - 1)


print(my_sum(1.4))

# --------------------------------------------------------------------------#
# 传递不可变对象实例
# --------------------------------------------------------------------------#


def change_int(a):
    a = 10


b = 2
change_int(b)
print(b)         # 结果是2
# --------------------------------------------------------------------------#
# 传递可变对象实例
# --------------------------------------------------------------------------#


def change_me(mylist):
    mylist.append([1, 2, 3, 4])
    print("函数内取值: ", mylist)
    return


myList = [10, 20, 30]
change_me(myList)
print("函数外取值: ", myList)

# --------------------------------------------------------------------------#
# 函数内修改全局变量的值
# --------------------------------------------------------------------------#

money = 200  # 模块里面的全局变量


def add_money():
    global money
    money = money + 1
    return money


print("修改后的值money = ", add_money())


# --------------------------------------------------------------------------#
# 匿名函数
# --------------------------------------------------------------------------#
sum_1 = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("相加后的值为 : ", sum_1(10, 20))
print("相加后的值为 : ", sum_1(20, 20))

# 单独编译一个文件时候输出结果
if __name__ == "__main__":
    pass

Das obige ist der detaillierte Inhalt vonAnalyse eines Teils der Funktion in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:cnblogs.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen

In Verbindung stehende Artikel

Mehr sehen