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

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

2
ฉันควรตั้งชื่อฟังก์ชั่นที่คืนค่าใน Python อย่างไร?
ฉันสับสนเกี่ยวกับการเลือกชื่อสำหรับการทำงานของฉันในหลาม บางครั้งหลามในตัวฟังก์ชั่นที่มีความจำเป็นเช่นฟังก์ชั่นและวิธีสตริงprint findบางครั้งพวกเขาไม่ได้เช่นlenชื่อของมันไม่ได้เป็นความจำเป็นเช่นcalculate_lenตัวอย่างและไม่ได้เป็นtypefind_type ฉันสามารถเข้าใจว่าprintคืนค่าที่เราไม่ได้ใช้ (เช่นNone) และทำบางสิ่ง (เช่นมันจะแสดงสตริงบนหน้าจอ) ดังนั้นชื่อของมันจึงมีความจำเป็น แต่lenกลับเป็นค่าที่เราใช้และทำอะไรบางอย่าง (เช่นการคำนวณจำนวนรายการที่มีอยู่ในลำดับหรือการแมป.) และชื่อของมันไม่ได้เป็นความจำเป็น บนมืออื่น ๆ , findวิธีสตริง (เป็นlen) ส่งกลับค่าที่เราใช้และไม่บางสิ่งบางอย่างและชื่อของมันคือความจำเป็น สิ่งที่ทำให้คำถามนี้คือฉันใส่สคริปต์ที่เข้ารหัสและถอดรหัสสตริงโดยใช้ Caesar cipher เพื่อตรวจสอบ ผู้วิจารณ์กล่าวว่า: เป็นเพียงความรู้สึก: ฟังก์ชั่นทำสิ่งต่างๆ ดังนั้นชื่อที่ดีสำหรับการทำงานเป็นความจำเป็น: ฉันต้องการใช้แทนrotate_letterrotated_letter rotated_letterส่งคืนสตริงตัวอักษรเดี่ยวที่แทนตัวอักษรที่หมุนด้วยตัวเลข ผมไม่ทราบว่าสิ่งที่ดีกว่าที่ผมใช้rotated_letterเป็นมันจะกลับค่าเช่นrandintฟังก์ชั่นในโมดูลสุ่มgenerate_randintก็เป็นได้ ดังนั้นในกรณีนี้ฉันจะตั้งชื่อฟังก์ชันที่ส่งกลับค่าที่จะใช้อย่างไร ฉันควรจะให้ชื่อมีความจำเป็นหรือเพียงแค่เป็นรูปธรรม ในกรณีอื่น ๆ จะเห็นได้ชัดว่าจะทำอย่างไรเช่นฟังก์ชั่นบูลีนเช่นis_evenและis_palindromeเราก็ทำให้มันเหมือนคำถามใช่ / ไม่ใช่และฟังก์ชั่นที่เพิ่งทำและคืนค่าที่ไม่ได้ใช้ (เช่นNone), printและวิธีรายการsort.

3
ทำไมคุณต้อง“ ตัวเอง” ใน Python เพื่ออ้างถึงตัวแปรอินสแตนซ์?
ฉันเขียนโปรแกรมเป็นภาษาต่างๆเช่น Java, Ruby, Haskell และ Python ฉันต้องสลับไปมาระหว่างหลายภาษาต่อวันเนื่องจากโครงการที่ฉันทำงานอยู่ ตอนนี้ปัญหาคือฉันมักจะลืมที่จะเขียนselfเป็นพารามิเตอร์แรกในนิยามฟังก์ชั่นใน Python เดียวกันกับวิธีการโทรบนวัตถุเดียวกัน ที่กล่าวว่าฉันค่อนข้างประหลาดใจกับวิธีการของ Python นี้ โดยทั่วไปเราต้องพิมพ์ให้มากขึ้นเพื่อทำสิ่งต่าง ๆ ในภาษาอย่าง Java และ Ruby สิ่งต่าง ๆ ทำได้ง่ายโดยอ้างอิงตัวแปรในวัตถุปัจจุบันโดยอัตโนมัติ คำถามของฉันคือเหตุใดจึงselfจำเป็น มันเป็นตัวเลือกสไตล์อย่างหมดจดหรือมีสาเหตุที่ Python ไม่สามารถให้คุณละเว้นselfวิธีที่ Java และ C ++ ปล่อยให้คุณละเว้นได้this?

