คำถามติดแท็ก python

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

8
เหตุใดจึงต้องลองใช้ ... ในที่สุดโดยไม่มีข้อห้าม?
try ... catchวิธีที่คลาสสิกในการเขียนโปรแกรมอยู่กับ เมื่อไรที่มันจะเหมาะสมที่จะใช้tryโดยไม่catch? ใน Python ข้อมูลต่อไปนี้ถูกกฎหมายและสมเหตุสมผล: try: #do work finally: #do something unconditional อย่างไรก็ตามรหัสไม่ได้catchอะไรเลย ในทำนองเดียวกันหนึ่งสามารถคิดใน Java มันจะเป็นดังนี้: try { //for example try to get a database connection } finally { //closeConnection(connection) } มันดูดีและทันใดนั้นฉันก็ไม่ต้องกังวลกับข้อยกเว้นประเภทอื่น ๆ ถ้านี่เป็นการฝึกฝนที่ดีการฝึกฝนที่ดีเมื่อไหร่? อีกวิธีหนึ่งคือเหตุผลว่าทำไมนี่ไม่ใช่การปฏิบัติที่ดีหรือไม่ถูกกฎหมาย? (ฉันไม่ได้รวบรวมซอร์สฉันถามเกี่ยวกับมันเนื่องจากอาจเป็นข้อผิดพลาดทางไวยากรณ์สำหรับ Java ฉันตรวจสอบว่า Python รวบรวมแน่นอน) ปัญหาที่เกี่ยวข้องที่ฉันพบคือ: ฉันยังคงเขียนฟังก์ชั่น / วิธีในตอนท้ายของมันจะต้องกลับบางสิ่งบางอย่าง อย่างไรก็ตามอาจอยู่ในสถานที่ที่ไม่ควรไปถึงและต้องเป็นจุดกลับ ดังนั้นแม้ว่าฉันจะจัดการกับข้อยกเว้นข้างต้นฉันยังคงกลับมาNULLหรือสตริงที่ว่างในบางจุดในรหัสที่ไม่สามารถเข้าถึงได้มักจะสิ้นสุดของวิธีการ / ฟังก์ชั่น …

5
Python ตีความหรือเรียบเรียงหรือไม่?
นี่เป็นเพียงความสงสัยในขณะที่ฉันอ่านเกี่ยวกับภาษาที่แปลและเรียบเรียง Rubyไม่ต้องสงสัยเลยว่าเป็นภาษาที่ตีความเนื่องจากซอร์สโค้ดถูกประมวลผลโดยล่าม ณ จุดดำเนินการ ในทางตรงกันข้ามCเป็นภาษาที่รวบรวมเป็นหนึ่งจะต้องรวบรวมซอร์สโค้ดแรกตามเครื่องแล้วดำเนินการ ผลลัพธ์นี้เป็นการดำเนินการที่รวดเร็วยิ่งขึ้น ตอนนี้มาที่Python : รหัสหลาม ( somefile.py ) เมื่อนำเข้าสร้างไฟล์ ( somefile.pyc ) ในไดเรกทอรีเดียวกัน ให้เราบอกว่าการนำเข้าจะทำในเปลือกหลามหรือโมดูล django หลังจากนำเข้าฉันเปลี่ยนรหัสเล็กน้อยและดำเนินการฟังก์ชั่นที่นำเข้าอีกครั้งเพื่อค้นหาว่ามันยังคงใช้รหัสเดิมอยู่ สิ่งนี้ชี้ให้เห็นว่าไฟล์ * .pyc เป็นไฟล์ไพ ธ อนที่คอมไพล์เหมือนกับไฟล์ที่สร้างขึ้นหลังจากการคอมไพล์ไฟล์ C ถึงแม้ว่าฉันจะไม่สามารถเรียกใช้ไฟล์ * .pyc ได้โดยตรง เมื่อดำเนินการไฟล์ python (somefile.py) โดยตรง (./somefile.py หรือ python somefile.py) จะไม่มีการสร้างไฟล์. pyc และรหัสจะถูกดำเนินการตามที่ระบุถึงพฤติกรรมที่ตีความ สิ่งเหล่านี้แนะนำให้รวบรวมรหัสไพ ธ อนทุกครั้งที่มีการนำเข้าในกระบวนการใหม่เพื่อสร้าง. pyc ในขณะที่มันถูกตีความเมื่อดำเนินการโดยตรง ดังนั้นฉันควรใช้ภาษาประเภทใด ตีความหรือรวบรวม? และประสิทธิภาพของมันเปรียบเทียบกับภาษาที่แปลและเรียบเรียงได้อย่างไร …

3
ทำไม Python เขียนใน C และไม่ใช่ C ++
ในแบบฝึกหัดของ Python ผู้คนสามารถอ่านได้ว่าการนำ Python ไปใช้ใน C คือ ในทางกลับกันการใช้งาน Python ที่เขียนด้วยภาษา C, (... ) ฉันสงสัยมากว่าทำไม Python เขียนใน C ไม่ใช่ C ++ ฉันต้องการทราบเหตุผลของการตัดสินใจครั้งนี้และคำตอบควรได้รับการสนับสนุนโดยการอ้างอิงทางประวัติศาสตร์ (และไม่ใช่ความคิดเห็นตาม)

7
ความคิดที่แย่คือการใช้ไฟล์ Python เป็นไฟล์กำหนดค่า
ฉันใช้ไฟล์JSONเพื่อกำหนดค่าแอปพลิเคชันของฉันเสมอ ฉันเริ่มใช้พวกเขาตั้งแต่ตอนที่ฉันเขียนโค้ด Java จำนวนมากและตอนนี้ฉันทำงานเป็นหลักเกี่ยวกับการพัฒนา Python ด้านเซิร์ฟเวอร์และวิทยาศาสตร์ข้อมูลและฉันไม่แน่ใจว่าJSONเป็นวิธีที่เหมาะสมที่จะไปอีกต่อไป ฉันเห็น Celery ใช้ไฟล์ Python ที่แท้จริงเพื่อกำหนดค่า ตอนแรกฉันสงสัยเกี่ยวกับมัน แต่แนวคิดของการใช้โครงสร้างข้อมูล Python ง่าย ๆ สำหรับการกำหนดค่าเริ่มที่จะเพิ่มขึ้น ข้อดีบางประการ: โครงสร้างข้อมูลจะเหมือนกับที่ฉันเขียนตามปกติดังนั้นฉันไม่จำเป็นต้องเปลี่ยนกรอบความคิด IDE ของฉัน (PyCharm) เข้าใจการเชื่อมต่อระหว่างการกำหนดค่าและรหัส Ctrl+ Bทำให้สามารถข้ามไปมาระหว่างการกำหนดค่าและรหัสได้อย่างง่ายดาย ฉันไม่ต้องการที่จะทำงานกับที่ไม่จำเป็น IMO เข้มงวดJSON ฉันกำลังดูคุณสองคำพูดไม่มีเครื่องหมายจุลภาคต่อท้ายและไม่มีความคิดเห็น ฉันสามารถเขียนการกำหนดค่าการทดสอบในแอปพลิเคชันที่ฉันกำลังทำงานอยู่จากนั้นจึงย้ายพวกเขาไปยังไฟล์กำหนดค่าโดยไม่ต้องทำการแปลงใด ๆ และการแยกวิเคราะห์ JSON เป็นไปได้ที่จะทำสคริปต์ง่าย ๆ ในไฟล์กำหนดค่าถ้าจำเป็นจริงๆ (แม้ว่าสิ่งนี้ควรมี จำกัด มาก) ดังนั้นคำถามของฉันคือถ้าฉันสลับฉันจะยิงตัวเองในเท้าได้อย่างไร ไม่มีผู้ใช้ที่ไม่มีทักษะจะใช้ไฟล์กำหนดค่า การเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับไฟล์การกำหนดค่าปัจจุบันมีความมุ่งมั่นที่จะใช้ Git และถูกนำไปใช้กับเซิร์ฟเวอร์ของเราซึ่งเป็นส่วนหนึ่งของการปรับใช้อย่างต่อเนื่อง ไม่มีการเปลี่ยนแปลงการกำหนดค่าด้วยตนเองเว้นแต่จะมีเหตุฉุกเฉินหรืออยู่ระหว่างการพัฒนา (ฉันเคยพิจารณาYAMLแต่มีบางอย่างเกี่ยวกับมันทำให้ฉันรำคาญดังนั้นสำหรับตอนนี้มันอยู่นอกโต๊ะอเมริกัน)

5
เป็นการดีที่จะประกาศตัวแปรอินสแตนซ์ว่าไม่มีในคลาสใน Python หรือไม่?
พิจารณาคลาสต่อไปนี้: class Person: def __init__(self, name, age): self.name = name self.age = age เพื่อนร่วมงานของฉันมักจะนิยามเช่นนี้: class Person: name = None age = None def __init__(self, name, age): self.name = name self.age = age เหตุผลหลักสำหรับสิ่งนี้คือตัวเลือกที่แก้ไขจะแสดงคุณสมบัติของการเติมข้อความอัตโนมัติ Noneส่วนตัวผมไม่ชอบหลังหนึ่งเพราะมันทำให้รู้สึกว่าชั้นมีคุณสมบัติเหล่านั้นตั้งค่าให้ไม่มี อันไหนจะเป็นการฝึกฝนที่ดีกว่าและด้วยเหตุผลอะไร
68 python 

5
ทำไมต้องเก็บฟังก์ชั่นภายในพจนานุกรมหลาม?
ฉันเป็นผู้เริ่มต้นงูใหญ่และฉันเพิ่งเรียนรู้เทคนิคที่เกี่ยวข้องกับพจนานุกรมและฟังก์ชั่น ไวยากรณ์เป็นเรื่องง่ายและดูเหมือนว่าเป็นเรื่องเล็กน้อย แต่ความรู้สึกของฉันหลามรู้สึกเสียวซ่า มีบางอย่างบอกฉันว่านี่เป็นแนวคิดที่ลึกและไพเราะมากและฉันก็ไม่เข้าใจถึงความสำคัญของมัน ใครสามารถใส่ชื่อให้กับเทคนิคนี้และอธิบายว่ามันมีประโยชน์หรือไม่? เทคนิคคือเมื่อคุณมีพจนานุกรมไพ ธ อนและฟังก์ชั่นที่คุณตั้งใจจะใช้ คุณแทรกองค์ประกอบพิเศษลงใน dict ที่มีค่าเป็นชื่อของฟังก์ชั่น เมื่อคุณพร้อมที่จะเรียกฟังก์ชั่นที่คุณออกโทรทางอ้อมโดยอ้างถึงองค์ประกอบ Dict ไม่ใช่ฟังก์ชั่นตามชื่อ ตัวอย่างที่ฉันใช้งานมาจาก Learn Python the Hard Way, 2nd Ed (นี่เป็นรุ่นที่มีให้เมื่อคุณสมัครใช้งานผ่านUdemy.comแต่น่าเสียดายที่เวอร์ชัน HTML ที่ใช้งานได้ฟรีปัจจุบันเป็น Ed 3 และไม่มีตัวอย่างนี้อีกต่อไป) ในการถอดความ: # make a dictionary of US states and major cities cities = {'San Diego':'CA', 'New York':'NY', 'Detroit':'MI'} # define a function …

5
R vs Python สำหรับการวิเคราะห์ข้อมูล [ปิด]
ฉันเขียนโปรแกรมมาประมาณปีแล้วและสนใจการวิเคราะห์ข้อมูลและการเรียนรู้ของเครื่องจักร ฉันกำลังเข้าร่วมหลักสูตรออนไลน์สองสามหลักสูตรและกำลังอ่านหนังสือสองสามเล่ม ทุกสิ่งที่ฉันทำใช้ทั้ง R หรือ Python และฉันกำลังมองหาคำแนะนำว่าควรให้ความสำคัญกับภาษาใดภาษาหนึ่ง (และถ้าเป็นเช่นนั้น) หรือดำเนินการกับทั้งสองอย่าง พวกเขาเติมเต็มซึ่งกันและกันหรือไม่ - ฉันควรพูดถึงว่าฉันใช้ C # ในโรงเรียน แต่ฉันคุ้นเคยกับ Python ผ่านการศึกษาด้วยตนเอง

3
** ชื่ออะไรในไพ ธ อน?
บางครั้งฉันเขียนโปรแกรม Python **เพื่อทำการแปลง ฉันเข้าใจสิ่งที่มันทำ แต่ฉันกำลังจัดการกับโครงสร้างข้อมูลอะไร? A dictและอื่น ๆ คืออะไร? array? มีชื่อสำหรับ**ผู้ประกอบการหรือไม่?

16
ทำไมความนิยมกับงูหลาม? [ปิด]
นอกเหนือจากการถูกรบกวนที่ช่องว่างในฐานะที่เป็นไวยากรณ์ฉันไม่ได้เกลียดฉันเพียงไม่ได้รับความหลงใหลกับงูหลาม ฉันขอขอบคุณบทกวีของ Perl และมีโปรแกรมบริการเว็บที่สวยงามในทุบตีและ korn และ gnuplotshebang ฉันเขียนเอกสารtroffและไม่สนใจ REXX ไม่พบว่ามีประโยชน์อีกหลายปีที่ผ่านมา แต่สิ่งที่มีขนาดใหญ่เกี่ยวกับงูหลาม ? ฉันเห็นรายการงานและผู้สมัครหลายคนพร้อมสิ่งนี้เป็นรางวัล & ถ้วยรางวัลสำหรับประวัติย่อของพวกเขา ฉันเดาในความเป็นจริงฉันพยายามที่จะขายตัวเองในเรื่องนี้ฉันไม่สามารถหาเหตุผลได้
54 python  perl  bash 

