⏰ 2024.12.17 (D+49)
- 파이썬에서 함수는 코드 재사용성과 모듈화된 설계를 위한 중요한 도구
- 함수는 다양한 방법으로 정의하고 호출 가능
- 함수의 매개변수는 고정 인수, 가변 인수, 위치 인수, 키워드 인수 등 여러 형태를 지원
- 함수 안에서 사용되는 변수는 지역 변수와 전역 변수로 구분
- 파이썬에서 함수는 def 키워드를 사용하여 정의해야 한다
- 함수는 매개변수를 받을 수 있으며, 필요에 따라 반환값을 가질 수도 있다
✅ 2.1 고정 인수 (Fixed Arguments)
- 고정 인수는 함수 호출 시 매개변수의 수가 고정
- 호출 시 매개변수의 순서대로 값을 전달해야 한다
def function1(): print('-' * 30) print('1.New 2.Continue 3.Exit') print('-' * 30) function1()
✅ 2.2 가변 인수 (Variable Arguments)
☑️ 위치 가변 인수 (args)
: 함수 호출 시 전달되는 인수의 개수가 정해지지 않은 경우, args를 사용하여 여러 인수를 받을 수 있다def function3(start, end): total = sum(range(start, end + 1)) print(f'{start}부터 {end}까지 누적합: {total}') function3(1, 10) function3(1, 100)☑️ 키워드 가변 인수 (kwargs)
: 함수 호출 시 전달되는 인수 중 키워드 인수를 받을 때 사용def keywordVariable(**kwargs): print(f'값: {kwargs}, 타입: {type(kwargs)}') keywordVariable(name='ICT', age=30)
✅ 2.3 매개변수 초기화 (Default Arguments)
- 매개변수에 초기값을 설정하면, 해당 인수가 호출 시 전달되지 않았을 경우 기본값이 사용
def parameterWithDefault(param1, param2=1004): print(f'위치 고정 인수: {param1}, 위치 고정 인수 매개변수 초기화: {param2}') parameterWithDefault(100) parameterWithDefault(100, 200)
- 람다 함수는 간단한 함수나 일회성으로 필요한 함수들을 정의할 때 유용하다
- 람다 함수는 lambda 키워드를 사용
- 기본적으로 return 키워드 없이 하나의 표현식만을 가질 수 있다
plus = lambda arg: arg + 10 print(plus(5)) # 15☑️ 람다 함수로 리스트와 딕셔너리 처리
operations = [lambda x, y: x + y, lambda x, y: x - y, lambda x, y: x * y, lambda x, y: x / y] print(operations[0](10, 20)) # 30 ops_dict = {'+': operations[0], '-': operations[1], '*': operations[2], '/': operations[3]} print(ops_dict['+'](10, 20)) # 30
✅ 4.1 지역 변수 (Local Variables)
- 함수 내에서 선언된 변수는 함수 외부에서는 접근할 수 없는 지역 변수
- 람다 함수에서도 사용된 변수는 모두 지역 변수로 간주
def add(*args): if len(args) != 0: return f'{args[0]}부터 {args[len(args)-1]}까지 누적합: {sum(args)}' else: return '전달된 인수가 없어요' print(add()) # 전달된 인수가 없어요 print(add(*[i for i in range(1, 11)])) # 1부터 10까지 누적합: 55
✅ 4.2 전역 변수 (Global Variables)
- 전역 변수는 함수 외부에서 선언되어 스크립트 전체에서 사용 가능한 변수
- 함수 내에서도 global 키워드를 사용하면 전역 변수에 접근하거나 수정 가능
i = 10 # 전역 변수 def method(): global i # 전역 변수 i 사용 i = 100 print('함수 안의 i:', i) method() print('함수 밖의 i:', i) # 함수 밖의 i: 100
✅ 5.1 고정 인수와 가변 인수 혼합
- 고정 인수와 가변 인수를 혼합하여 함수 정의를 할 수 있다
- 이때, 고정 인수는 항상 가변 인수보다 먼저 와야 한다
def mixed(args1, *args2, args3='초기값', **kwargs): print(f'위치 고정 인수: {args1}, 위치 가변 인수: {args2}, 매개변수 초기화: {args3}, 키워드 가변 인수: {kwargs}') mixed(2024, 10, 20, 30, 40, 50) mixed(2024, 10, 20, 30, 40, 50, args3='가길동', username='ICT', password='1234')
✅ 5.2 람다 표현식 활용
lambda_ = lambda x, *args, **kwargs: [x, args, kwargs] print(lambda_(1004)) # [1004, (), {}] print(lambda_(1004, 10, 20, 30, 40, 50)) # [1004, (10, 20, 30, 40, 50), {}] print(lambda_(1004, 10, 20, 30, 40, 50, username='ICT', password='1234')) # [1004, (10, 20, 30, 40, 50), {'username': 'ICT', 'password': '1234'}]
- 파이썬 함수는 다양한 방식으로 정의할 수 있으며, 이를 통해 코드의 재사용성과 유지보수성을 높일 수 있다
- 고정 인수와 가변 인수, 람다 함수와 매개변수 초기화 등의 개념을 활용하면 훨씬 더 효율적인 코드 작성이 가능
- 함수 내에서 사용하는 변수의 범위인 지역 변수와 전역 변수를 잘 이해하고 사용함으로써 프로그램의 동작을 예측 가능하고 명확하게 할 수 있다