3
ทำงานผ่านหลักการความรับผิดชอบเดี่ยว (SRP) ใน Python เมื่อการโทรมีราคาแพง
บางจุดฐาน: การเรียกใช้เมธอด Python นั้น "แพง" เนื่องจากเป็นลักษณะที่ตีความได้ ในทางทฤษฎีถ้ารหัสของคุณก็พอง่ายที่จะหมดสภาพรหัสงูใหญ่มีผลกระทบเชิงลบที่นอกเหนือจากการอ่านและนำมาใช้ใหม่ ( ซึ่งเป็นกำไรที่ยิ่งใหญ่สำหรับนักพัฒนาไม่มากสำหรับผู้ใช้ ) หลักการความรับผิดชอบเดี่ยว (SRP) ช่วยให้สามารถอ่านโค้ดง่ายต่อการทดสอบและบำรุงรักษา โครงการมีพื้นหลังแบบพิเศษที่เราต้องการให้สามารถอ่านโค้ดการทดสอบและประสิทธิภาพของเวลาได้ ตัวอย่างเช่นโค้ดเช่นนี้ซึ่งเรียกใช้หลายวิธี (x4) จะช้ากว่าวิธีต่อไปนี้ซึ่งเป็นวิธีเดียว from operator import add class Vector: def __init__(self,list_of_3): self.coordinates = list_of_3 def move(self,movement): self.coordinates = list( map(add, self.coordinates, movement)) return self.coordinates def revert(self): self.coordinates = self.coordinates[::-1] return self.coordinates def get_coordinates(self): return self.coordinates ## …

3
Python - ยืนยันกับ if & return
ฉันกำลังเขียนสคริปต์ที่ทำบางสิ่งบางอย่างกับไฟล์ข้อความ (สิ่งที่ไม่เกี่ยวข้องกับคำถามของฉัน) ดังนั้นก่อนที่ฉันจะทำบางสิ่งกับไฟล์ฉันต้องการตรวจสอบว่ามีไฟล์อยู่หรือไม่ ฉันสามารถทำสิ่งนี้ได้โดยไม่มีปัญหา แต่ปัญหาคือความสวยงาม นี่คือรหัสของฉันใช้สิ่งเดียวกันในสองวิธีที่แตกต่างกัน def modify_file(filename): assert os.path.isfile(filename), 'file does NOT exist.' Traceback (most recent call last): File "clean_files.py", line 15, in <module> print(clean_file('tes3t.txt')) File "clean_files.py", line 8, in clean_file assert os.path.isfile(filename), 'file does NOT exist.' AssertionError: file does NOT exist. หรือ: def modify_file(filename): if not os.path.isfile(filename): return …

