Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 20, 2014 22:41:02

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

eval не работает

eval не работает:

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
import PyQt4.QtCore as QtCore
import PyQt4.QtGui as QtGui
class Frame_CheckBox_Edit(QtGui.QFrame):
    def __init__(self, parent = None):
        str3 = "first"
        # Работает
        self.first_label = QtGui.QLabel(str3)
        # Не работает
        eval('self.first_label = QtGui.QLabel(str3)')
        pass
                
class MyWindow(QtGui.QWidget):
    def __init__(self, parent = None):
        QtGui.QWidget.__init__(self, parent)
        self.control_frame = Frame_CheckBox_Edit()
        
app = QtGui.QApplication(sys.argv)
window = MyWindow()
window.show()
sys.exit(app.exec_())
Ошибка:
self.first_label = QtGui.QLabel(str3)
^
SyntaxError: invalid syntax

Отредактировано alien308 (Дек. 20, 2014 22:43:50)

Офлайн

#2 Дек. 20, 2014 22:51:30

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

eval не работает

>>> x = 2
>>> eval('x+2')
4
>>> exec('x+1')
>>> eval('x = 4')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    x = 4
      ^
SyntaxError: invalid syntax
>>> exec('x = 4')
>>> x
4
>>> x = eval('5')
>>> x
5



————————————————
-*- Simple is better than complex -*-

Отредактировано terabayt (Дек. 20, 2014 22:54:52)

Офлайн

#3 Дек. 20, 2014 22:58:42

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

eval не работает

Внутри eval не работает ‘=’. Что это значит?

Офлайн

#4 Дек. 20, 2014 23:08:18

terabayt
От: Киев
Зарегистрирован: 2011-11-26
Сообщения: 1099
Репутация: +  103  -
Профиль   Отправить e-mail  

eval не работает

в eval вычисляеся выражение, а в exec выполняется код

alien308
Внутри eval не работает ‘=’. Что это значит?
и не только ‘=’
>>> eval('print(1)')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<string>", line 1
    print(1)
        ^
SyntaxError: invalid syntax
>>> exec('print(1)')
1
eval предназначен чтобы вычислить выражение в строке и возвратить результат!



————————————————
-*- Simple is better than complex -*-

Офлайн

#5 Дек. 21, 2014 09:31:55

alien308
Зарегистрирован: 2012-06-23
Сообщения: 62
Репутация: +  0  -
Профиль   Отправить e-mail  

eval не работает

Спасибо!

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version