คำแนะนำของฉันคือการใช้ฟังก์ชัน แต่แทนที่จะใส่if
ฟังก์ชันซึ่งคุณอาจถูกล่อลวงให้ทำเช่นนี้:
if verbose:
def verboseprint(*args):
for arg in args:
print arg,
print
else:
verboseprint = lambda *a: None
(ใช่คุณสามารถกำหนดฟังก์ชันในif
คำสั่งและจะกำหนดได้ก็ต่อเมื่อเงื่อนไขนั้นเป็นจริง!)
หากคุณใช้ Python 3 ซึ่งprint
เป็นฟังก์ชันอยู่แล้ว (หรือหากคุณต้องการใช้print
เป็นฟังก์ชันในการใช้ 2.x from __future__ import print_function
) จะง่ายกว่า:
verboseprint = print if verbose else lambda *a, **k: None
ด้วยวิธีนี้ฟังก์ชันจะถูกกำหนดให้เป็นแบบไม่ต้องทำอะไรเลยหากปิดโหมด verbose (โดยใช้แลมบ์ดา) แทนที่จะทดสอบverbose
แฟล็กอย่างต่อเนื่อง
หากผู้ใช้สามารถเปลี่ยนโหมด verbosity ในระหว่างการรันโปรแกรมของคุณนี่อาจเป็นแนวทางที่ไม่ถูกต้อง (คุณต้องif
ใช้ฟังก์ชันนี้) แต่เนื่องจากคุณตั้งค่าด้วยแฟล็กบรรทัดคำสั่งคุณจึงต้อง ตัดสินใจครั้งเดียว
จากนั้นคุณจะใช้เช่นverboseprint("look at all my verbosity!", object(), 3)
เมื่อใดก็ตามที่คุณต้องการพิมพ์ข้อความ "verbose"