ฉันไม่แน่ใจว่าคุณกำลังพยายามทำอะไร Python เป็นภาษาแบบไดนามิกมาก โดยปกติคุณไม่จำเป็นต้องประกาศตัวแปรจนกว่าคุณจะกำหนดหรือใช้งานจริง ฉันคิดว่าสิ่งที่คุณต้องการจะทำก็แค่
foo = None
ซึ่งจะกำหนดค่าให้กับตัวแปรNone
foo
แก้ไข: สิ่งที่คุณจริงๆดูเหมือนจะต้องการจะทำคือเพียงแค่นี้:
#note how I don't do *anything* with value here
#we can just start using it right inside the loop
for index in sequence:
if conditionMet:
value = index
break
try:
doSomething(value)
except NameError:
print "Didn't find anything"
เป็นการยากที่จะบอกว่าเป็นสไตล์ที่ถูกต้องในการใช้งานจากตัวอย่างรหัสย่อ ๆ หรือไม่ แต่เป็นวิธีการทำงานแบบ "Pythonic" ที่มากขึ้น
แก้ไข: ด้านล่างเป็นความเห็นโดย JFS (โพสต์ที่นี่เพื่อแสดงรหัส)
ไม่เกี่ยวข้องกับคำถามของ OP แต่สามารถเขียนรหัสข้างต้นใหม่เป็น:
for item in sequence:
if some_condition(item):
found = True
break
else: # no break or len(sequence) == 0
found = False
if found:
do_something(item)
หมายเหตุ: หากsome_condition()
เพิ่มข้อยกเว้นfound
จะถูกยกเลิก
หมายเหตุ: หาก len (sequence) == 0 item
จะถูก unbound
รหัสข้างต้นไม่แนะนำให้เลือก วัตถุประสงค์คือเพื่อแสดงให้เห็นว่าตัวแปรโลคอลทำงานอย่างไรกล่าวคือสามารถกำหนด "ตัวแปร" คือ "กำหนด" ได้เฉพาะที่รันไทม์ในกรณีนี้ วิธีที่ดีกว่า:
for item in sequence:
if some_condition(item):
do_something(item)
break
หรือ
found = False
for item in sequence:
if some_condition(item):
found = True
break
if found:
do_something(item)