Закрытие Python не работает должным образом

Когда я запускаю следующий сценарий, обе лямбды запускают os.startfile () с одним и тем же файлом - junk.txt. Я ожидал, что каждая лямбда будет использовать значение "f", которое было установлено при создании лямбды. Есть ли способ заставить это работать так, как я ожидал?

import os


def main():
    files = [r'C:\_local\test.txt', r'C:\_local\junk.txt']
    funcs = []
    for f in files:
        funcs.append(lambda: os.startfile(f))
    print funcs
    funcs[0]()
    funcs[1]()


if __name__ == '__main__':
    main()
11
задан 17 May 2011 в 19:09
поделиться