คำถามติดแท็ก with-statement

10
คำสั่ง python“ พร้อม” ออกแบบมาเพื่ออะไร?
ฉันเจอwithคำสั่งPython เป็นครั้งแรกในวันนี้ ฉันใช้ Python เบา ๆ เป็นเวลาหลายเดือนและไม่รู้ด้วยซ้ำว่ามันมีอยู่จริง! ด้วยสถานะที่ค่อนข้างคลุมเครือฉันคิดว่ามันคุ้มค่าที่จะถามว่า: withคำสั่งPython ที่ออกแบบมาเพื่อใช้คืออะไร? คุณใช้มันทำอะไร? มี gotchas ใด ๆ ที่ฉันต้องระวังหรือต่อต้านรูปแบบทั่วไปที่เกี่ยวข้องกับการใช้งานหรือไม่? ใด ๆ กรณีที่มีการใช้งานที่ดีขึ้นtry..finallyกว่าwith? ทำไมมันไม่ใช้กันอย่างแพร่หลายมากขึ้น? คลาสไลบรารีมาตรฐานใดที่เข้ากันได้กับมัน

6
มีตัวแปรหลายตัวในข้อความ 'with' หรือไม่?
เป็นไปได้ไหมที่จะประกาศมากกว่าหนึ่งตัวแปรโดยใช้withคำสั่งใน Python สิ่งที่ต้องการ: from __future__ import with_statement with open("out.txt","wt"), open("in.txt") as file_out, file_in: for line in file_in: file_out.write(line) ... หรือกำลังล้างทรัพยากรสองรายการพร้อมกันหรือไม่

30
มีการใช้งานที่ถูกต้องสำหรับคำสั่ง "กับ" ของ JavaScript หรือไม่
ความคิดเห็นของ Alan Stormในการตอบสนองต่อคำตอบของฉันเกี่ยวกับwithคำสั่งทำให้ฉันคิด ฉันไม่ค่อยพบเหตุผลที่จะใช้คุณลักษณะภาษานี้โดยเฉพาะและไม่เคยคิดมากว่าจะสร้างปัญหาได้อย่างไร ตอนนี้ฉันอยากรู้ว่าฉันจะใช้อย่างมีประสิทธิภาพได้withอย่างไรในขณะที่หลีกเลี่ยงหลุมพราง คุณพบwithคำสั่งที่มีประโยชน์ที่ไหน

6
การอธิบาย '__enter__' ของ Python และ '__exit__'
ฉันเห็นสิ่งนี้ในรหัสของใครบางคน มันหมายความว่าอะไร? def __enter__(self): return self def __exit__(self, type, value, tb): self.stream.close() from __future__ import with_statement#for python2.5 class a(object): def __enter__(self): print 'sss' return 'sss111' def __exit__(self ,type, value, traceback): print 'ok' return False with a() as s: print s print s

4
ใน Python ถ้าฉันกลับเข้าไปในบล็อก“ with” ไฟล์จะยังคงปิดหรือไม่
พิจารณาสิ่งต่อไปนี้: with open(path, mode) as f: return [line for line in f if condition] ไฟล์จะปิดอย่างถูกต้องหรือใช้การreturnข้ามบริบทตัวจัดการอย่างใดอย่างหนึ่งหรือไม่

8
ฉันจะเลียนแบบการเปิดที่ใช้ในคำสั่ง with (โดยใช้กรอบการจำลองใน Python) ได้อย่างไร?
ฉันจะทดสอบโค้ดต่อไปนี้ด้วย mocks ได้อย่างไร (โดยใช้ mocks เครื่องมือตกแต่งแพทช์และรักษาการณ์ที่จัดทำโดยกรอบงานจำลองของ Michael Foord ) def testme(filepath): with open(filepath, 'r') as f: return f.read()

4
การใช้คำสั่ง python“ with” กับ try-except block
นี่เป็นวิธีที่ถูกต้องในการใช้คำสั่ง python "with" ร่วมกับ try-except block หรือไม่: try: with open("file", "r") as f: line = f.readline() except IOError: <whatever> หากเป็นเช่นนั้นให้พิจารณาวิธีการทำสิ่งต่างๆแบบเก่า: try: f = open("file", "r") line = f.readline() except IOError: <whatever> finally: f.close() ประโยชน์หลักของคำสั่ง "ด้วย" ตรงนี้คือเราสามารถกำจัดโค้ดสามบรรทัดได้หรือไม่? ดูเหมือนว่าจะไม่น่าสนใจสำหรับฉันสำหรับกรณีการใช้งานนี้ (แม้ว่าฉันจะเข้าใจว่าคำสั่ง "ด้วย" มีประโยชน์อื่น ๆ ) แก้ไข: การทำงานของโค้ดสองบล็อกข้างต้นเหมือนกันหรือไม่ แก้ไข 2: คำตอบสองสามข้อแรกมักพูดถึงประโยชน์ของการใช้ "กับ" แต่ดูเหมือนว่าจะมีประโยชน์เพียงเล็กน้อยที่นี่ เราทุกคน …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.