Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

PHPz
PHPznach vorne
2023-04-11 21:22:163377Durchsuche

Vorwort

In diesem Artikel wird weiterhin das Python-Sammlungsmodul vorgestellt. Dieses Mal wird hauptsächlich kurz die Verwendung benannter Tupel darin vorgestellt, nämlich benannte Tupel. Fangen wir ohne Umschweife an – denken Sie daran, „Gefällt mir“, „Folgen“ und „Weiterleiten“ zu markieren. Sie können überall dort verwendet werden, wo reguläre Tupel verwendet werden, und bieten die Möglichkeit, auf Felder über den Namen statt über den Positionsindex zuzugreifen. Es stammt aus den in Python integrierten Modulsammlungen. Die verwendete allgemeine Syntax lautet:

import collections
XxNamedTuple = collections.namedtuple(typename, field_names):

Wenn die Importmethode unterschiedlich ist, z. B.: Sammlungen als cAlias ​​importieren, aus Sammlungen benanntes Tupel importieren, aus Sammlungen benanntes Tupel als NamedTuple importieren usw., kann die Form der von uns erstellten benannten Tupel-Unterklasse entsprechend sein zu:

XxNamedTuple = cAlias.namedtuple(……)
XxNamedTuple = namedtuple(……)
XxNamedTuple = NamedTuple(……)

Where:

Parametertypname: Gibt einen Zeichenfolgenklassennamen für die zurückgegebene neue Tupelunterklasse XxNamedTuple an. Neue Unterklasse zum Erstellen tupelartiger Objekte mit zugehörigen Feldern, auf die über Eigenschaftssuche, Positionsindizierung und Iteration zugegriffen werden kann. Instanzen der Unterklasse verfügen außerdem über einen nützlichen Dokumentstring (entspricht einem Hilfedokument mit Typnamen und Feldnamen) und eine nützliche __repr__()-Methode, die den Tupelinhalt im Name=Wert-Format auflistet.

Parameterfeldnamen: ist normalerweise eine Folge von Zeichenfolgen, z. B. ['x', 'y']. Optional kann field_names eine Zeichenfolge sein, die entsprechende Feldnamen enthält, die durch Leerzeichen und/oder Kommas getrennt sind, z. B. „x y“ oder „x, y“.

Jeder gültige Python-Bezeichner kann als benannter Feldname verwendet werden, er darf jedoch nicht mit einem Unterstrich (_) beginnen. Gültige Bezeichner umfassen Buchstaben, Zahlen und Unterstriche, beginnen jedoch nicht mit Zahlen oder Unterstrichen und Schlüsselwörter wie „class“, „return“, „global“, „pass“ oder „raise“ können nicht verwendet werden.

Um zu verstehen, wie NamedTuple funktioniert, nehmen wir an, wir haben ein Employee-Objekt mit den Eigenschaften id, name und age. Bitte sehen Sie sich die Codebeispielliste an:

Das Ausgabeergebnis der Ausführung des Programms ähnelt dem folgenden:

Employee(, name='Solo Cui ', age='18')
按索引方式访问Employee的名子为 : Solo Cui
Employee(, name='Annie Kent', age='26')
按键(字段名)访问Employee的名子为 : Annie Kent
Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter TupelDarüber hinaus werden die anderen Parameter in der Funktion, die das benannte Tupel erstellt, selten verwendet Kurze Einführung:

Parameter umbenennen: Wenn Umbenennen wahr ist, werden ungültige Feldnamen automatisch durch Positionsnamen ersetzt. Beispielsweise wird ['abc', 'def', 'ghi', 'abc'] in ['abc', '_1', 'ghi', '_3'] konvertiert, wodurch das Schlüsselwort def und doppelte Feldnamen abc entfernt werden .

