Как проверить, существует ли переменная?

Вы должны выбрать первый. Они не имеют никакой разницы, кроме производительности, первая из которых будет быстрой в сравнении второго.

Если переменная внутри двойной кавычки PHP занимает время для разбора переменной.

Check out Одиночные кавычки или двойные кавычки для конкатенации переменных?

Это еще один пример . Есть ли однократная цитата с преимуществами производительности против двойной цитаты в php?

Я не понял, почему этот ответ в ссылке выше, и почему этот ответ получил downvote.

Как я сказал то же самое.

Вы можете посмотреть здесь также

Что быстрее в PHP, одинарные или двойные кавычки?

791
задан martineau 12 September 2016 в 16:40
поделиться

4 ответа

Чтобы проверить наличие локальной переменной:

if 'myVar' in locals():
  # myVar exists.

Чтобы проверить наличие глобальной переменной:

if 'myVar' in globals():
  # myVar exists.

Чтобы проверить, есть ли у объекта атрибут:

if hasattr(obj, 'attr_name'):
  # obj.attr_name exists.
1460
ответ дан 22 November 2019 в 21:11
поделиться

Конструкторы такие же. Причина, по которой я предпочел бы второй вариант, заключается в том, что он позволит вам удалить символы подчеркивания из имен личных переменных и сохранить контекст (улучшая понятность). Я стараюсь всегда использовать this при обращении к переменным и свойствам экземпляра.

Я больше не использую ключевое слово this таким образом после того, как перешел в другую компанию с другим стандарты. Я привык к нему и теперь редко использую его, когда обращаюсь к членам экземпляра. Я все же рекомендую использовать свойства (очевидно).

Моя версия вашего класса:

class Life
{
    //Fields
    private string person;
    private string partner;

    //Properties
    public string Person
    {
        get { return this.person; }
        set { this.person = value; }
    }

    public string Partner
    {
        get { return this.partner; }
        set { this.partner = value; }
    }


    public Life()
    {
        this.person = "Dave";
        this.partner = "Sarah";

        MessageBox.Show("Life Constructor Called");
    }
}

или, что еще лучше,

112
ответ дан 22 November 2019 в 21:11
поделиться

Использование try / except - лучший способ проверить существование переменной. Но почти наверняка есть лучший способ делать то, что вы делаете, чем установка / тестирование глобальных переменных.

Например, если вы хотите инициализировать переменную уровня модуля при первом вызове какой-либо функции, вы лучше использовать такой код:

my_variable = None

def InitMyVariable():
  global my_variable
  if my_variable is None:
    my_variable = ...
22
ответ дан 22 November 2019 в 21:11
поделиться

catch в Python называется , кроме . в остальном это нормально для таких простых случаев. Существует ошибка AttributeError , которую можно использовать для проверки наличия у объекта атрибута.

9
ответ дан 22 November 2019 в 21:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: