# Python फ़ॉर्मेटर

URL: https://discuvr.org/python-formatter/?hl=hi
Last updated: 2026-11-07
MCP tool: `format_python`

Python पेस्ट करें, Black आपकी लाइन लंबाई और विकल्पों से फ़ॉर्मेट करेगा। सिंटैक्स एरर पर सटीक लाइन दिखती है। कोड न कभी चलाया जाता है, न सेव होता है।

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

## यह क्या करता है

- 79, 88, 100 या 120 कॉलम पर Black फॉर्मेटिंग।
- "सिर्फ़ जाँचें" मोड: बिना बदले जानें कि कोई फ़ाइल बदलेगी या नहीं।
- अपनी कोटेशन शैली बनाए रखें, या Black को इसे सामान्य करने दें।
- उस जादुई ट्रेलिंग कॉमा का पालन करें या अनदेखा करें जो किसी संग्रह को खुला रखता है।
- जब सिंटैक्स संस्करण-संवेदी हो तो किसी विशेष Python संस्करण को लक्षित करें।
- सिंटैक्स त्रुटियाँ लाइन, कॉलम और आसपास का कोड बताती हैं।
- बताता है कितनी लाइनें जोड़ी और हटाई गईं, साथ ही फ़ाइल का आकार।

## यह कैसे काम करता है

1. कोड पेस्ट करें, या किसी फ़ाइल जितना।
2. एक लाइन लंबाई और जो भी विकल्प आपको चाहिए चुनें।
3. फॉर्मेट दबाएँ, फिर परिणाम कॉपी या डाउनलोड करें।

## आपका कोड कभी चलाया नहीं जाता

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

## Black ही क्यों, अपनी राय क्यों नहीं

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

## सिर्फ़ जाँचें

वही सवाल जो CI पूछता है: क्या यह फ़ाइल बदलेगी? जाँच मोड आपका मूल कोड अछूता लौटाता है और बताता है कि क्या Black इसे फिर से फॉर्मेट करता, और कितनी लाइनों में। यह जानने का तेज़ तरीका है कि कोई पाइपलाइन उस फ़ाइल पर क्यों विफल हो रही है जिसे आप स्थानीय रूप से दोबारा नहीं बना सकते।

## मैजिक ट्रेलिंग कॉमा और fmt: off, हल किए गए उदाहरण

आख़िरी आइटम के बाद का कॉमा Black को बताता है कि कॉल या कलेक्शन को हर लाइन में एक आइटम के साथ रखे: result = compute(alpha, beta,) चार लाइनों में लौटता है, जिसमें alpha, और beta, अपनी-अपनी लाइन पर होते हैं। मैजिक ट्रेलिंग कॉमा को अनदेखा करें पर टिक करें, तो वही इनपुट लाइन की लंबाई में समाने पर result = compute(alpha, beta) बन जाता है। किसी हाथ से संरेखित ब्लॉक, जैसे मैट्रिक्स, को बचाने के लिए उसके ऊपर की लाइन में # fmt: off और नीचे # fmt: on लिखें; Black बीच का सब कुछ वैसा ही छोड़ देता है जैसा आपने लिखा। लाइन के अंत में # fmt: skip सिर्फ़ उसी लाइन को बचाता है। ये Black की अपनी टिप्पणियाँ हैं, इसलिए आपके प्रोजेक्ट का CI जब Black चलाता है तब भी काम करती हैं।

## प्रश्न

**क्या मेरा कोड अपलोड या संग्रहीत होता है?**

इसे सर्वर पर भेजा जाता है, मेमोरी में फॉर्मेट किया जाता है और उसी प्रतिक्रिया में लौटाया जाता है। कुछ भी डिस्क पर नहीं लिखा जाता, कैश नहीं होता या लॉग नहीं होता, और उपयोग रिकॉर्ड केवल गणनाएँ रखता है - आकार, विकल्प, कितनी लाइनें बदलीं - कभी कोड नहीं।

**क्या फॉर्मेटिंग मेरे कोड के काम करने के तरीके को बदलती है?**

नहीं। Black लेआउट बदलता है, व्यवहार नहीं, लेकिन यह सिर्फ़ स्पेस खिसकाने से ज़्यादा करता है। यह फ़ालतू कोष्ठक हटाता है (x = (1) बनता है x = 1), संख्याओं के प्रीफ़िक्स और घातांक छोटे अक्षरों में करता है (0XABCDEF बनता है 0xABCDEF, 1E5 बनता है 1e5), किसी कॉल को कई लाइनों में तोड़ते समय अंत में कॉमा जोड़ता है, लगातार खाली लाइनों को घटाता है और docstring के अंदर के स्पेस काटता है (""" Doc. """ बनता है """Doc.""")। यह आख़िरी बदलाव __doc__ का टेक्स्ट बदल देता है, जो तभी मायने रखता है जब आपका कोड अपने ही docstring पढ़ता हो।

**इसने मेरी फ़ाइल को बिलकुल भी दोबारा फॉर्मेट क्यों नहीं किया?**

क्योंकि यह आपकी चुनी हुई लाइन लंबाई पर पहले से ही फॉर्मेट थी। टूल चुपचाप एक कॉपी लौटाने के बजाय "पहले से फॉर्मेट" कहता है।

**क्या यह मेरे इम्पोर्ट्स को क्रमबद्ध करता है?**

नहीं। इम्पोर्ट्स को क्रमबद्ध करना isort का काम है, Black का नहीं, और दोनों इतनी बार असहमत होते हैं कि यहाँ करने पर यह आपको चौंका देता।

**क्या यह सिंटैक्स त्रुटि वाली फ़ाइल को फॉर्मेट कर सकता है?**

कोई भी फॉर्मेटर नहीं कर सकता - एक अपार्स करने योग्य फ़ाइल में फिर से लिखने के लिए कोई संरचना नहीं होती। आपको लाइन, कॉलम और आसपास का कोड मिलता है ताकि आप इसे ठीक कर सकें और फिर से कोशिश कर सकें।

**क्या यह PEP 8 का पालन करता है?**

Black एक जाने-माने अंतर के साथ PEP 8 के अनुकूल है: इसकी डिफ़ॉल्ट लाइन लंबाई 79 के बजाय 88 है। यदि आपको ज़्यादा सख़्त आंकड़ा चाहिए तो लाइन लंबाई चयनकर्ता में 79 चुनें।

**कितनी बड़ी फ़ाइल फ़ॉर्मेट की जा सकती है?**

एक बार में 400,000 अक्षरों तक। फ़ॉर्मेटिंग 10 सेकंड बाद रोक दी जाती है, जहाँ तक सिर्फ़ बहुत बड़ी या बहुत दोहराव वाली फ़ाइलें पहुँचती हैं, और हर IP पता 10 मिनट में 30 बार फ़ॉर्मेट कर सकता है।

**अपने एडिटर, pre-commit या CI में वही फ़ॉर्मैटिंग कैसे पाऊँ?**

यह पेज Black चलाता है, और चौड़ी स्क्रीन पर उसका वर्शन पेज के हेडर में दिखता है। Black प्रोजेक्ट की सेटिंग्स pyproject.toml के [tool.black] सेक्शन से, विकल्पों के लंबे नामों से पढ़ता है: आपके चुने "पंक्ति लंबाई" के लिए line-length = 88, "मेरे कोट्स बनाए रखें" चुना हो तो skip-string-normalization = true, "मैजिक ट्रेलिंग कॉमा को अनदेखा करें" के लिए skip-magic-trailing-comma = true और "लक्ष्य" में तय वर्शन के लिए target-version = ["py311"]। एडिटर प्लगइन और pre-commit हुक भी यही फ़ाइल पढ़ते हैं। फ़ॉर्मैट करने के लिए black . और CI में black --check --diff . चलाएँ: यह कुछ नहीं बदलता और अगर कोई फ़ाइल दोबारा फ़ॉर्मैट होती तो कोड 1 के साथ बाहर निकलता है। इस पेज वाला ही Black वर्शन पिन करें, क्योंकि हर कैलेंडर वर्ष की पहली रिलीज़ स्थिर स्टाइल बदल सकती है।

**क्या नतीजा Ruff के फ़ॉर्मैटर (ruff format) जैसा ही होता है?**

लगभग हमेशा, पर बाइट-दर-बाइट नहीं। Ruff का फ़ॉर्मैटर Black की सीधी जगह लेने के लिए बना है, और Ruff के दस्तावेज़ बताते हैं कि Django और Zulip जैसे Black से फ़ॉर्मैट किए गए बड़े प्रोजेक्ट पर 99.9% से ज़्यादा लाइनें एक जैसी निकलती हैं। जो कोड कभी Black से नहीं गुज़रा, उस पर, ख़ासकर लाइन के अंत की टिप्पणियों में, फ़र्क ज़्यादा होता है, और उसके दस्तावेज़ जानबूझकर किए गए अंतर गिनाते हैं। उसकी डिफ़ॉल्ट लाइन लंबाई भी 88 है, जो [tool.ruff] में line-length से तय होती है; [tool.ruff.format] में quote-style = "preserve" "मेरे कोट्स बनाए रखें" के बराबर है और skip-magic-trailing-comma = true "मैजिक ट्रेलिंग कॉमा को अनदेखा करें" के बराबर। अगर आपका CI ruff format --check चलाता है, तो फ़ाइल को इस पेज से नहीं, Ruff से जाँचें।

## डेवलपर टूल में और

- [HTML व्यूअर](https://discuvr.org/html-viewer/?hl=hi)
- [IP सबनेट कैलकुलेटर](https://discuvr.org/ip-subnet-calculator/?hl=hi)
- [एन्कोड / डिकोड](https://discuvr.org/encode-decode/?hl=hi)
- [Unix टाइमस्टैम्प कन्वर्टर](https://discuvr.org/timestamp-converter/?hl=hi)

## अक्सर इनके साथ इस्तेमाल होता है

- [टेक्स्ट तुलना](https://discuvr.org/text-diff/?hl=hi)
- [केस कन्वर्टर और लाइन टूल](https://discuvr.org/case-converter/?hl=hi)
- [Study Buddy](https://discuvr.org/study-buddy/?hl=hi)

---

Part of Discuvr (https://discuvr.org/): Discuvr is a collection of free, focused tools for day-to-day professional work - office and data utilities, legal and compliance helpers, privacy and security checks, and developer formatters. Every tool has its own page, and most can also be called from ChatGPT or Claude over MCP.
