코드를 간단하게 만들고싶은데 어떻게 해야할까요?


for self.data1 in self.cursor.execute('SELECT *FROM TEST1').fetchall(): pass
        for consultationhours in range(4, 7):
            if self.data1[consultationhours] == 'Y':
                self.selectcolor.append(self.color[0])
            else:
                self.selectcolor.append(self.color[1])
.
.
.
for self.data10 in self.cursor.execute('SELECT *FROM TEST2').fetchall(): pass
        for consultationhours in range(4, 7):
            if self.data1[consultationhours] == 'Y':
                self.selectcolor.append(self.color[0])
            else:
                self.selectcolor.append(self.color[1])

위 처럼 내용이 똑같은 코드가있습니다. for self.data뒤에 숫자만 다르게되어있는데 반목문 변수도 리플렉션이 적용되는지 궁금합니다.

for i in range(1,11):
            for self.data[?] in self.cursor.execute('SELECT *FROM TEST{}'.format(i)).fetchall(): pass
            for consultationhours in range(4, 7):
                if self.data1[consultationhours] == 'Y':
                    self.selectcolor.append(self.color[0])
                else:
                    self.selectcolor.append(self.color[1])

위에코드처럼 반복문 변수만 문자format함수처럼 지정할수있으면 될것같은데... 이부분이 너무 어렵네요


조회수 119


Banner bitmango

1 답변


좋아요
1
싫어요
채택취소하기

eval을 사용하면 될 것 같기는 합니다...만 권장하지는 않습니다.

되는지 테스트해보려고 임의로 아래와 같은 코드를 짜봤는데요.

for in range(1,11):
    eval('data' + string(i) in self...... 

같은 형태로 하면 호출 자체는 되는 것 같습니다.

비슷하게 locals()global() 도 있는 것 같네요.

for in range(1,11):
    locals()['data' + string(i)] in self...... 

로 하면 될 것 같습니다.

https://docs.python.org/2/library/functions.html#locals

  • 2017년 12월 28일에 작성됨
    내가 아는 것을 널리 알리고 싶습니다.

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close