5
ฉันควรส่งผ่านชื่อไฟล์เพื่อเปิดหรือเปิดไฟล์หรือไม่
สมมติว่าฉันมีฟังก์ชั่นที่ทำงานกับไฟล์ข้อความตัวอย่างเช่นอ่านจากมันและลบคำว่า 'a' ฉันสามารถผ่านชื่อไฟล์และจัดการเปิด / ปิดในฟังก์ชั่นหรือฉันจะผ่านมันไฟล์ที่เปิดอยู่และคาดหวังว่าใครก็ตามที่เรียกมันจะจัดการกับการปิดมัน วิธีแรกดูเหมือนจะเป็นวิธีที่ดีกว่าในการรับประกันว่าไม่มีไฟล์ใดถูกเปิดทิ้งไว้ แต่ป้องกันไม่ให้ฉันใช้สิ่งต่าง ๆ เช่นวัตถุ StringIO วิธีที่สองอาจเป็นอันตรายเล็กน้อย - ไม่มีทางรู้ว่าไฟล์จะถูกปิดหรือไม่ แต่ฉันจะสามารถใช้วัตถุเหมือนไฟล์ def ver_1(filename): with open(filename, 'r') as f: return do_stuff(f) def ver_2(open_file): return do_stuff(open_file) print ver_1('my_file.txt') with open('my_file.txt', 'r') as f: print ver_2(f) เป็นที่ต้องการโดยทั่วไปหรือไม่ โดยทั่วไปแล้วคาดว่าฟังก์ชั่นจะทำงานในหนึ่งในสองวิธีนี้หรือไม่? หรือควรมีการบันทึกไว้อย่างดีเพื่อให้โปรแกรมเมอร์สามารถใช้ฟังก์ชั่นได้ตามความเหมาะสม?

6
เหตุใดจึงไม่มีภาษาโปรแกรมอื่นที่คอมไพล์ไปยัง Python bytecode
ใน Java มีหลายภาษาที่คอมไพล์ไปยัง Java bytecode และสามารถรันบน JVM - Clojure, Groovy และ Scala เป็นภาษาหลักที่ฉันจำได้จากส่วนบนของหัว อย่างไรก็ตาม Python จะเปลี่ยนเป็น bytecode (ไฟล์. pyc) ก่อนที่จะถูกเรียกใช้โดย Python interpreter ฉันอาจจะงมงาย แต่ทำไมไม่มีภาษาการเขียนโปรแกรมอื่นใดที่คอมไพล์ไปยัง python bytecode? มันเป็นเพียงเพราะไม่มีใครใส่ใจหรือมีข้อ จำกัด หรือสิ่งกีดขวางบางอย่างที่ทำให้ยากลำบาก?

5
ทำไมไพ ธ อนไม่อนุญาตให้แกะหลายสาย?
บางคนสามารถอธิบายเหตุผลที่เป็นรูปธรรมได้ว่าทำไม BDFL จึงเลือกที่จะสร้าง Python lambdas บรรทัดเดียว? ดีจัง: lambda x: x**x ซึ่งส่งผลให้เกิดข้อผิดพลาด: lambda x: x**x ฉันเข้าใจว่าการสร้างแลมบ์ดาหลายบรรทัดจะ "รบกวน" กฎการเยื้องตามปกติและจะต้องเพิ่มข้อยกเว้นเพิ่มเติม แต่นั่นไม่คุ้มกับผลประโยชน์หรือไม่ ดูจาวาสคริปต์เช่น เราจะอยู่ได้อย่างไรถ้าไม่มีฟังก์ชั่นที่ไม่ระบุชื่อ พวกมันขาดไม่ได้ Pythonistas ไม่ต้องการกำจัดการตั้งชื่อฟังก์ชั่นหลายบรรทัดทุกบรรทัดเพื่อส่งผ่านการโต้แย้งใช่ไหม
50 lambda  python 

