1. 오늘 배운것
● 함수의 정의 : 입력을 받아 원하는 처리를 한 후 출력을 내보내는 일련의 작업을 수행하는 코드 블록입니다.

● 함수의 호출

ex)

● 함수의 필요성
- 코드 재사용: 반복되는 코드를 함수로 정의하여 여러 곳에서 재사용할 수 있습니다.
- 모듈화: 프로그램을 여러 개의 작은 모듈로 나누어 개발 및 관리할 수 있습니다.
- 유지 보수 용이성: 함수는 각각의 기능을 독립적으로 정의하므로, 수정이나 확장이 필요할 때 해당 함수만 수정하면 됩니다.
- 가독성 향상: 함수는 코드의 의도를 명확하게 표현할 수 있으며, 복잡한 작업을 함수로 분해하여 이해하기 쉽게 만듭니다.
● 전역변수와 지역변수

- 전역변수 (Global Variables)
- 전역변수는 프로그램 전체에서 접근 가능한 변수로, 어디서든지 사용할 수 있습니다.
- 전역변수는 프로그램이 시작될 때 생성되고, 프로그램이 종료될 때까지 메모리에 유지됩니다.
- 전역변수는 프로그램의 어디서든지 접근할 수 있으므로, 여러 함수에서 공통적으로 사용되는 값을 저장할 때 유용합니다.
- 하지만 너무 많은 전역변수를 사용하면 코드의 가독성이 떨어지고 디버깅이 어려워질 수 있습니다.
- 지역변수 (Local Variables)
- 지역변수는 특정한 범위(예: 함수 내부)에서만 접근 가능한 변수로, 해당 범위를 벗어나면 사용할 수 없습니다.
- 지역변수는 해당 범위에서 생성되고, 범위를 벗어나면 메모리에서 사라집니다.
- 함수 내에서 정의된 변수는 해당 함수 내에서만 사용 가능한 지역변수입니다.
- 지역변수는 함수 내에서만 사용되므로, 해당 함수에서만 유효하고 다른 함수나 코드 블록에서는 사용할 수 없습니다.
- 지역변수는 함수가 실행될 때 생성되고, 함수가 종료되면 메모리에서 제거되므로 메모리 관리에 효율적입니다
두 쿼리의 차이를 보면 gobal_var의 경우 함수 외부로 빼주어 프로그램 어디든 사용 가능하게 하였고
local_var를 보면 함수 내부로 들어가있어 변수가 함수 내부에서만 사용 가능하게 끝 되어있습니다.
● 매개변수와 인수

add_number 함수의 매개변수는 x,y 입니다. 이를 통해 add_numbers의 출력값이 결정됩니다.
● 위치인수

인수를 넣는 순서에 따라 배겨변수 위치에 전달됩니다.
● 키워드 인수

이렇게 키워드를 지정해 줄 수있게 함수를 만들면 순서가 바뀌어도 정해진 위치에 들어가 출력되게 됩니다.
● 기본값 설정하기

함수내에 아무것도 안들어가도 기본값이 출력되게 할 수 있습니다.
● 가변인수 활용하기
| *args | 함수를 호출할때 임의의 개수의 위치 인수를 전달합니다. |
| *kwargs | 함수를 호출할 때 임의의 개수의 키워드 인수를 전달합니다. |

먼저 args 의 경우 위와 같이 따로 1,2,3,4,5 를 적지 않아도 모든 인수의 위치를 가져와 for 구문으로 전부를 더할 수 있게 만들어 줍니다.

*kwargs의 경우 print_info의 key와 value를 가져와 출력해주는 것을 볼 수 있습니다.
활용할 수 있을지는 모르겠는데 나중에 익숙해지면 유용할것 같습니다.
2. 오늘 해본것.

