Найти - Пользователи
Полная версия: eval не работает
Начало » Python для экспертов » eval не работает
1
alien308
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
terabayt
>>> 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
alien308
Внутри eval не работает ‘=’. Что это значит?
terabayt
в 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 предназначен чтобы вычислить выражение в строке и возвратить результат!
alien308
Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB