# เครื่องมือจัดรูปแบบ Python

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

วางโค้ด Python แล้วรับผลลัพธ์ที่จัดรูปแบบโดย Black ตามความยาวบรรทัดและตัวเลือกของคุณ ข้อผิดพลาดทางไวยากรณ์จะแสดงบรรทัดที่แน่นอน โค้ดของคุณจะไม่ถูกรันหรือจัดเก็บ

เครื่องมือนี้รัน Black ซึ่งเป็นตัวจัดรูปแบบที่โปรเจกต์ Python ส่วนใหญ่เห็นพ้องต้องกันอยู่แล้ว กับสิ่ง ที่คุณวาง โดยใช้ความยาวบรรทัดและการจัดการเครื่องหมายคำพูดที่คุณเลือก หากไฟล์แยกวิเคราะห์ไม่ได้ มันจะ บอกว่าอยู่ที่บรรทัดไหน และหากจัดรูปแบบไว้แล้ว มันก็จะบอกเช่นกัน แทนที่จะทำเหมือนว่าได้ทำอะไรไปแล้ว

## การทำงาน

- จัดรูปแบบด้วย Black ที่ 79, 88, 100 หรือ 120 คอลัมน์
- โหมด "ตรวจสอบเท่านั้น": รู้ว่าไฟล์จะเปลี่ยนหรือไม่โดยไม่ต้องเปลี่ยนมัน
- คงรูปแบบเครื่องหมายคำพูดของคุณเอง หรือให้ Black ทำให้เป็นมาตรฐาน
- ปฏิบัติตามหรือไม่สนใจคอมมาปิดท้ายมหัศจรรย์ที่ทำให้คอลเลกชันถูกขยายไว้
- เลือกเวอร์ชันของ Python ที่เจาะจงเมื่อไวยากรณ์ขึ้นอยู่กับเวอร์ชัน
- ข้อผิดพลาดทางไวยากรณ์รายงานบรรทัด คอลัมน์ และโค้ดโดยรอบ
- รายงานว่ามีกี่บรรทัดที่ถูกเพิ่มและลบ รวมถึงรูปร่างของไฟล์

## วิธีใช้งาน

1. วางโค้ด หรือทั้งไฟล์
2. เลือกความยาวบรรทัดและตัวเลือกที่คุณสนใจ
3. กดจัดรูปแบบ จากนั้นคัดลอกหรือดาวน์โหลดผลลัพธ์

## โค้ดของคุณไม่ถูกรันเลย

การจัดรูปแบบ Python ไม่จำเป็นต้องรันมัน โค้ดถูกแยกวิเคราะห์เป็นต้นไม้ไวยากรณ์และเขียนขึ้นใหม่ จากต้นไม้นั้น ทั้งหมดอยู่ในหน่วยความจำ มันไม่ถูกเขียนลงไฟล์ ไม่ถูกนำเข้า และไม่ถูกรันเลย ตัวจัดรูปแบบที่รันสิ่งที่คุณวางไว้จะเป็นเชลล์ระยะไกลที่มีกล่องข้อความ

## ทำไมต้อง Black ไม่ใช่ความเห็นของเราเอง

Black เป็นการแปลงที่รักษา AST ไว้ โค้ดที่ออกมาคือโปรแกรมเดียวกันกับโค้ดที่เข้ามา คุณสมบัตินั้นคือเหตุผลทั้งหมดที่ทำให้ไว้ใจตัว จัดรูปแบบได้ และเป็นเหตุผลที่ไม่มีโมเดลภาษาเข้ามาเกี่ยวข้องในส่วนใดของเครื่องมือนี้เลย โมเดลที่ถูกขอให้จัดโค้ดให้เรียบร้อยจะเขียนบรรทัดใหม่เป็นครั้งคราวในระหว่างทำ และการเปลี่ยนแปลง เงียบ ๆ ต่อโค้ดที่ทำงานได้อยู่แล้วคือความล้มเหลวเพียงอย่างเดียวที่ตัวจัดรูปแบบรับไม่ได้

## ตรวจสอบเท่านั้น

คำถามเดียวกับที่ CI ถาม ไฟล์นี้จะเปลี่ยนหรือไม่ โหมดตรวจสอบจะส่งโค้ดต้นฉบับของคุณกลับมาโดย ไม่แก้ไข และรายงานว่า Black จะจัดรูปแบบมันใหม่หรือไม่ และกี่บรรทัด นี่เป็นวิธีที่รวดเร็วในการ หาว่าทำไมไปป์ไลน์ล้มเหลวกับไฟล์ที่คุณไม่สามารถทำซ้ำได้ในเครื่องของคุณเอง

## magic trailing comma และ fmt: off พร้อมตัวอย่าง

เครื่องหมายจุลภาคหลังรายการสุดท้ายบอกให้ Black คงการเรียกฟังก์ชันหรือคอลเลกชันไว้บรรทัดละหนึ่งรายการ: result = compute(alpha, beta,) จะกลับมาเป็นสี่บรรทัด โดย alpha, และ beta, อยู่คนละบรรทัด ถ้าติ๊ก ละเว้น magic trailing comma อินพุตเดียวกันจะกลายเป็น 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 ของตัวเอง

**ทำไมมันไม่จัดรูปแบบไฟล์ของฉันใหม่เลย**

เพราะมันถูกจัดรูปแบบไว้แล้วที่ความยาวบรรทัดที่คุณเลือก เครื่องมือนี้บอกว่า "จัดรูปแบบไว้แล้ว" แทนที่จะส่งสำเนากลับมาเงียบ ๆ

**มันเรียงลำดับ import ของฉันหรือไม่**

ไม่ การเรียงลำดับ import เป็นงานของ isort ไม่ใช่ Black และทั้งสองไม่เห็นด้วยกันบ่อยพอที่การทำแบบนั้นที่นี่จะทำให้คุณประหลาดใจ

**มันจัดรูปแบบไฟล์ที่มีข้อผิดพลาดทางไวยากรณ์ได้หรือไม่**

ไม่มีตัวจัดรูปแบบใดทำได้ ไฟล์ที่แยกวิเคราะห์ไม่ได้ไม่มีโครงสร้างให้เขียนใหม่ คุณจะได้บรรทัด คอลัมน์ และโค้ดโดยรอบเพื่อให้คุณแก้ไขและลองใหม่ได้

**มันเป็นไปตาม PEP 8 หรือไม่**

Black เข้ากันได้กับ PEP 8 โดยมีข้อยกเว้นที่รู้จักกันดีข้อหนึ่ง ความยาวบรรทัดเริ่มต้นคือ 88 ไม่ใช่ 79 เลือก 79 ในตัวเลือกความยาวบรรทัดหากคุณต้องการตัวเลขที่เข้มงวดกว่า

**จัดรูปแบบไฟล์ได้ใหญ่แค่ไหน**

สูงสุด 400,000 อักขระต่อครั้ง การจัดรูปแบบจะหยุดหลัง 10 วินาที ซึ่งเกิดเฉพาะกับไฟล์ที่ใหญ่มากหรือซ้ำกันมาก และแต่ละที่อยู่ IP จัดรูปแบบได้ 30 ครั้งทุก 10 นาที

**จะได้การจัดรูปแบบเดียวกันในเอดิเตอร์ pre-commit หรือ CI ได้อย่างไร**

หน้านี้ใช้ Black และแสดงเวอร์ชันไว้ที่ส่วนหัวของหน้าบนหน้าจอกว้าง Black อ่านการตั้งค่าโปรเจกต์จาก pyproject.toml ในส่วน [tool.black] โดยใช้ชื่อตัวเลือกแบบยาว ได้แก่ line-length = 88 สำหรับ "ความยาวบรรทัด" ที่คุณเลือก, skip-string-normalization = true หากคุณติ๊ก "คงอัญประกาศเดิมไว้", skip-magic-trailing-comma = true สำหรับ "ละเว้น magic trailing comma" และ target-version = ["py311"] สำหรับค่าที่กำหนดตายตัวใน "เป้าหมาย" ปลั๊กอินของเอดิเตอร์และ hook ของ pre-commit อ่านไฟล์เดียวกันนี้ รัน black . เพื่อจัดรูปแบบ และ black --check --diff . ใน CI ซึ่งจะไม่แก้ไขอะไรและจบด้วยรหัส 1 เมื่อมีไฟล์ที่จะถูกจัดรูปแบบใหม่ ควรตรึงเวอร์ชัน Black ให้ตรงกับหน้านี้ เพราะรุ่นแรกของแต่ละปีปฏิทินอาจเปลี่ยนสไตล์แบบเสถียรได้

**ผลลัพธ์เหมือนกับตัวจัดรูปแบบของ Ruff (ruff format) หรือไม่**

เกือบทุกครั้ง แต่ไม่ได้ตรงกันทุกไบต์ ตัวจัดรูปแบบของ Ruff ออกแบบมาให้ใช้แทน Black ได้ทันที และเอกสารของ Ruff ระบุว่าในโปรเจกต์ใหญ่ที่จัดรูปแบบด้วย Black อยู่แล้ว เช่น Django และ Zulip บรรทัดมากกว่า 99.9% ออกมาเหมือนกัน แต่จะต่างกันมากขึ้นกับโค้ดที่ไม่เคยผ่าน Black โดยเฉพาะคอมเมนต์ท้ายบรรทัด และเอกสารของ Ruff ระบุความแตกต่างที่ตั้งใจไว้ ความยาวบรรทัดเริ่มต้นก็เป็น 88 เช่นกัน ตั้งได้ด้วย line-length ใน [tool.ruff] ส่วน quote-style = "preserve" ใน [tool.ruff.format] ตรงกับ "คงอัญประกาศเดิมไว้" และ skip-magic-trailing-comma = true ตรงกับ "ละเว้น magic trailing comma" หาก CI ของคุณรัน ruff format --check ให้ทดสอบไฟล์ด้วย Ruff ไม่ใช่ด้วยหน้านี้

## เพิ่มเติมใน เครื่องมือนักพัฒนา

- [เครื่องมือดู HTML](https://discuvr.org/html-viewer/?hl=th)
- [เครื่องคำนวณซับเน็ต IP](https://discuvr.org/ip-subnet-calculator/?hl=th)
- [เข้ารหัส / ถอดรหัส](https://discuvr.org/encode-decode/?hl=th)
- [ตัวแปลงไทม์สแตมป์ Unix](https://discuvr.org/timestamp-converter/?hl=th)

## มักใช้ร่วมกับ

- [เปรียบเทียบข้อความ](https://discuvr.org/text-diff/?hl=th)
- [ตัวแปลงตัวพิมพ์และเครื่องมือจัดการบรรทัด](https://discuvr.org/case-converter/?hl=th)
- [Study Buddy](https://discuvr.org/study-buddy/?hl=th)

---

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.
