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

Python เป็นภาษาการเขียนโปรแกรมแบบหลายกระบวนทัศน์แบบไดนามิกพิมพ์อเนกประสงค์ มันถูกออกแบบมาให้เรียนรู้เข้าใจและใช้งานได้อย่างรวดเร็วและบังคับใช้ไวยากรณ์ที่สะอาดและสม่ำเสมอ โปรดทราบว่า Python 2 สนับสนุนอย่างเป็นทางการตั้งแต่วันที่ 01-01-2020 สำหรับคำถาม Python เฉพาะรุ่นให้เพิ่มแท็ก [python-2.7] หรือ [python-3.x] เมื่อใช้ตัวแปรหรือไลบรารี Python (เช่น Jython, PyPy, Pandas, Numpy) โปรดรวมไว้ในแท็ก


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


11
ส่งคืนไม่มีถ้าไม่มีคีย์พจนานุกรม
ฉันต้องการวิธีในการรับค่าพจนานุกรมหากมีกุญแจอยู่หรือเพียงคืนค่าNoneถ้าไม่มี อย่างไรก็ตาม Python จะสร้างKeyErrorข้อยกเว้นหากคุณค้นหาคีย์ที่ไม่มีอยู่ ฉันรู้ว่าฉันสามารถตรวจสอบกุญแจได้ แต่ฉันกำลังมองหาบางอย่างที่ชัดเจนยิ่งขึ้น มีวิธีการส่งคืนหรือไม่Noneหากคีย์ไม่มีอยู่?

4
คำสั่ง Python exit - ทำไมจึงควรใช้หลายคำสั่งเมื่อใด?
ดูเหมือนว่างูใหญ่สนับสนุนคำสั่งต่าง ๆ มากมายเพื่อหยุดการทำงานของสคริปต์ ตัวเลือกที่ฉันได้พบคือ: quit(), exit(), sys.exit(),os._exit() ฉันเคยพลาดบ้างไหม? ความแตกต่างระหว่างพวกเขาคืออะไร คุณจะใช้แต่ละครั้งเมื่อใด
489 python 

24
คุณจะปัดเศษตัวเลขใน Python อย่างไร
ปัญหานี้กำลังฆ่าฉัน หนึ่งรอบหมายเลขขึ้นในงูหลามได้อย่างไร ฉันลองปัดเศษ (ตัวเลข) แต่ปัดเศษตัวเลขลง ตัวอย่าง: round(2.3) = 2.0 and not 3, what I would like ฉันลอง int (หมายเลข + .5) แต่มันปัดเศษตัวเลขลงอีกรอบ! ตัวอย่าง: int(2.3 + .5) = 2 จากนั้นฉันลองรอบ (หมายเลข + .5) แต่มันจะไม่ทำงานในกรณีขอบ ตัวอย่าง: WAIT! THIS WORKED! กรุณาแนะนำ

30
วิธี "pythonic" มากที่สุดในการวนซ้ำรายการในกลุ่มคืออะไร?
ฉันมีสคริปต์ Python ซึ่งใช้เป็นรายการของจำนวนเต็มซึ่งฉันต้องทำงานกับจำนวนเต็มสี่ตัวในแต่ละครั้ง น่าเสียดายที่ฉันไม่สามารถควบคุมอินพุตได้หรือฉันจะให้มันส่งผ่านเป็นรายการของ tuples สี่องค์ประกอบ ขณะนี้ฉันกำลังทำซ้ำด้วยวิธีนี้: for i in xrange(0, len(ints), 4): # dummy op for example code foo += ints[i] * ints[i + 1] + ints[i + 2] * ints[i + 3] ดูเหมือนว่า "C-think" มากซึ่งทำให้ฉันสงสัยว่ามีวิธีการรับมือกับสถานการณ์นี้มากขึ้น รายการจะถูกยกเลิกหลังจากทำซ้ำดังนั้นจึงไม่จำเป็นต้องเก็บรักษาไว้ บางทีสิ่งนี้จะดีกว่าไหม? while ints: foo += ints[0] * ints[1] + ints[2] * ints[3] …

22
รวมสองคอลัมน์ของข้อความใน dataframe ใน pandas / python
ฉันมี dataframe 20 x 4000 ใน Python โดยใช้แพนด้า สองคอลัมน์เหล่านี้จะถูกตั้งชื่อและYear quarterฉันต้องการที่จะสร้างตัวแปรที่เรียกว่าperiodทำให้Year = 2000และเข้าquarter= q22000q2 มีใครสามารถช่วยได้บ้าง

10
การแยกตรรกะทางธุรกิจและการเข้าถึงข้อมูลใน django
ฉันจะเขียนโครงการใน Django และผมเห็นว่า 80% models.pyของรหัสที่อยู่ในแฟ้ม รหัสนี้ทำให้เกิดความสับสนและหลังจากช่วงเวลาหนึ่งฉันหยุดที่จะเข้าใจสิ่งที่เกิดขึ้นจริง นี่คือสิ่งที่รบกวนจิตใจฉัน: ฉันพบว่าน่าเกลียดที่ระดับโมเดลของฉัน (ซึ่งควรจะรับผิดชอบในการทำงานกับข้อมูลจากฐานข้อมูลเท่านั้น) ก็กำลังส่งอีเมลการเดินบน API ไปยังบริการอื่น ๆ เป็นต้น นอกจากนี้ฉันพบว่าไม่สามารถวางตรรกะทางธุรกิจในมุมมองได้เนื่องจากวิธีนี้เป็นการยากที่จะควบคุม ตัวอย่างเช่นในแอปพลิเคชันของฉันมีอย่างน้อยสามวิธีในการสร้างอินสแตนซ์ใหม่ของUserแต่ในทางเทคนิคมันควรสร้างพวกเขาอย่างสม่ำเสมอ ฉันไม่ได้สังเกตเสมอเมื่อวิธีการและคุณสมบัติของแบบจำลองของฉันไม่เป็นตัวกำหนดและเมื่อพวกเขาพัฒนาผลข้างเคียง นี่คือตัวอย่างง่ายๆ ตอนแรกUserแบบจำลองเป็นแบบนี้: class User(db.Models): def get_present_name(self): return self.name or 'Anonymous' def activate(self): self.status = 'activated' self.save() เมื่อเวลาผ่านไปมันกลายเป็นสิ่งนี้: class User(db.Models): def get_present_name(self): # property became non-deterministic in terms of database # data is taken …

