다음 코드를 변환하고 싶습니다 :Python : "with"를 사용하여 즉석에서 새로운 함수 정의하기
...
urls = [many urls]
links = []
funcs = []
for url in urls:
func = getFunc(url, links)
funcs.append(func)
...
def getFunc(url, links):
def func():
page = open(url)
link = searchForLink(page)
links.append(link)
return func
훨씬 더 편리한 코드 :
urls = [many urls]
links = []
funcs = []
for url in urls:
<STATEMENT>(funcs):
page = open(url)
link = searchForLink(page)
links.append(link)
with
문을 사용하여이 작업을 수행하고 싶습니다. 내가 노골적인 코멘트를했다면, 나는 달성하기를 바랐다.
def __enter__():
def func():
..code in the for loop..
def __exit__():
funcs.append(func)
물론 이것은 효과가 없다.
searchForLink
작업은 단지 하나의 기능이 아니라 많은 기능이있는 경우 목록 내장은 좋지 않습니다. 그것은 극도로 읽을 수없는 코드로 바뀔 것입니다. 예를 들어, 이렇게해도 목록 내포에 문제가 될 수 있습니다.
for url in urls:
page = open(url)
link1 = searchForLink(page)
link2 = searchForLink(page)
actionOnLink(link1)
actionOnLink(link2)
.... many more of these actions...
links.append(link1)
우선 : 왜 함수를 전달하려고합니까? 예, 거기에는 용도가 있습니다. 그러나 그 공통점은 아닙니다. 둘째, 왜 함수를 사용하지 않는 것입니까? 함수에는 아무런 문제가 없습니다. :) –
당신이 길을 잃은 경우 (내가 한 것처럼) 이것은 대답이되는 질문입니다 : 목록 이해력을 사용하십시오. – telliott99