Parameterstandards: Es kann None oder ein iterierbares Objekt mit Standardwert sein. Da ein Feld mit einem Standardwert nach jedem Feld ohne Standardwert erscheinen muss, wird der Standardwert nacheinander auf den Parameter ganz rechts angewendet. Wenn der Feldname beispielsweise ['x', 'y', 'z'] lautet und der Standardwert (1,2) ist, ist x ein erforderlicher Parameter, y wird standardmäßig auf 1 gesetzt und z wird standardmäßig verwendet bis 2.

Parametermodul: Wenn ein Modul definiert ist, wird das __module__-Attribut des benannten Tupels auf diesen Wert gesetzt.

Benannte Tupelinstanzen verwenden nicht für jede Instanz ein separates Wörterbuch, daher sind sie leichtgewichtig und benötigen nicht mehr Speicher als normale Tupel.

Benannte Tupel-spezifische Methoden

Zusätzlich zu den von Tupeln geerbten Methoden unterstützen benannte Tupel drei zusätzliche Methoden und zwei Eigenschaften. Um Konflikte mit Feldnamen zu vermeiden, beginnen Methoden- und Eigenschaftsnamen mit einem Unterstrich. Sie werden wie folgt eingeführt:

1) _make(iterable):

Klassenmethode zum Generieren neuer Instanzen aus vorhandenen Sequenzen oder iterierbaren Objekten. Das Codebeispiel lautet wie folgt:

Die Ausgabe ähnelt der folgenden:

Employee(, name='Batman', age='28')
Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

2) _asdict ():

Gibt ein neues Wörterbuch zurück, das Feldnamen entsprechenden Werten zuordnet. Der Beispielcode lautet wie folgt:

Die Ausgabe ähnelt der folgenden:

{'id': '333', 'name': 'Batman', 'age': '28'}

Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

3)_replace (**kwargs):

Gibt eine neue Instanz des benannten Tupels zurück und ersetzt das angegebene Feld durch ein neuer Wert. Das Codebeispiel lautet wie folgt:

Das Ausgabeergebnis lautet wie folgt:

Employee(, name='Batman', age='34')
Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

4) _fields:

Listet Feldnamen in String-Tupeln auf. Wird zur Selbstbeobachtung und zum Erstellen neuer benannter Tupeltypen aus vorhandenen benannten Tupeln verwendet. Der Beispielcode lautet wie folgt:

Das Ausgabeergebnis ist:

('id', 'name', 'age')

我们可以使用_fields属性从现有的命名元组中创建新的命名元组。示例如下:

Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

输出结果类似如下:

Pixel(x=5, y=8, red=128, green=255, blue=0)

结果的实体性赋值

这里所说的实体,类似Java中的数据实体对象——只有简单的属性字段。而命名元组在为csv或sqlite3模块操作而返回的元组结果分配给对应字段名而装配成简单实体时特别有用,自动进行字段的对应赋值。比如在当前Python程序位置有个employees.csv,其包含内容如下:

张三,26,工程师,开发部,中级
李四,32,项目经理,项目部,高级

通过示例,我们来完成Employee实体的命名元组的自动装配,代码示例如下:

Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

输出结果类似如下:

张三 工程师 26 开发部 中级
李四 项目经理 32 项目部 高级

再简单地来个数据库操作和装配实体的示例,代码清单如下:

Python-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel

我这里只是简单的创建了数据库并创建表,然后插入一条数据,再查询并完成命名元组的实体化装配和结果输出。

运行输出结果如下:

王武 经理

本文小结

本文主要介绍了Python自带集合模块中的命名元组(namedtuple)的使用,即可以当做一般的元组使用,由可基于字段名的方式访问元组值,并介绍了命名元组内部扩展的几个方法和和属性的应用示例。最后还介绍了基于命名元组的实体化封装应用。基于代码示例进行介绍,这样便于你动手实践,以便更好地掌握和理解。

Das obige ist der detaillierte Inhalt vonPython-Programmierung: Detaillierte Erläuterung der wichtigsten Punkte bei der Verwendung benannter Tupel. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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