게임을 만들고 작동 시키려면 "미리 빌드 된"또는 "준비가 된"식의 목록을 생성해야합니다. 나는 람다 표현식을 사용하여이 작업을 수행하려고하지만 조회 테이블을 생성하는 문제가 발생합니다. 내가 가진 코드는 다음과 유사합니다파이썬 람다 식 룩업 테이블 생성하기
funct_list.append(lambda: test(i, "Hello World"))
funct_list.append(lambda: test(i, "Hello World"))
funct_list.append(lambda: test(i, "Hello World"))
funct_list.append(lambda: test(i, "Hello World"))
...
과 나는 갈 필요가 :
import inspect
def test(*args):
string = "Test Function: "
for i in args:
string += str(i) + " "
print(string)
funct_list = []
# The problem is in this for loop
for i in range(20):
funct_list.append(lambda: test(i, "Hello World"))
for i in funct_list:
print(inspect.getsource(i))
내가 얻을 출력은
funct_list.append(lambda: test(1, "Hello World"))
funct_list.append(lambda: test(2, "Hello World"))
funct_list.append(lambda: test(3, "Hello World"))
funct_list.append(lambda: test(4, "Hello World"))
...
나는 다음의 두 시도 둘 다 작동하지 않음
for i in range(20):
funct_list.append(lambda: test(i, "Hello World"))
for i in range(20):
x = (i, "Hello World")
funct_list.append(lambda: test(*x))
마이 큐 stion은 이미 설정 한 람다 식 내부의 변수 중 일부를 사용하여 람다 식 목록을 생성하는 방법입니다.
* 파이썬의 폐쇄는 후기 바인딩 있습니다 *. http://docs.python-guide.org/en/latest/writing/gotchas/#late-binding-closures –