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