कोष्ठक के बिना पायथन 3 प्रिंट


87

printअजगर 2 में एक बयान हुआ करता था, लेकिन अब यह एक समारोह है कि अजगर 3 में कोष्ठक की आवश्यकता बन गया।

क्या पाइथन 3 में इन कोष्ठकों को दबाने के लिए कुछ भी है? हो सकता है कि प्रिंट फ़ंक्शन को फिर से परिभाषित करके?

तो, के बजाय

print ("Hello stack over flowers")

मैं टाइप कर सकता था:

print "Hello stack over flowers"

4
क्या कोई विशेष कारण है जो आप ऐसा करना चाहते हैं? या आप सिर्फ उत्सुक हैं? यह आम तौर पर कीवर्ड को फिर से परिभाषित करने के लिए भले ही यह अच्छा अभ्यास नहीं है है संभव।
माइकल एस प्रिज़

6
जिज्ञासा से बाहर, लोग इसे क्यों वोट कर रहे हैं? मुझे समझ नहीं आ रहा है कि यह एसओ दिशानिर्देशों के बाहर कैसे है।
माइकल एस प्रिज़

22
मैं पायथन 3 का उपयोग कर रहा हूं। हालांकि, ()हर समय टाइप करना अनावश्यक रूप से समय लेने वाला है।
लौरा

7
माइकल, तुम इतने दयालु नहीं लगते। क्या मैंने कुछ गलत किया? मैं एक ईमानदार सवाल पूछ रहा हूँ, भले ही आपके लिए एक वर्कअराउंड कोडिंग मानकों की तरह लगता है। यदि यह "मानक" होता तो वे इसे पायथन 3 में नहीं बदलते, क्या वे ऐसा करते?
लौरा

4
मुझे लगता है कि मुझे "भाषा विनिर्देशों" कहा जाना चाहिए था :) मैं माफी मांगता हूं अगर मैंने जो कुछ भी कहा वह अपमानजनक है। मैं केवल एसओ से सबसे अधिक मदद करने की कोशिश कर रहा हूं।
माइकल एस प्रिज़ ऑग

जवाबों:


26

हालाँकि आपको पायथन 3 में प्रिंट करने के लिए कोष्ठकों की एक जोड़ी की आवश्यकता होती है, आपको printइसके बाद किसी स्थान की आवश्यकता नहीं है , क्योंकि यह एक फ़ंक्शन है। तो यह केवल एक अतिरिक्त चरित्र है।

यदि आप अभी भी "अनावश्यक रूप से समय लेने वाली" होने के लिए कोष्ठक की एक जोड़ी टाइपिंग पाते हैं, तो आप p = printकुछ पात्रों को इस तरह से कर और बचा सकते हैं । क्योंकि आप फ़ंक्शन के नए संदर्भों को बाध्य कर सकते हैं, लेकिन कीवर्ड्स के लिए नहीं, आप केवल printPython 3 में इस शॉर्टकट को कर सकते हैं ।

अजगर 2:

>>> p = print
  File "<stdin>", line 1
    p = print
            ^
SyntaxError: invalid syntax

अजगर 3:

>>> p = print
>>> p('hello')
hello

यह आपके कोड को कम पठनीय बना देगा, लेकिन जब भी आप कुछ प्रिंट करते हैं, तो आप उन कुछ वर्णों को सहेज लेंगे।


साभार टाइगरहॉकटी 3 हां, इससे समय की बचत होगी, लेकिन जैसा आपने कहा कि यह कोड को कम पठनीय बना देगा।
लौरा

@ टाइगरहॉक यह वर्क आईडी आईडीई के साथ संगत नहीं है
चंद्र शेखर

2
@ चंद्रशेखर - क्या आईडीई? तुम्हारी किस बारे में बोलने की इच्छा थी? आईडीई की पसंद से प्रभावित होने का कोई कारण नहीं है।
टाइगरहॉकट 3

1
@ TigerhawkT3 मैंने ग्रहण में वही आजमाया जहाँ यह काम करने में असफल रही
चन्द्रशेखर

5
@ चंद्रशेखर - और यह किस तरह से "संगत नहीं" है? जब आप इसे आज़माते हैं तो क्या होता है?
टाइगरहॉक 3

8

printपायथन 3 कोड में कोष्ठक के बिना उपयोग करना एक अच्छा विचार नहीं है। और न ही एलियैस बना रहा है, आदि यदि यह एक सौदा ब्रेकर है, तो पायथन 2 का उपयोग करें।

हालांकि, printबिना कोष्ठक इंटरैक्टिव खोल में उपयोगी हो सकता है। यह वास्तव में वर्णों की संख्या को कम करने का मामला नहीं है, बल्कि हर बार जब आप डिबगिंग करते समय कुछ प्रिंट करना चाहते हैं, तो शिफ्ट को दबाने की आवश्यकता से बचें। यदि आप एक स्लैश के साथ लाइन शुरू करते हैं तो IPython आपको कोष्ठक का उपयोग किए बिना कार्य करने देता है:

Python 3.6.6 (default, Jun 28 2018, 05:43:53)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: var = 'Hello world'

