Python/문법

파이썬 - 함수 중급

choisanghyun 2022. 1. 10. 21:16
728x90

1. 다양한 매개 변수

1-1. 위치 매개변수

가장  기본적인 매개변수

함수를  호출할 때 순서대로 데이터(인자)를 넘겨줘야 함

다른 매개변수와 함께 쓸 때는 항상 맨 앞에 써야한다

 

함수 정의

def my_func(a,b):
	print(a,b)

함수 호출

my_func(1,2)

 

1-2. 기본 매개변수

매개변수의 기본적인 값

함수를 정의할 때 매개변수의 기본값을 지정할 수 있음 ex) def 함수명(변수명='값'):

 

함수 정의

def post_info(title, content='내용없음'):
	print('제목:', title)
    print('내용:', content)

함수 호출

>>>post_info('출석합니다!')

제목: 출석합니다!
내용: 내용없음

 

1-3. 키워드 매개변수

함수 호출 시에 키워드를 붙여 호출

매개변수의 순서를 지키지 않아도 된다. (변수명='값')

 

함수 정의

def post_info(title, content):
	print('제목:',title)
	print('내용:',content)

함수 호출

>>> post_info(content='내용입니다',title='제목입니다')

제목: 제목입니다
내용: 내용입니다

 

1-4. 위치 가변 매개변수

가변 매개변수 = 개수가 정해지지 않은 매개변수

함수에 여러 개의 매개변수를 입력할 수 있음

매개변수 앞에 *가 붙는다.(튜플형)

 

함수 정의

def print_fruits(*args):
	for arg in args:
		print(arg)

함수 호출

>>>print_fruits('apple','orange','mango')

apple
orange
mango

 

1-5. 키워드 가변 매개변수

가변 매개변수 = 개수가 정해지지 않은 매개변수

매개변수 앞에 **가 붙는다.(딕셔너리형)

함수 정의

def comment_info(**kwargs):
	for key, value in kwargs.items():
		print(f'{key}:{value}')

함수 호출

>>>comment_info(name='파린이',content='정말 감사합니다!')

name:파린이
content:정말감사합니다.

 

1-6. 매개변수 작성 순서

위치 - 기본 - 위치 가변 - 키워드(기본) - 키워드 가변

def poost_info(a,b,content='내용없음',*tags,title, **kwargs):
	print(f'제목 :{title}')
	print(f'내용 :{content}')
	print(f'태그 :{tags}')
    

>>>post_info('위치1','위치2',태그1,태그2,title='제목입니다', name=홍길동, age=30)

 

2. 람다 함수

이름을 지을 필요도 없는 간단한 형태의 함수

다른 함수의 인자로 넣을 수 있다.

코드가 간결해지고, 메모리가 절약됨

 

2-1. 람다 함수 사용 방법 (기본)

기존 함수 정의 방법

def 함수명(매개변수):
	return 결과
    
def minus_one(a):
	return a-1

기존 함수 호출 방법

>>> minus_one(10)
9

 

람다 함수 정의 방법

lambda 매개변수:결과

lambda a:a-1

람다함수 호출 방법

#바로 호출
>>>(lambda a:a-1)(10)
9

#변수로 지정 후 호출
>>>minus_one = lambda a:a-1
>>>minus_one(10)
9

 

2-2. 람다 함수 사용 방법 (if문 사용)

기존 함수 정의 방법

def is_positive_number(a):
	if a>0:
		return True
	else:
		return False

기존 함수 호출 방법

>>>is_positive_number(-2)
False

 

 

람다 함수 정의 방법

lambda a:True if a>0 else False

람다함수 호출 방법

>>>(lambda a:True if a>0 else False)(-2)
False

 

3. map 함수

순서가 있는 자료형의 모든 원소에 함수를 적용 

 

3-1. map함수 사용 방법

map(함수, 순서가 있는 자료형(ex. 리스트, 튜플, 딕셔너리))

map(int, ['3','4','5','6'])

#리스트 사용법
list(map(int, ['3','4','5','6']))

 

3-2. 예제 (리스트 모든 요소의 공백 제거)

1) for문 사용했을 때

items = [' 로지덱 마우스 ',' 앱솔키보드 ']
for i in range(len(items)):
	items[i]=items[i].strip()

2) map 사용했을 때

def strip_all(x):
	returen x.strip()
items = [' 로지덱마우스 ', ' 앱솔키보드 ']
items = list(map(strip_all,items))

3) map + 람다함수 사용

items=[' 로지덱마우스 ',' 앱솔키보드 ']
items=list(map(lambda x:x.strip(),items))

 

4. filter 함수

함수를 통해 논리값 계산 후, True값을 가진 값만 반환

 

4-1. filter 함수 사용방법

filter(함수, 순서가 있는 자료형(ex. 리스트, 튜플, 딕셔너리))

def func(x):
	return x<0
filter(func, [-3,-2,0,5,7])

 

4-2. 예제 (리스트에서 길이가 3이하인 문자들만 필터링)

1) for문 사용했을 때

animals = ['cat', 'tiger', 'dog', 'bird', 'monkey']
result = []
for i in animals:
	if len(i) <= 3:
			result.append(i)

2) filter 사용했을 때

animals = ['cat', 'tiger', 'dog', 'bird', 'monkey']
def word_check(x):
	return len(x) <=3
result = list(filter(word_check, animals))

3) filter + 람다함수 사용

animals = ['cat', 'tiger', 'dog', 'bird', 'monkey']
result = list(filter(lambda x : len(x) <= 3, animals))