In der Schule wurden numerische Operationen gelernt, daher fühlt es sich nicht seltsam an, aber Sie können auch die Operatoren "+", "" und "%" für Zeichenfolgen verwenden. Ich verstehe immer noch "+" und "", aber ich war überrascht, dass "%" als Formatkonverter verwendet werden kann.
>>> 'ABC' + '123'
'ABC123'
>>> 'ABC' * 3
'ABCABCABC'
>>> '%#08x' % 123
'0x00007b'
>>> '%d, %x, %o' % (123, 123, 123)
'123, 7b, 173'
Python ist eine objektorientierte Skriptsprache, und Zeichenfolgen verfügen über Verarbeitungsmethoden. Schauen wir uns also die Liste der Zeichenfolgenmethoden an.
>>> dir('') # ''Der Teil von kann eine beliebige Zeichenfolge sein
['__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']
Die zweite Hälfte von Capitalize ist eine normale Methode für Strings.
>>> 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------------'
Die erste Hälfte von "__" (zwei unterstrichen), die von "dir (") "angezeigt wird, ist die" spezielle Methode ", die anscheinend fest verwendet wird.
__add__
, __mul__
, __mod__
sind die Methoden, die von den Operatoren +
, *
, %
aufgerufen werden.
>>> 'ABC'.__add__('123')
'ABC123'
>>> 'ABC'.__mul__(3)
'ABCABCABC'
>>> '%#x'.__mod__(123)
'0x7b'
Dank der Zeichenfolgenklasse, die diese Methoden definiert, können Sie Zeichenfolgen mithilfe von Operatoren bearbeiten.
Was ist damit?
>>> 'ABC' + '123' * 3
'ABC123123123'
>>> 'ABC'.__add__('123').__mul__(3)
'ABC123ABC123ABC123'
Das Ergebnis unterscheidet sich zwischen der obigen Formel und der unteren Formel. Operatoren haben eine Priorität, und "*" hat Vorrang vor "+", daher interpretiert der Python-Interpreter den obigen Ausdruck als "ABC" + ("123" * 3) "und: Das Ergebnis ist anders, weil die Methode aufgerufen wird.
>>> 'ABC'.__add__('123'.__mul__(3))
'ABC123123123'
Rufen wir übrigens auch die Methode für numerische Werte auf.
>>> dir(0) #0 kann eine andere Zahl sein
['__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
Dies liegt daran, dass 123 .__ add__ (456)
ein Syntaxfehler ist, .
jedoch als Dezimalpunkt interpretiert wird. Sie können die Methode aufrufen, indem Sie ein Leerzeichen belassen oder in Klammern setzen.
Übrigens ruft die eingebaute Funktion len die Methode len auf. Persönlich möchte ich auch einen anderen Namen für die Methode "length ()" definieren.
>>> len('abcdefg')
7
>>> 'abcdefg'.__len__()
7
Es gibt andere spezielle Methoden für Vergleichsoperatoren, Arrayzugriff, sequentiellen Zugriff, redu () usw.
Recommended Posts