In [2]: /print var
Hello world

और यदि आप चालू करते हैं autocall, तो आपको स्लैश टाइप करने की भी आवश्यकता नहीं होगी:

In [3]: %autocall
Automatic calling is: Smart

In [4]: print var
------> print(var)
Hello world

एक विकल्प के रूप में अजगर 2 का उपयोग करना, जैसा कि पोस्ट द्वारा सुझाया गया है, जल्द ही अधिक संभव नहीं है।
अरनौद

6

मैक्रो बनाने के लिए ऑटोहोटेक का उपयोग करें। AHK स्थापित करने के लिए स्वतंत्र और मृत सरल है। www.autohotkey.com

आप मैक्रो असाइन कर सकते हैं, कहते हैं, alt-p:

!p::send print(){Left}

यह ऑल-पी पुट आउट प्रिंट () बना देगा और आपके कर्सर को परेंस के अंदर ले जाएगा।

या, और भी बेहतर, अपनी समस्या को सीधे हल करने के लिए , आप एक ऑटोरप्लेस को परिभाषित करते हैं और इसके दायरे को सीमित करते हैं जब खुली फ़ाइल में .py होता है:

#IfWinActive .py            ;;; scope limiter
:b*:print ::print(){Left}   ;;; I forget what b* does. The rest should be clear 
#IfWinActive                ;;; remove the scope limitation

यह एक गारंटीकृत, दर्द रहित, पारदर्शी समाधान है।


4

नहीं। यह हमेशा पायथन 3 में एक वाक्यविन्यास त्रुटि होगी। पायथन 3 में 2to3अपने कोड का अनुवाद करने के लिए उपयोग करने पर विचार करें


11
मैं पायथन 3 का उपयोग कर रहा हूं। मैं हर समय कोष्ठक टाइपिंग से बचना चाहता हूं। shift+ 9..... फिर shift+ 0थकावट है।
लौरा

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

जाहिरा तौर पर, कोई भी यूपी तीर की सादगी की सराहना नहीं करता है, जब वह 'इतिहास को याद करता है' का उपयोग करता है। यह आसान है। उसी तरह से print, यह बेकार डिबगिंग तकनीकों जैसे कि कोष्ठक की एक जोड़ी के बिना अप्रभावित होना चाहिए।
जॉन ग्रीन

इसके लिए तर्क हैं, जो कि पायथन 3 की शुरुआत से पहले बड़े पैमाने पर पूर्वाभ्यास किए गए थे। जबकि अतिरिक्त कोष्ठक हमारे लिए खराब टाइपिस्टों के लिए असुविधाजनक हो सकते हैं, फिर से परिभाषित करने की क्षमता द्वारा पेश किए गए लचीलेपन को printइसके लायक महसूस किया गया था, मुझे विश्वास है।
होल्डनवेब

4

AHK स्क्रिप्ट एक महान विचार है। बस उन लोगों के लिए जिन्हें मुझे अपने काम करने के लिए इसे थोड़ा बदलने की जरूरत थी:

SetTitleMatchMode,2         ;;; allows for a partial search 
#IfWinActive, .py           ;;; scope limiter to only python files
:b*:print ::print(){Left}   ;;; I forget what b* does
#IfWinActive                ;;; remove the scope limitation

1

आप ऐसा नहीं कर सकते हैं, क्योंकि आप इसे बिना किसी कोष्ठक के कर सकते हैं, क्योंकि यह एक कीवर्ड है, जैसे कि पायथन 2. आप मैन्युअल रूप से कीवर्ड को परिभाषित नहीं कर सकते, इसलिए नहीं।


1

मैंने अंततः इन सभी पुराने पाइथन 2 उदाहरण स्क्रिप्ट में बदलने के लिए रेगेक्स का पता लगाया। अन्यथा 2to3.py का उपयोग करें।

इसे Regexr.com पर आज़माएं, NP ++ (?) में काम नहीं करता:

find:     (?<=print)( ')(.*)(')
replace: ('$2')

चरों के लिए:

(?<=print)( )(.*)(\n)
('$2')\n

लेबल और चर के लिए:

(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n

1
यहाँ एक रेगेक्स है जो एनपी ++(?<=print)( ')(.*)(') \('$2'\)
जैक

धन्यवाद @ जेक, कोष्ठकों से बचने के लिए (बस की जगह में?) .. पता करने के लिए अच्छा है। इसके अलावा, मुझे एक अर्ध-संबंधित चाल मिली जो Py3 के बीच एक स्थान होने की पहचान करती है print ('string'), ताकि प्रिंट करने योग्य को आसानी से हाइलाइट किया जा सके और फिर कोष्ठकों को जोड़ने के लिए कई संपादकों के ऑटो-पास का उपयोग करें और फिर उद्धरण।
कीमिया

0

पायथन 3 में, प्रिंट एक फ़ंक्शन है, जबकि यह पिछले संस्करणों में एक स्टेटमेंट हुआ करता था। जैसा कि @holdenweb ने सुझाव दिया है, अपने कोड का अनुवाद करने के लिए 2to3 का उपयोग करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.