8
การสร้างต้นแบบอย่างรวดเร็วนั้นเข้ากับวิธีการแบบเปรียวได้อย่างไร?
ฉันทำงานให้กับ บริษัท ขนาดใหญ่ซึ่งสั่งให้ใช้กระบวนการที่คล่องตัว ตัวอย่างเช่นสำหรับโครงการของเราเราใช้บริการบนคลาวด์ที่มีเป้าหมายเฉพาะในการจัดการการพัฒนาที่คล่องตัว กลุ่มวิศวกรรมเฉพาะที่ฉันทำงานไม่ได้พัฒนาซอฟต์แวร์แบบดั้งเดิม (แต่เราช่วยผลักดันโครงการจากมุมมองที่สูงขึ้น) แต่มันกำลังเปลี่ยนแปลง เรามีโครงการซอฟต์แวร์ที่กำลังมาถึง / วางแผนหลากหลายซึ่งส่วนใหญ่เป็นศูนย์ข้อมูลเช่นเราจะทำการตรวจสอบข้อมูลการรวบรวมรวมและการรายงานบางอย่าง งานอื่น ๆ ที่เกี่ยวข้องกับระบบอัตโนมัติด้วยฮาร์ดแวร์เฉพาะและสถาปัตยกรรมไคลเอนต์ / เซิร์ฟเวอร์ (หลายเทียร์) ฉันจะช่วยในกระบวนการจ้างคนหลายคนและกำหนดแผนการหลายอย่างในการก้าวไปข้างหน้า คำถามของฉันคือการทำต้นแบบอย่างรวดเร็วหรือไม่ (รหัส throwaway) เหมาะกับปรัชญาเปรียว ตัวอย่างเช่นฉันชอบ Python และแพ็คเกจที่หลากหลาย ฉันเห็นความเป็นไปได้ที่จะนำความคิดของเราไปใช้อย่างรวดเร็วด้วยขั้นตอนการทำงานของ Python อย่างไรก็ตามฉันคิดว่าจะมีการรับรู้มากมายที่ Python ไม่ใช่ "คุณภาพระดับองค์กร" และงานนี้ส่วนใหญ่จะต้องเขียนใหม่ใน Java หรือ C ++ อย่างไรก็ตามการสร้างต้นแบบของ Python จะทำให้เรามีข้อบกพร่องมากมายในการทำให้เราสามารถให้ผลลัพธ์ที่แท้จริงได้อย่างรวดเร็ว คุณสามารถรวมต้นแบบอย่างรวดเร็ว - หวังว่าใน Python เข้ากับเวิร์กโฟลว์ที่คล่องตัวในสภาพแวดล้อมขององค์กรหรือไม่

1
การแก้ไข __dict__ ของวัตถุเพื่อกำหนดคุณสมบัติให้ถือว่าเป็น Pythonic หรือไม่?
ฉันมีคลาสที่ขยายวัตถุจากแถวที่พบในฐานข้อมูล (หรือแหล่งอื่นเช่น MongoDB ไฟล์ CSV เป็นต้น) ในการตั้งค่าคุณสมบัติของวัตถุมันไม่สิ่งที่ต้องการหรือself.__dict__.update(**properties)obj.__dict__.update(**properties) สิ่งนี้ถือว่าเป็น Pythonic หรือไม่ นี่เป็นรูปแบบที่ดีที่ฉันควรใช้ต่อไปหรือว่านี่เป็นรูปแบบที่แย่หรือไม่?
12 python 

6
Python มีคุณลักษณะอะไรบ้างที่ทำให้มีลักษณะเฉพาะเป็นภาษาของตัวเอง [ปิด]
ตามที่เป็นอยู่ในปัจจุบันคำถามนี้ไม่เหมาะสำหรับรูปแบบคำถาม & คำตอบของเรา เราคาดหวังคำตอบที่จะได้รับการสนับสนุนจากข้อเท็จจริงการอ้างอิงหรือความเชี่ยวชาญ แต่คำถามนี้มีแนวโน้มที่จะเรียกร้องให้มีการอภิปรายโต้แย้งโต้แย้งหรือการอภิปรายเพิ่มเติม หากคุณรู้สึกว่าคำถามนี้สามารถปรับปรุงและเปิดใหม่ได้โปรดไปที่ศูนย์ช่วยเหลือเพื่อขอคำแนะนำ ปิดให้บริการใน7 ปีที่ผ่านมา Python มีคุณลักษณะอะไรบ้างที่ทำให้มีลักษณะเฉพาะเป็นภาษาของตัวเอง ฉันกำลังมองหาลักษณะที่หลากหลายตั้งแต่ดีไปถึงไม่ดีมีประโยชน์ต่ออุปสรรคการใช้งานจริง แต่การสังเกตที่ไม่ชัดเจนจะเป็นประโยชน์มากที่สุดสำหรับนักพัฒนาทั่วไป ฉันเป็นคนใหม่ที่นี่ดังนั้นสิ่งที่เข้าใจง่ายอาจต้องอธิบาย .....

