Une collection de code avancé pour la fonction intégrée de Python 3.x vars.
Puisque la valeur de retour de vars est un dictionnaire, elle peut être copiée avec ʻitems ()et la notation d'inclusion de dictionnaire. L'élément de ʻitems ()(ici ʻitem`) est un tuple de clés et de valeurs.
import sys
from pprint import pp
dict1 = {item[0]: item[1] for item in vars(sys).items()}
pp(dict1)
production
{'__name__': 'sys',
'__doc__': 'This module provides access to some objects ...,
...
Remarque: La valeur de retour de la fonction intégrée vars est de type dictionnaire (<class'dict '>). Pour énumérer les éléments (tuples clés et valeurs), vous devez faire vars (sys) .items (). Si vous définissez pour l'élément dans vars (sys), il sera traité comme vars (sys) .keys (), et un dictionnaire sera créé avec le premier caractère de la clé comme clé et le second caractère comme valeur.
import sys
from pprint import pp
dict1 = {item[0]: type(item[1]) for item in vars(sys).items()}
pp(dict1)
production
{'__name__': <class 'str'>,
'__doc__': <class 'str'>,
'__package__': <class 'str'>,
'__loader__': <class 'type'>,
...
import sys
from pprint import pp
set1 = {type(value).__name__ for value in vars(sys).values()}
pp(set1)
production
{'ModuleSpec',
'NoneType',
'SimpleNamespace',
'TextIOWrapper',
'bool',
'builtin_function_or_method',
'dict',
'flags',
'float_info',
'function',
'hash_info',
'int',
'int_info',
'list',
'str',
'thread_info',
'tuple',
'type',
'version_info'}
--Le nom du type peut être obtenu avec type (...) .__ name__.
--{e pour e dans v}est une notation d'inclusion d'ensemble.
import sys
from collections import Counter
from pprint import pp
counter = Counter((type(value).__name__ for value in vars(sys).values()))
pp(counter)
production
Counter({'builtin_function_or_method': 42,
'str': 16,
'TextIOWrapper': 6,
'int': 5,
'list': 5,
'dict': 3,
'tuple': 2,
'NoneType': 2,
'type': 1,
'ModuleSpec': 1,
'float_info': 1,
'int_info': 1,
'hash_info': 1,
'version_info': 1,
'SimpleNamespace': 1,
'flags': 1,
'thread_info': 1,
'bool': 1,
'function': 1})
import sys
import types
from pprint import pp
dict1 = {item[0]: item[1] for item in vars(sys).items()
if isinstance(item[1], types.BuiltinFunctionType)}
pp(dict1)
production
{'addaudithook': <built-in function addaudithook>,
'audit': <built-in function audit>,
'breakpointhook': <built-in function breakpointhook>,
'callstats': <built-in function callstats>,
'_clear_type_cache': <built-in function _clear_type_cache>,
...
import sys
import types
from pprint import pp
dict1 = {item[0]: item[1] for item in vars(sys).items()
if not isinstance(item[1], types.BuiltinFunctionType)}
pp(dict1)
production
{'__name__': 'sys',
'__doc__': 'This module provides ...',
'__package__': '',
'__loader__': <class '_frozen_importlib.BuiltinImporter'>,
'__spec__': ModuleSpec(name='sys', loader=<class '_frozen_importlib.BuiltinImporter'>),
...
import sys
import types
from pprint import pp
from typing import Optional
def str_truncate_singleline(s, width: int, linesep: Optional[str]):
s = str(s)
if not isinstance(width, int):
raise TypeError()
addsEllipsis: bool = False
if linesep is not None:
i: int = s.find(linesep)
if i != -1:
s = s[0:i]
addsEllipsis = True
if len(s) + len("...") > width:
return s[0:width-len("...")] + "..."
return s + "..." if addsEllipsis else s
dict1 = {item[0]: str_truncate_singleline(item[1], 50, "\n")
for item in vars(sys).items()
if not isinstance(item[1], types.BuiltinFunctionType)}
pp(dict1)
Recommended Posts