본문 바로가기
Programming/Python

[Python] 함수와 를 활용한 코드 분석

by 알 수 없는 사용자 2022. 12. 14.

지난 [Python] 언어는 반복 작업을 하기 위한 도구이다 라는 포스팅을 보면 읽는 시각을 넓혀라 라는 내용이 있다.
그 내용에 대한 방법을 코드로 보면서 이해해보자 함수의 최종 output을 먼저 보고 

왜 이런 결과가 나왔는지 분석하는 것이다.

 

두 개만 알아두자
1. 최종 결과가 중요하지 과정은 중요하지 않다.

2. 결과가 나왔고 과정이 불만족스럽다면 언제든지 수정이 가능하다.

1. 목적

1. 데이터를 명시하고있는 yaml파일에 한국 server와 미국 server라는 이름의 타깃 명이 있는 상태이다.
2. 한국과 미국 server는 다른 서버이지만 서버만 다를뿐 들어오는 데이터가 같다고 가정하자
3. 현재는 1부터 10까지 들어와 있지만 한시간 후 데이터 량이 30까지 늘어날 전망이다.
4. 이때 로직에서 log파일에 있는 데이터 량을 저장한 변수는 yaml_2라고 정의해보자
5. 그리고 자동으로 데이터를 분배해보자.

 

 

 

# 아래 로직은 참고용
yaml_1 = ['kr', 'us']
yaml_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 늘어날 데이터라고 가정하자

def for_test_info():
    btc = []
    bgk = []
    for i in yaml_1:
        for z in yaml_2:
            if i == 'kr':
                btc.append(z)
            elif i == 'us':
                bgk.append(z)
    return btc, bgk

output = for_test_info()
a_count = f'한국 : {output[0]}'
b_count = f'미국 : {output[1]}'

print(a_count)
print(b_count)

위 코드의 최종 출력은 아래와 같다.

한국 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
미국 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

 

왜 이런 결과가 나왔을까?

시야를 넓혀보자

1. 최종 출력이 어떻게 나왔는지 확인

2. for_test_info() 함수가 어떤 값을 return 하는지
     2-1. (btc와 bgk)가 최종 output구나 그래서 output = for_test_info()로 함수를 사용하겠다 선언을 하고
     2-2. btc는 output [0]이고 bgk는 output [1]로 출력을 뽑아냈구나

-----------

3. 함수 안에 있는 로직은 어떤 식으로 구성이 되어 있는지
    3-1. yaml_1에는 kr과 us가 있으니 두 번 반복하는구나
    3-2. yaml_2에는 1부터 10까지 있으니 10번 반복하겠구나

    3-3. if문에 i가 kr일 때 btc변수에 list로 1부터 10까지 저장하는구나
    3-4. if문에 i가 us일 때 btc변수에 list로 1부터 10까지 저장하는구나

그래서 최종 출력물이 

한국 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
미국 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

이렇게 나왔구나

 

함수의 최종 출력을 보고 그 뒤에 왜 이러한 출력이 나왔는지 함수의 내용을 분석하면 코드를 분석하고 이해하는데 시간을 줄일 수가 있다.

 

위의 코드에서 if문을 지우면 어떤 결과가 나올까?

yaml_1 = ['kr', 'us']
yaml_2 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 늘어날 데이터라고 가정하자

def for_test_info():
    btc = []
    bgk = []
    for i in yaml_1:
        for z in yaml_2:
            btc.append(z)
            bgk.append(z)
    return btc, bgk

output = for_test_info()
a_count = f'한국 : {output[0]}'
b_count = f'미국 : {output[1]}'

print(a_count)
print(b_count)

 

결과

한국 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
미국 : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

 

1부터 10까지 두 번 출력된다.

이유는 kr과 us가 두 번 반복 하기때문에 btc와 bgk에 두번 저장이 되는 것이다.

 

for문과 if문을 적절히 사용하면 필요한 데이터의 출력을 사용할 수가 있다.

 

댓글