본문 바로가기
파이썬

파이썬 while 루프에서 조건 동안 변수에 값 할당

by º기록 2021. 1. 2.
반응형

Python 구문에 대한 간단한 질문입니다. while 루프에 대한 조건 동안 함수의 값을 변수에 할당하고 싶습니다. 함수에서 반환 된 값이 false이면 루프가 중단됩니다. PHP로하는 방법을 알고 있습니다.

while (($data = fgetcsv($fh, 1000, ",")) !== FALSE) 

그러나 Python에서 비슷한 구문을 시도하면 구문 오류가 발생합니다.

 

해결 방법

 

식에서 할당을 사용할 수 없습니다. 할당 자체는 명령문이며 Python 명령문을 결합 할 수 없습니다.

이것은 언어 디자이너가 만든 명시적인 선택입니다. 실수로 하나의 = 를 사용하고 할당하는 것은 너무 쉽습니다. 여기서 두 개의 == 를 사용하고 동등성을 테스트하려고했습니다.

할당을 루프로 내로 이동하거나 루프 앞에 할당하고 루프 자체에 새 값을 할당합니다.


with open(csvfilename, 'rb') as csvfh:
    reader = csv.reader(csvfh)
    for row in reader:

드물게 루프 구조로 할당해야합니다. 일반적으로 당면한 문제를 해결하는 더 나은 방법이 있습니다.


이제 생성기 표현식을 사용해야합니다.

absolute = (os.path.abspath(p) for p in files)
filtered = [abs for abs in absolute if included(abs)]

하지만 할당 표현식을 사용하면 os.path.abspath () 호출을 인라인 할 수 있습니다.

filtered = [abs for p in files if included(abs := os.path.abspath(p))]

 

참조 페이지 https://stackoverflow.com/questions/19767891

 

 

반응형

댓글