4
ทำไมตัววนซ้ำใน Python จึงทำให้เกิดข้อยกเว้น?
นี่คือไวยากรณ์สำหรับตัววนซ้ำใน Java (ค่อนข้างคล้ายไวยากรณ์ใน C #): Iterator it = sequence.iterator(); while (it.hasNext()) { System.out.println(it.next()); } ซึ่งทำให้รู้สึก นี่คือไวยากรณ์ที่เทียบเท่าใน Python: it = iter(sequence) while True: try: value = it.next() except StopIteration: break print(value) ฉันคิดว่ามีการใช้ข้อยกเว้นในกรณีพิเศษเท่านั้น ทำไมไพ ธ อนใช้ข้อยกเว้นเพื่อหยุดย้ำ?

6
ฉันจะเรียนรู้ Python จากศูนย์ถึงการพัฒนาเว็บได้อย่างไร [ปิด]
ฉันกำลังมองหาการเรียนรู้ Python สำหรับการพัฒนาเว็บ สมมติว่าฉันมีประสบการณ์การพัฒนาเว็บขั้นพื้นฐานด้วย Java (JSP / Servlets) ฉันคุ้นเคยกับการออกแบบเว็บ (HTML, CSS, JS) แนวคิดการเขียนโปรแกรมพื้นฐานและฉันใหม่กับ Python อย่างสมบูรณ์ การเรียนรู้ Python ในรูปแบบที่มีโครงสร้างซึ่งในที่สุดจะนำฉันไปสู่การพัฒนาเว็บไซต์ด้วย Python และ Django ฉันไม่ต้องรีบทำเว็บแอพพลิเคชั่นใน Python ดังนั้นฉันต้องการเรียนรู้อย่างละเอียดเพื่อไม่ให้เกิดช่องว่างในความรู้เกี่ยวกับเทคโนโลยีที่เกี่ยวข้องกับการพัฒนาเว็บใน Python มีหนังสือทรัพยากรหรือเทคนิคใดบ้างที่จะช่วยฉันในความพยายามของฉัน ฉันควรจะอ่าน / อ่านลำดับใด UPDATE: เมื่อฉันพูดว่าการเรียนรู้ในรูปแบบที่มีโครงสร้างฉันหมายถึงการเริ่มต้นจากพื้นฐานแล้วเรียนรู้เนื้อหาขั้นสูงโดยไม่ต้องทิ้งรายละเอียด / คุณสมบัติที่สำคัญที่ Python มีให้ ฉันต้องการทราบวิธีการใช้สิ่งที่ฉันรู้แล้วในการเขียนโปรแกรมกับ Python

8
ฉันจะเรียนรู้การเขียนรหัส Pythonic อย่างมีประสิทธิภาพได้อย่างไร
ทำการค้นหาโดย Google สำหรับ "pythonic" เผยให้เห็นการตีความที่หลากหลาย หน้าวิกิพีเดียบอกว่า: neologism ทั่วไปในชุมชน Python คือ pythonic ซึ่งสามารถมีความหมายหลากหลายที่เกี่ยวข้องกับรูปแบบของโปรแกรม การบอกว่ารหัสไพ ธ อนิกนั้นคือการพูดว่ามันใช้สำนวนภาษาไพ ธ อนอย่างดีว่าเป็นเรื่องธรรมดาหรือแสดงความคล่องแคล่วในภาษา ในทำนองเดียวกันการพูดถึงส่วนต่อประสานหรือคุณสมบัติทางภาษาที่มันเป็น pythonic ก็คือว่ามันทำงานได้ดีกับ Python idioms ซึ่งการใช้งานนั้นเข้ากันได้ดีกับภาษาที่เหลือ นอกจากนี้ยังกล่าวถึงคำว่า "unpythonic": ในทางตรงกันข้ามเครื่องหมายของรหัส unpythonic คือมันพยายามที่จะเขียนโค้ด C ++ (หรือ Lisp, Perl หรือ Java) ใน Python— นั่นคือให้การถอดความแบบคร่าวๆมากกว่าการแปลแบบสำนวนจากภาษาอื่น แนวคิดของ pythonicity ถูกผูกไว้กับปรัชญาการอ่านที่เรียบง่ายของ Python และหลีกเลี่ยงวิธีการ "มีมากกว่าหนึ่งวิธีที่จะทำ" รหัสที่อ่านไม่ได้หรือสำนวนที่เข้าใจยากนั้นเป็นเสียงที่ไม่ไพเราะ คำว่า "pythonic" หมายถึงอะไร ฉันจะเรียนรู้วิธีการใช้อย่างมีประสิทธิภาพในทางปฏิบัติได้อย่างไร

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.