15
ฉันจะลบ / ลบ virtualenv ได้อย่างไร
ฉันสร้างสภาพแวดล้อมด้วยคำสั่งต่อไปนี้: virtualenv venv --distribute ฉันไม่สามารถลบออกได้ด้วยคำสั่งต่อไปนี้: rmvirtualenv venv- นี่เป็นส่วนหนึ่งของvirtualenvwrapperตามที่ระบุไว้ในคำตอบด้านล่างสำหรับ virtualenvwrapper ฉันทำlsในไดเรกทอรีปัจจุบันของฉันและฉันยังเห็น venv วิธีเดียวที่ฉันสามารถลบได้: sudo rm -rf venv โปรดทราบว่าสภาพแวดล้อมไม่ได้ใช้งาน ฉันใช้ Ubuntu 11.10 ความคิดใด ๆ ฉันพยายามรีบูตระบบของฉันโดยไม่มีประโยชน์

8
ทำไม“ ไม่ (จริง) ใน [เท็จจริง]” คืนเท็จ?
ถ้าฉันทำสิ่งนี้: >>> False in [False, True] True Trueที่ส่งกลับ เพียงเพราะFalseอยู่ในรายการ แต่ถ้าฉันทำ: >>> not(True) in [False, True] False Falseที่ส่งกลับ โดยที่not(True)เท่ากับFalse: >>> not(True) False ทำไม?

14
แนวทางปฏิบัติที่ดีที่สุดสำหรับ Python ยืนยัน
มีปัญหาด้านประสิทธิภาพหรือการบำรุงรักษารหัสเมื่อใช้assertเป็นส่วนหนึ่งของรหัสมาตรฐานแทนที่จะใช้เพื่อการดีบักหรือไม่ คือ assert x >= 0, 'x is less than zero' ดีกว่าหรือแย่กว่า if x < 0: raise Exception, 'x is less than zero' นอกจากนี้ยังมีวิธีการตั้งกฎทางธุรกิจเช่นif x < 0 raise errorนั้นที่จะถูกตรวจสอบโดยไม่ต้องทำtry/except/finallyเช่นนั้นตลอดเวลาหากรหัสตลอดเวลาxน้อยกว่า 0 ข้อผิดพลาดจะเพิ่มขึ้นเช่นถ้าคุณตั้งไว้assert x < 0ที่จุดเริ่มต้นของฟังก์ชั่น ที่ไหนxจะกลายเป็น 0 แล้วมีข้อยกเว้นยก

21
วิธีตรวจสอบว่าค่าใด ๆ เป็น NaN ใน Pandas DataFrame
ใน Python Pandas วิธีที่ดีที่สุดในการตรวจสอบว่า DataFrame มีหนึ่ง NaN มากกว่าหนึ่งค่าคืออะไร ฉันรู้เกี่ยวกับฟังก์ชั่นpd.isnanนี้ แต่คืนค่า DataFrame ของ booleans สำหรับแต่ละองค์ประกอบ โพสต์นี้ตรงนี้ไม่ตอบคำถามของฉันอย่างแน่นอน
483 python  pandas  dataframe  nan 

29
ฉันจะรับพา ธ และชื่อของไฟล์ที่กำลังทำงานอยู่ได้อย่างไร
ฉันมีสคริปต์ที่เรียกไฟล์สคริปต์อื่น ๆ แต่ฉันต้องได้รับ filepath ของไฟล์ที่กำลังทำงานอยู่ในกระบวนการ ตัวอย่างเช่นสมมติว่าฉันมีสามไฟล์ ใช้execfile : script_1.pyscript_2.pyโทร ในทางกลับกันเรียกscript_2.pyscript_3.py ฉันจะได้รับชื่อไฟล์และเส้นทางของscript_3.py, จากรหัสภายในscript_3.pyโดยไม่ต้องส่งผ่านข้อมูลที่เป็นข้อโต้แย้งจากscript_2.py? (การดำเนินการos.getcwd()ส่งคืนไฟล์พา ธ ของสคริปต์เริ่มต้นต้นฉบับไม่ใช่ไฟล์ปัจจุบัน)
482 python  scripting  file 

16
ฉันจะรับดัชนีค่าสูงสุด N ในอาร์เรย์ NumPy ได้อย่างไร
NumPy np.argmaxเสนอวิธีที่จะได้ดัชนีของค่าสูงสุดของอาร์เรย์ผ่าน ฉันต้องการสิ่งที่คล้ายกัน แต่คืนค่าดัชนีของNค่าสูงสุด ตัวอย่างเช่นถ้าฉันมีอาร์เรย์[1, 3, 2, 4, 5], function(array, n=3)จะกลับมาดัชนีซึ่งสอดคล้องกับองค์ประกอบ[4, 3, 1][5, 4, 3]

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