2
Python สำหรับโครงการขนาดใหญ่
มีแหล่งข้อมูลใดบ้างเกี่ยวกับวิธีการออกแบบโครงการ Python ที่มีความแข็งแกร่งระดับอุตสาหกรรม ฉันต้องการเริ่มต้นในโครงการส่วนบุคคลที่ทะเยอทะยาน แต่ฉันไม่แน่ใจจริงๆว่าจะออกแบบมันได้อย่างไรและจะทำอย่างไรเพื่อให้โครงการประสบความสำเร็จ มีแหล่งข้อมูลใดบ้างในการอภิปรายเกี่ยวกับวิธีการทำให้โครงการงูใหญ่ทำงานได้หรือไม่?
12 python 

7
Python เป็นตัวเลือกที่ดีในการพัฒนา UIs หรือไม่ ถ้าเป็นเช่นนั้น wxPython หรือ Tkinter?
ฉันรอคอยที่จะพัฒนาแอปพลิเคชันเดสก์ท็อปโดยใช้ Python ฉันเป็นผู้เริ่มต้นและฉันไม่มีความเชี่ยวชาญเพียงพอใน Python ฉันยังเป็นโปรแกรมเมอร์ Java แม้ว่าฉันจะมีประสบการณ์ในการสร้าง UIs โดยใช้ Swing แต่ฉันเห็นว่าแอพที่พัฒนาบน Swing นั้นค่อนข้างช้าเกินไป นี่อาจเป็นเหตุผลหนึ่งว่าทำไมการใช้งานหลัก ๆ หลายอย่างใน C / C ++ เหมือนกับในเบราว์เซอร์ / เกม การพัฒนา UI ใน C ++ อาจเป็นตัวเลือกที่ดีกว่า แต่ฉันชอบที่จะเลือกภาษาการเขียนโปรแกรมระดับสูงผ่าน C / C ++ ดังนั้นฉันเลือกที่จะใช้ Python โดยสันนิษฐานว่ามันจะทำงานได้ดีบน Java Swing เนื่องจาก Python เองนั้นสร้างบน C / C ++ ดังนั้นฉันจะไปข้างหน้ากับสมมติฐานนี้ว่า Python ดีกว่า Java …

1
PyPy เป็นผู้ใหญ่แค่ไหน? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน5 ปีที่ผ่านมา ฉันกำลังพยายามกำหนดวุฒิภาวะของ PyPy ด้วยวิธีการอื่นนอกเหนือจากการอ่านความคิดเห็นของนักพัฒนา ดังนั้นฉันสนใจที่จะได้ยินเกี่ยวกับโครงการที่มีความสำคัญต่อภารกิจสูงโดยใช้ PyPy ตัวบ่งชี้อื่น ๆ ของความเป็นผู้ใหญ่ดูเหมือนจะดี ฉันเพิ่งหายไปก่อนที่จะตัดสินใจใช้สำหรับโครงการหลักของฉัน
12 python 

6
ในฐานะผู้เริ่มต้นฉันควรจะสร้างห้องสมุดของตัวเองโดยใช้ห้องสมุดบุคคลที่สามหรือไม่?
ในฐานะที่เป็นโปรแกรมเมอร์ Python เริ่มต้นคุณควรสร้างและทำความเข้าใจกับไลบรารีของตัวเองก่อนที่จะข้ามไปยังห้องสมุดบุคคลที่สามขั้นสูงที่มีฟังก์ชั่นที่ฉันต้องการหรือไม่? บางโครงการ (เช่นกรอบเว็บเช่น Django) อาจมีขนาดใหญ่เกินไปสำหรับแนวทางนี้ แต่โครงการอื่น ๆ (เช่นโปรแกรมรวบรวมข้อมูลเว็บไลบรารีกราฟตัวแยกวิเคราะห์ HTML) เป็นไปได้ ฉันกังวลว่าการพึ่งพาห้องสมุดของบุคคลที่สามจะทำให้การเติบโตของฉันล่าช้า หมายเหตุ: คำถามนี้และคำถามนี้ดูเหมือนจะเน้นโปรแกรมเมอร์ที่มีประสบการณ์มากขึ้นซึ่งอาจมุ่งเน้นไปที่ประสิทธิภาพของการใช้ซ้ำมากกว่าประโยชน์การเรียนรู้ ฉันคิดว่าคำถามของฉันมุ่งเน้นไปที่ผู้เริ่มต้น

