Po uruchomieniu poniższego skryptu, zarówno lambda uruchamia os.startfile() na tym samym pliku - junk.txt. Spodziewam się, że każdy lambda użyje wartości "f", która została ustawiona, kiedy lambda została utworzona. Czy istnieje sposób, aby to zadziałało, jak się spodziewam?Zamknięcie Pythona nie działa zgodnie z oczekiwaniami
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()
podobne do [generowanie funkcji wewnątrz pętli z wyrażeniem lambda w pythonie] (http://stackoverflow.com/questions/1841268/generating-functions-inside-loop-w-lambda-expression-in-python) – Rodrigue