я вижу метод str.endswith
позволяет suffix
паров быть кортежем строк:Почему параметр strdend не позволяет параметру «суффикс» быть списком?
Docstring:
S.endswith(suffix[, start[, end]]) -> bool
Return True if S ends with the specified suffix, False otherwise.
With optional start, test S beginning at that position.
With optional end, stop comparing S at that position.
suffix can also be a tuple of strings to try.
, так что я предполагаю, что это также принимает список строк или некоторые другие итерируемых, но когда я пробовал это, прохождение списка вызывает ошибку:
In [300]: s='aaa'
In [301]: s.endswith(('a', 'b'))
Out[301]: True
In [302]: s.endswith(['a', 'b'])
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-302-d70816089fed> in <module>()
----> 1 s.endswith(['a', 'b'])
TypeError: endswith first arg must be str, unicode, or tuple, not list
Так почему же он принимает только Кортеж строк?
Ну, это не может быть * any * iterable (с тем же значением), поскольку строки являются итерабельными и обрабатываются по-разному. – delnan
@ delnan, ok, not * any *, но не является кортежами, подобными спискам при передаче в качестве параметров? – zhangxaochen
@zhangxaochen Кортежи неизменяемы, они не могут быть изменены при передаче функции. Но список изменчив. –