4
คุณคิดว่า GAE เพียงอย่างเดียวนั้นเพียงพอที่จะพิสูจน์การเรียนรู้ของ Python มากกว่า Ruby หรือไม่? [ปิด]
ปิด คำถามนี้เป็นคำถามความคิดเห็นตาม ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้สามารถตอบข้อเท็จจริงและการอ้างอิงได้โดยแก้ไขโพสต์นี้ ปิดให้บริการใน6 ปีที่ผ่านมา เมื่อพิจารณาถึงความจริงที่ว่าคุณไม่จำเป็นต้องมีส่วนร่วมในการติดตั้ง / ซื้อเซิร์ฟเวอร์หรือแม้แต่ซื้อโดเมนคุณคิดว่าข้อเท็จจริงเพียงอย่างเดียวก็เพียงพอแล้วที่จะเลือกโดเมนอื่น ฉันไม่ต้องการทำงานกับ Google App Engine ฉันแค่พบว่าสะดวกเมื่อพูดถึงการโฮสต์ / สภาพแวดล้อม / ฯลฯ และสงสัยว่านั่นเป็นเหตุผลที่ดีพอที่จะเรียนรู้หลาม ไม่ว่าในกรณีใดฉันไม่ได้มองหาการถกเถียงระหว่างไพ ธ อนกับทับทิม แต่มีมากขึ้นใน Google App Engine และค่าของมันเพียงพอที่จะกำหนดภาษาที่คุณควรเรียนรู้หรือไม่

2
วาดกราฟการโทร
ฉันยังคงรักษาฐานรหัสเก่าที่เขียนด้วยไพ ธ อน โดยเฉพาะอย่างยิ่งมีชิ้นส่วนที่ซับซ้อนของรหัสที่มาจากโมดูลเรียกฟังก์ชั่นอื่น ๆ จากโมดูลอื่นที่เรียกใช้ฟังก์ชั่นอื่น ๆ และอื่น ๆ ไม่ใช่ OOP เพียงฟังก์ชั่นและโมดูล ฉันพยายามติดตามว่าการไหลเริ่มต้นและสิ้นสุดเมื่อใดฉันเรียกฟังก์ชันหลัก แต่ฉันรู้สึกว่าต้องวาดสิ่งนี้เพราะฉันหลงทางในการโทรย่อย สิ่งที่ฉันกังวลก็คือแต่ละฟังก์ชั่นเรียกฟังก์ชั่นภายนอกหลายอย่างภายในร่างกายของพวกเขาเพื่อทำงานให้เสร็จและส่งคืนค่าให้กับผู้โทร ฉันจะวาดสิ่งนี้ได้อย่างไร ความหมายของแผนภูมิ / กราฟิกประเภทใดที่เหมาะกับการบันทึกพฤติกรรม / รหัสประเภทนี้ ดังนั้นฉันไม่คิดว่าจะมีประโยชน์ในการวาดแผนภาพ UML ไม่ใช่ผังงาน กราฟการโทรอาจจะใช่ไหม

2
อะไรคือความสัมพันธ์ระหว่างขอบเขตและเนมสเปซใน Python
ในแหล่งข้อมูลมากมายฉันพบว่า"ขอบเขต"และ"เนมสเปซ"ถูกใช้แทนกันได้ซึ่งดูเหมือนว่าจะสับสนเล็กน้อยเนื่องจากมันหมายถึงสิ่งที่แตกต่างกัน ขอบเขตกำหนดขอบเขตของรหัสที่มีชื่อ กฎ LEGB กำหนดวิธีค้นหาชื่อ Namespace เป็นสถานที่ที่คุณค้นหาชื่อ จากนั้นฉันก็อ่าน: "ชื่อถูกผูกไว้กับ namespace ตามที่พวกเขาได้รับมอบหมาย ... " (ซึ่งฉันเชื่อว่าเป็นข้อตกลงกับขอบเขตในการกำหนดขอบเขตคำศัพท์) "ฟังก์ชั่นเพิ่มเนมสเปซเลเยอร์พิเศษให้กับโปรแกรมของคุณ" [ อ้างอิง ] (พวกเขาไม่ได้เพิ่มขอบเขตในพื้นที่พิเศษหรือไม่) "ชื่อทั้งหมดที่กำหนดภายในนิยามฟังก์ชั่นจะอยู่ในขอบเขตภายใน (เนมสเปซที่เกี่ยวข้องกับการเรียกใช้ฟังก์ชัน)" "โกลบอลสโคป - กล่าวคือเนมสเปซซึ่งตัวแปรสร้างขึ้น (กำหนด) ที่ระดับบนสุดของไฟล์โมดูลอยู่" * ราคาทั้งหมดมาจากการเรียนรู้ python 5th edition ch17 เนมสเปซใน Python เป็นการนำไปใช้กับขอบเขตหรือไม่ พวกเขาเหมือนกันหรือไม่ มีใครสอนฉันได้ไหม
12 python 

3
บริบทคำขอทั่วโลก - รูปแบบต่อต้าน?
ฉันได้พูดคุยกับเพื่อนร่วมงานของฉันในวันนี้เกี่ยวกับโครงร่างเว็บของ Python และความประทับใจของเราที่มีต่อพวกเขา ฉันบอกเขาว่าฉันคิดว่า Flask ที่มีคำขอทั่วโลกมีกลิ่นไม่ดีและเป็นรูปแบบการต่อต้าน เอกสารพูดเกี่ยวกับบริบทคำขอ: ในทางตรงกันข้ามระหว่างการจัดการคำขอมีกฎอื่นอยู่สองข้อ: ในขณะที่คำขอใช้งานอยู่วัตถุบริบทท้องถิ่น (flask.request และอื่น ๆ ) ชี้ไปที่คำขอปัจจุบัน รหัสใด ๆ สามารถถือวัตถุเหล่านี้ได้ตลอดเวลา ฉันคิดว่าฉันเข้าใจแนวคิดเบื้องหลังการตัดสินใจออกแบบนี้ - เพื่อทำให้แอปพลิเคชันง่ายขึ้น เป็นเพียงการประนีประนอมเช่นในกรณีของThread Locals : ใช่มันไม่ใช่ความคิดที่สดใสในการใช้เธรดท้องถิ่น พวกเขาทำให้เกิดปัญหาสำหรับเซิร์ฟเวอร์ที่ไม่ได้ขึ้นอยู่กับแนวคิดของเธรดและทำให้แอปพลิเคชันขนาดใหญ่ยากต่อการบำรุงรักษา อย่างไรก็ตาม Flask ไม่ได้ออกแบบมาสำหรับแอพพลิเคชั่นขนาดใหญ่หรือเซิร์ฟเวอร์แบบอะซิงโครนัส Flask ต้องการทำให้รวดเร็วและง่ายต่อการเขียนเว็บแอปพลิเคชันแบบดั้งเดิม การแพตช์ออบเจกต์โกลบอลกับข้อมูลการร้องขอปัจจุบันเป็นรูปแบบการต่อต้านหรือไม่? ฉันเชื่อว่าเป็นเพราะอยู่ในมุมมองของวิเคราะห์รหัสคงที่ทั่วโลกแม้ว่ามันจะไม่ และฉันในฐานะโปรแกรมเมอร์จะไม่เข้าใจวิธีการทำงานโดยไม่อ่านเอกสารอย่างละเอียด และนี้มีผลกระทบในการทดสอบ เป็นการดีที่จะส่งคำขอเป็นอาร์กิวเมนต์เพื่อดู ฉันคิดว่าสามารถอ่านได้ชัดเจนและง่ายขึ้นในการดีบัก และหลีกเลี่ยงสถานะโลก

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