sed -n -e '/-- Table structure for table `my_table_name`/,/UNLOCK TABLES/p' database_file.sql > table_file.sql
Это лучшее решение, чем некоторые из вышеперечисленных, потому что не все SQL-дампы содержат инструкцию DROP TABLE
. Это будет работать всевозможные свалки.
Вы можете использовать функции lambda и iter для создания пустой итерируемой в Python.
my_iterable = lambda: iter(())
Как насчет
my_iterable = str
это проходит ваш тест.
Если говорить серьезно, Iterable
в модуле коллекций обеспечивает:
def __iter__(self):
while False:
yield None
Это можно считать «наиболее питоническим», потому что это то, что использует сам Python.
Обратите внимание, что технически все ответы до сих пор предоставляют итераторов (__iter__
+ next
), а не итераций (просто __iter__
).
Другое решение в Python 3 состоит в том, чтобы использовать новый синтаксис yield from
:
def empty_gen():
yield from ()
, который читается, и сохранить empty_gen
в качестве генератора.
def do_yield():
return
yield None
, если для вас важно использовать yield
, другой ответит иначе.
Другой ответ, так как я предоставляю совершенно новое решение с другим подходом.
В одной из библиотек у меня есть EmptyIterator
, например,
class EmptyIter(object):
__name__ = 'EmptyIter'
"""Iterable which is False and empty"""
def __len__(self): return 0
def next(self): raise StopIteration # even that is redundant
def __getitem__(self, index): raise IndexError
. Это альтернативный подход, который использует следующие свойства: