Python - ошибка синтаксиса в -> if ((main_paned = gtk.HPaned ())): - PullRequest
0 голосов
/ 20 сентября 2018

У меня проблема.Я работаю в C ++, и я не знаю, что я делаю неправильно в Python.

У меня есть код C ++:

if ((main_paned = GTK_PANED(gtk_paned_new(GTK_ORIENTATION_HORIZONTAL)))){
    std::cout << "created" << std::endl;
}

, и я создал этот код в Python:

if ((main_paned = gtk.HPaned())):
    print "created";

но вернуть: SyntaxError: неверный синтаксис.
Что я делаю не так?А как создать add в переменную в if?

1 Ответ

0 голосов
/ 20 сентября 2018

В версии C ++ используется побочный эффект для одновременного выполнения как назначения, так и сравнения.Это работает, потому что оператор присваивания также возвращает присвоенное ему значение, которое if использует для сравнения достоверности.Если разбить его на два этапа, это будет похоже на выполнение:

main_paned = GTK_PANED(gtk_paned_new(GTK_ORIENTATION_HORIZONTAL));
if (main_paned)
{
    // rest of code
}

Python не допускает такое поведение, поэтому вам придется выполнить аналогичную вещь

main_paned = gtk.HPaned()
if main_paned:
    # code

или просто

if gtk.HPaned():

Это, конечно, предполагает, что ваш код C ++ правильный, и вы вместо этого не намеревались выполнять логическое сравнение (==) вместо присваивания (=)

if (main_paned == GTK_PANED(gtk_paned_new(GTK_ORIENTATION_HORIZONTAL)))
{
    // rest of code
}
...