__Future__ इंपोर्ट प्रिंट_फंक्शन से पाइथन 2-स्टाइल प्रिंट क्यों तोड़ता है? [बन्द है]


135

मैं अजगर के साथ प्रोग्रामिंग में नया हूं, और मैं एक विभाजक और अंत के साथ प्रिंट करने की कोशिश कर रहा हूं लेकिन यह अभी भी मुझे एक सिंटैक्स त्रुटि दे रहा है।

मैं अजगर 2.7 का उपयोग कर रहा हूं।

यहाँ मेरा कोड है:

from __future__ import print_function
import sys, os, time

for x in range(0,10):
    print x, sep=' ', end=''
    time.sleep(1)

और यहाँ त्रुटि है:

$ python2 xy.py
  File "xy.py", line 5
    print x, sep=' ', end=''
          ^
SyntaxError: invalid syntax
$

4
आपने एक फ़ंक्शन के रूप में प्रिंट आयात किया है लेकिन आप अभी भी इसे एक बयान के रूप में मान रहे हैं
jonrsharpe

4
आप कोष्ठक के बिना प्रिंट नहीं कर सकते क्योंकि आपने प्रिंट को एक फ़ंक्शन प्रिंट (आर्ग) के रूप में बदल दिया है
चार्ली पार्कर

जवाबों:


210

सबसे पहले, from __future__ import print_functionआपकी स्क्रिप्ट में कोड की पहली पंक्ति होने की आवश्यकता है (नीचे कुछ अपवादों को छोड़कर)। सभी में से एक, जैसा कि अन्य जवाबों ने कहा है, आपको printअब एक फ़ंक्शन के रूप में उपयोग करना होगा । यह पूरी बात है from __future__ import print_function; पायथन 3 से पायथन 2.6+ में print फंक्शन लाने के लिए ।

from __future__ import print_function

import sys, os, time

for x in range(0,10):
    print(x, sep=' ', end='')  # No need for sep here, but okay :)
    time.sleep(1)

__future__बयानों को फ़ाइल के शीर्ष के पास होना चाहिए क्योंकि वे भाषा के बारे में मूलभूत चीजों को बदलते हैं, और इसलिए संकलक को शुरुआत से उनके बारे में जानना आवश्यक है। से प्रलेखन :

एक भविष्य कथन को विशेष रूप से संकलित समय पर पहचाना और व्यवहार किया जाता है: कोर कोड के शब्दार्थों में परिवर्तन अक्सर विभिन्न कोड उत्पन्न करके कार्यान्वित किए जाते हैं। यह भी हो सकता है कि एक नई सुविधा नए असंगत सिंटैक्स (जैसे एक नया आरक्षित शब्द) का परिचय देती है, इस मामले में संकलक को मॉड्यूल को अलग तरीके से पार्स करने की आवश्यकता हो सकती है। ऐसे फैसलों को रनटाइम तक नहीं धकेला जा सकता है।

दस्तावेज़ीकरण में यह भी उल्लेख किया गया है कि केवल वही चीजें जो किसी __future__कथन को पूर्ववर्ती कर सकती हैं, वे हैं मॉड्यूल डॉकस्ट्रिंग, टिप्पणियां, रिक्त रेखाएं, और भविष्य के अन्य कथन।


1
First of all, from __future__ import print_function needs to be the first line of code in your script , क्या मैं जान सकता हूं क्यों?
अविनाश राज

1
@UHMIS, करो end=' '
साइफेज

14
प्रलेखन (द्वारा कहा गया है docs.python.org/2/reference/simple_stmts.html#future ) यह है नहीं होने के लिए पहले : लाइन A future statement must appear near the top of the module. The only lines that can appear before a future statement are: the module docstring (if any), comments, blank lines, and other future statements.
ngulam

1
@ngulam, मैंने इसका उल्लेख करने के लिए संपादन किया, लेकिन यह पहले पैराग्राफ में स्पष्ट नहीं था, इसलिए मैंने यह तय किया। इस पर ध्यान दिलाने के लिए धन्यवाद।
साइप्रस एज़

1
@ अविनाशराज, मुझे नहीं पता; आपको UHMIS पूछना होगा। लेकिन जैसा कि मैंने आपके जवाब के लिए एक टिप्पणी में कहा था, शायद ओपी ने एक बदलाव किया और इसका उल्लेख नहीं किया। और ओपी की पहली टिप्पणी थी कि अभी भी एक त्रुटि थी।
साइफेज
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.