Єдиний справді надійний спосіб зробити це:
if "".__eq__(myString):
Усі інші рішення мають можливі проблеми та випадки, коли перевірка може не виконати.
len(myString)==0може вийти з ладу, якщо myStringце об'єкт класу, який успадковує strі переосмислює __len__()метод.
Аналогічно може myString == ""і myString.__eq__("")не вдатися, якщо myStringвідмінити __eq__()і __ne__().
Чомусь "" == myStringтакож обманюється, якщо myStringвідміняється __eq__().
myString is ""і "" is myStringє рівнозначними. Обидва вони будуть відмовлені, якщо myStringце насправді не є рядком, а підкласом рядка (обидва повернуться False). Крім того, оскільки вони перевіряють особистість, єдина причина, чому вони працюють, полягає в тому, що Python використовує String Pooling (також званий String Internment), який використовує той самий екземпляр рядка, якщо він інтернований (див. Тут: Чому порівнюються рядки, використовуючи або '= = 'або' є 'іноді дають інший результат? ). І ""інтернований з самого початку в CPython
Велика проблема перевірки ідентичності полягає в тому, що String Internment - це, наскільки я міг знайти), що це не стандартизовано, які рядки інтерновані. Це означає, що теоретично ""не потрібно інтернованих, і це залежить від реалізації.
Єдиний спосіб зробити це , що на насправді не обдуриш це один згадувалося на початку: "".__eq__(myString). Оскільки це явно викликає __eq__()метод порожнього рядка, його не можна обдурити, замінивши будь-які методи в myString і твердо працює з підкласами str.
Також покладатися на хибність рядка може не спрацювати, якщо об'єкт переосмислить його __bool__()метод.
Це не тільки теоретична робота, але може бути актуальною і в реальному використанні, оскільки я бачив, як фреймворки та бібліотеки підкласифікуються strраніше, і використання myString is ""може повернути туди неправильний вихід.
Крім того, порівняння рядків, що використовують isзагалом, є досить злою пасткою, оскільки вона працюватиме правильно іноді, але не в інший час, оскільки об'єднання рядків дотримується досить дивних правил.
Зважаючи на це, у більшості випадків усі згадані рішення працюватимуть правильно. Це посада - це здебільшого наукова робота.
""не так добре?