Maison > Article > développement back-end > Programmation Python : explication détaillée des points clés de l'utilisation de tuples nommés
Cet article continue de présenter le module de collection Python. Cette fois, il introduit principalement brièvement l'utilisation de tuples nommés, c'est-à-dire nommétuple. Sans plus tarder, commençons - n'oubliez pas d'aimer, de suivre et de transmettre ~ ^_^
La classe des tuples nommés dans les collections Python donne un sens à chaque position dans le tuple et améliore la lisibilité et le caractère descriptif du code. Ils peuvent être utilisés partout où des tuples réguliers sont utilisés et ajoutent la possibilité d'accéder aux champs par nom plutôt que par index de position. Il provient des collections de modules intégrés Python. La syntaxe générale utilisée est :
import collections XxNamedTuple = collections.namedtuple(typename, field_names):
Si la méthode d'importation est différente, telle que : importer des collections en tant que cAlias, depuis des collections importer un tuple nommé, depuis des collections importer un tuple nommé en tant que NamedTuple, etc., alors la forme de la sous-classe de tuple nommé que nous créons peut correspond à :
XxNamedTuple = cAlias.namedtuple(……) XxNamedTuple = namedtuple(……) XxNamedTuple = NamedTuple(……)
Where:
Parameter typename : Spécifie un nom de classe de chaîne pour la nouvelle sous-classe de tuple renvoyée XxNamedTuple. Nouvelle sous-classe pour créer des objets de type tuple avec des champs associés accessibles via la recherche de propriétés, l'indexation positionnelle et l'itération. Les instances de la sous-classe ont également une docstring utile (équivalente à un document d'aide, avec typename et field_names) et une méthode __repr__() utile qui répertorie le contenu du tuple au format nom=valeur.
Parameter field_names : est généralement une séquence de chaînes, telles que ['x', 'y']. Facultativement, field_names peut être une chaîne contenant les noms de champs correspondants séparés par des espaces et/ou des virgules, tels que « x y » ou « x, y ».
Tout identifiant Python valide peut être utilisé comme nom de champ nommé, mais il ne peut pas commencer par un trait de soulignement (_). Les identifiants valides incluent des lettres, des chiffres et des traits de soulignement, mais ne commencent pas par des chiffres ou des traits de soulignement, et les mots clés tels que class, return, global, pass ou raise ne peuvent pas être utilisés.
Pour comprendre comment fonctionne NamedTuple, supposons que nous ayons un objet Employee avec les propriétés id, name et age. Veuillez consulter la liste d'exemples de code :
Le résultat de l'exécution du programme est similaire au suivant :
Employee(, name='Solo Cui ', age='18') 按索引方式访问Employee的名子为 : Solo Cui Employee(, name='Annie Kent', age='26') 按键(字段名)访问Employee的名子为 : Annie Kent
De plus, les autres paramètres de la fonction qui crée le tuple nommé sont rarement utilisés. Voici juste un bref. introduction :
Rename du paramètre : if Si rename est vrai, les noms de champs invalides seront automatiquement remplacés par des noms de position. Par exemple, ['abc', 'def', 'ghi', 'abc'] est converti en ['abc', '_1', 'ghi', '_3'], éliminant le mot-clé def et les noms de champs en double abc .
Paramètres par défaut : il peut s'agir de Aucun ou d'un objet itérable avec une valeur par défaut. Puisqu'un champ avec une valeur par défaut doit apparaître après tout champ sans valeur par défaut, la valeur par défaut est appliquée au paramètre le plus à droite, séquentiellement vers la gauche. Par exemple, si le nom du champ est ['x', 'y', 'z'] et que la valeur par défaut est (1,2), alors x sera un paramètre obligatoire, y sera par défaut sur 1 et z par défaut à 2.
Module Parameter : Si le module est défini, l'attribut __module__ du tuple nommé est défini sur cette valeur.
Les instances de tuples nommés n'utilisent pas de dictionnaire distinct pour chaque instance, elles sont donc légères et ne nécessitent pas plus de mémoire que les tuples classiques.
En plus des méthodes héritées des tuples, les tuples nommés prennent en charge trois méthodes supplémentaires et deux propriétés. Pour éviter les conflits avec les noms de champs, les noms de méthodes et de propriétés commencent par un trait de soulignement. Ils sont présentés comme suit :
1) _make(iterable) :
méthode de classe pour générer de nouvelles instances à partir de séquences existantes ou d'objets itérables. L'exemple de code est le suivant :
Le résultat est similaire à ce qui suit :
Employee(, name='Batman', age='28')
2) _asdict ():
Renvoie un nouveau dictionnaire qui mappe les noms de champs aux valeurs correspondantes. L'exemple de code est le suivant :
Le résultat est similaire à ce qui suit :
{'id': '333', 'name': 'Batman', 'age': '28'}
3)_replace (**kwargs):
Renvoie une nouvelle instance du tuple nommé, en remplaçant le champ spécifié par une nouvelle valeur. L'exemple de code est le suivant :
Le résultat de sortie est le suivant :
Employee(, name='Batman', age='34')
4) _fields:
Répertorie les noms de champs dans des tuples de chaînes. Utilisé pour l'introspection et la création de nouveaux types de tuples nommés à partir de tuples nommés existants. L'exemple de code est le suivant :
Le résultat de sortie est :
('id', 'name', 'age')
我们可以使用_fields属性从现有的命名元组中创建新的命名元组。示例如下:
输出结果类似如下:
Pixel(x=5, y=8, red=128, green=255, blue=0)
这里所说的实体,类似Java中的数据实体对象——只有简单的属性字段。而命名元组在为csv或sqlite3模块操作而返回的元组结果分配给对应字段名而装配成简单实体时特别有用,自动进行字段的对应赋值。比如在当前Python程序位置有个employees.csv,其包含内容如下:
张三,26,工程师,开发部,中级 李四,32,项目经理,项目部,高级
通过示例,我们来完成Employee实体的命名元组的自动装配,代码示例如下:
输出结果类似如下:
张三 工程师 26 开发部 中级 李四 项目经理 32 项目部 高级
再简单地来个数据库操作和装配实体的示例,代码清单如下:
我这里只是简单的创建了数据库并创建表,然后插入一条数据,再查询并完成命名元组的实体化装配和结果输出。
运行输出结果如下:
王武 经理
本文主要介绍了Python自带集合模块中的命名元组(namedtuple)的使用,即可以当做一般的元组使用,由可基于字段名的方式访问元组值,并介绍了命名元组内部扩展的几个方法和和属性的应用示例。最后还介绍了基于命名元组的实体化封装应用。基于代码示例进行介绍,这样便于你动手实践,以便更好地掌握和理解。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!