कोड के लिए से 'प्रिंट' कॉल कर सकते हैं:क्यों मैं 'eval'
#!/usr/bin/python
src = """
print '!!!'
import os
"""
obj = compile(src, '', 'exec')
eval(obj, {'__builtins__': False})
मैं उत्पादन:
!!!
Traceback (most recent call last):
File "./test.py", line 9, in <module>
eval(obj, {'__builtins__': False})
File "", line 3, in <module>
ImportError: __import__ not found
दोनों 'प्रिंट' और 'आयात' भाषा निर्माण कर रहे हैं। 'Eval' 'आयात' का उपयोग क्यों प्रतिबंधित करता है लेकिन 'प्रिंट' को प्रतिबंधित नहीं करता है?
पीएस मैं पाइथन 2.6
अद्यतन का उपयोग कर रहा हूं: प्रश्न नहीं है "आयात क्यों काम नहीं करता है?" लेकिन "प्रिंट क्यों काम करता है?" क्या कुछ वास्तुकला प्रतिबंध हैं या कुछ और?
प्रश्न नहीं है "आयात क्यों काम नहीं करता है?" लेकिन "प्रिंट क्यों काम करता है?" – Tiendil
प्रिंट पायथन 3k में एक विधि बन जाता है, मुझे लगता है कि यह अब और काम नहीं करेगा :) – Sacha