Les opérations numériques ont été apprises à l'école, donc cela ne semble pas étrange, mais vous pouvez également utiliser les opérateurs «+», «» et «%» pour les chaînes de caractères. Je comprends toujours «+» et «», mais j'ai été surpris que «%» puisse être utilisé comme convertisseur de format.
>>> 'ABC' + '123'
'ABC123'
>>> 'ABC' * 3
'ABCABCABC'
>>> '%#08x' % 123
'0x00007b'
>>> '%d, %x, %o' % (123, 123, 123)
'123, 7b, 173'
python est un langage de script orienté objet, et les chaînes auront des méthodes de traitement, alors jetons un œil à la liste des méthodes de chaînes.
>>> dir('') # ''La partie de peut être n'importe quelle chaîne de caractères
['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
La seconde moitié de capitalize est une méthode normale pour les chaînes.
>>> help(''.capitalize)
Help on built-in function capitalize:
capitalize(...)
S.capitalize() -> string
Return a copy of the string S with only its first character
capitalized.
>>> 'ABC'.capitalize()
'Abc'
>>> help(''.center)
Help on built-in function center:
center(...)
S.center(width[, fillchar]) -> string
Return S centered in a string of length width. Padding is
done using the specified fill character (default is a space)
>>> 'Python'.center(30, '-')
'------------Python------------'
La première moitié du __
(deux soulignés) affiché pardir ('')
est la méthode spéciale
, qui semble être utilisée de manière fixe.
__add__
, __mul__
, __mod__
sont les méthodes appelées par les opérateurs +
, *
, `% ʻ.
>>> 'ABC'.__add__('123')
'ABC123'
>>> 'ABC'.__mul__(3)
'ABCABCABC'
>>> '%#x'.__mod__(123)
'0x7b'
Grâce à la classe string définissant ces méthodes, vous pouvez manipuler des chaînes à l'aide d'opérateurs.
Alors qu'en est-il de ça?
>>> 'ABC' + '123' * 3
'ABC123123123'
>>> 'ABC'.__add__('123').__mul__(3)
'ABC123ABC123ABC123'
Le résultat est différent entre la formule ci-dessus et la formule du bas.
Les opérateurs ont une priorité, et *
a priorité sur+
, donc l'interpréteur Python interprète l'expression ci-dessus comme`'ABC '+ (' 123 '* 3) ʻet: Le résultat est différent car la méthode est appelée.
>>> 'ABC'.__add__('123'.__mul__(3))
'ABC123123123'
Au fait, appelons également la méthode pour les valeurs numériques.
>>> dir(0) #0 peut être un autre nombre
['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real']
>>> 123.__add__(456)
SyntaxError: invalid syntax
>>> 123 .__add__(456)
579
>>> (123).__add__(456)
579
En effet, «123 .__ add__ (456)» est une erreur de syntaxe, mais «.» Est interprété comme un point décimal. Vous pouvez appeler la méthode en laissant un espace ou en le plaçant entre parenthèses.
À propos, la fonction intégrée len appelle la méthode __len__
.
Personnellement, j'aimerais également définir un autre nom pour la méthode length ()
.
>>> len('abcdefg')
7
>>> 'abcdefg'.__len__()
7
Il existe d'autres méthodes spéciales utilisées pour les opérateurs de comparaison, l'accès au tableau, l'accès séquentiel, la réduction (), etc.
Recommended Posts