728x90
파이썬에서 함수는 재사용 가능한 코드 블록으로, 특정 작업을 수행하기 위해 사용됩니다. 함수를 사용하여 코드를 모듈화하고, 중복을 피하며, 코드의 가독성을 높일 수 있습니다. 파이썬의 함수 사용 방법은 다음과 같습니다
1. 함수의 사용방법
def 함수이름(매개변수1, 매개변수2, ...):
# 함수 내용
# 함수가 수행할 작업
return 반환값 # 반환값이 없는 경우에는 생략 가능
위의 형식으로 함수를 정의할 수 있습니다. 함수 이름은 사용자가 원하는대로 지정할 수 있으며, 함수의 내용은 def 키워드 다음에 들여쓰기를 해서 작성합니다. 함수의 인자는 괄호 안에 지정되며, 필요한 만큼 인자를 선언할 수 있습니다.
아래는 함수를 사용한 몇 가지 예시입니다
2. 매개변수가 없는 함수
def say_hello():
print("안녕하세요!")
say_hello() # 함수 호출
3. 매개변수가 있는 함수
word = "yj"
def func1(a):
print(f"hello {a}")
func1(word) #출력:hello yj
4. 반환값이 있는 함수
def add(a, b):
return a + b
result = add(3, 5)
print(result) # 출력: 8
5. 다중 리턴
#다중 리턴
def func3(num):
value1 = num*10
value2 = num*20
value3 = num*30
return value1,value2,value3
x,y,z = func3(2)
print(f"x:{x},y:{y},z:{z}") #출력 x:20,y:40,z:60
6. 여러 자료형으로 출력
def func4(num):
value1 = num*10
value2 = num*20
value3 = num*30
return (value1,value2,value3)
t = func4(10)
print(type(t),t,list(t)) #출력: <class 'tuple'> (100, 200, 300) [100, 200, 300]
def func5(num):
value1 = num*10
value2 = num*20
value3 = num*30
return [value1,value2,value3]
l = func5(5)
print(type(l),l,set(l)) #출력:<class 'list'> [50, 100, 150] {50, 100, 150}
def func6(num):
value1 = num*10
value2 = num*20
value3 = num*30
return {
"v1":value1,
"v2":value2,
"v3":value3
}
d = func6(7)
print(type(d),d) #출력:<class 'dict'> {'v1': 70, 'v2': 140, 'v3': 210}
7. 가변인자 사용
#가변인자 사용
#args(언팩킹)->튜플형태로 보낼때 주로 사용
def func7(*args):
for i,v in enumerate(args):
print(f"index:{i}, value:{v}")
print("----")
func7("qwe")
#출력: index:0, value:qwe
func7("abc","def")
#출력:
# index:0, value:abc
# index:1, value:def
#**kwargs(언팩킹) ->딕셔너리를 보낼 때 주로 사용
def func8(**kwargs):
print(kwargs)
func8(name1="kim") #출력: {'name1': 'kim'}
func8(name1="kim",name2="young") #출력:{'name1': 'kim', 'name2': 'young'}
#혼합
def func9(args1,args2,*args,**kwargs):
print(f"args1: {args1}, args2: {args2}, *args: {args}, **kwargs: {kwargs}")
func9(10,20,"abc","def","kkk",age1=20,age2=30,age30=40)
#출력: args1: 10, args2: 20, *args: ('abc', 'def', 'kkk'), **kwargs: {'age1': 20, 'age2': 30, 'age30': 40}
8. 중첩함수
def func10(num): #1번 매개변수 100받음
def func_in_func(num): # 4번 매개변수 200받음
print(num) #5번: 200출력
print("in") #3번 문자열 출력
func_in_func(num+100) # 2번 #매개변수 100+100=200받음
func10(100)
#출력:
# in
# 200
# func_in_func(200) ->에러발생->내부의 함수는 직접호출할 수 없다
9.람다(lambda)
1) 람다식의 장단점:
장점:
간결성: 람다식은 코드를 간결하게 만들 수 있습니다. 특히 간단한 함수를 정의할 때, 별도의 함수 정의보다 람다를 사용하는 것이 코드를 더 간편하게 만들 수 있습니다.
익명 함수: 람다식은 익명 함수로 사용될 수 있어, 필요한 곳에서 바로 함수를 정의하고 사용할 수 있습니다.
함수형 프로그래밍 지원: 람다식은 함수형 프로그래밍의 개념을 지원하며, 고차 함수(함수를 인자로 받거나 반환하는 함수)를 다룰 때 편리합니다.
단점:
가독성: 람다식을 남용하면 코드의 가독성이 감소할 수 있습니다. 특히 복잡한 로직이나 긴 람다식은 이해하기 어려울 수 있습니다.
디버깅 어려움: 람다식이 복잡한 경우, 디버깅이 어려울 수 있습니다. 함수 이름이 없기 때문에 디버깅 메시지에서 함수의 이름을 확인하기 어려울 수 있습니다.
제약 사항: 람다식은 단일 표현식으로 제한되어 있어, 복잡한 로직을 표현하기 어려울 수 있습니다.
2)예시코드
#함수는 객체가 생성됨 ->리소스(메모리)에 저장
#lambda는 heap영역에 저장
#일반함수
def func11(a,b):
return a*b
v1 = func11(10,20)
print(v1) #출력: 200
#람다
lambda_func = lambda x,y:x*y #lambda 매개변수 : 결과
print(lambda_func(50,50)) #출력: 2500
'PYTHON Programming > Python' 카테고리의 다른 글
[python] 클래스 (0) | 2024.05.11 |
---|---|
[python] 입출력 (0) | 2024.04.23 |
[python] 컴프리헨션 (0) | 2024.04.23 |
[python] 반복문 (0) | 2024.04.23 |
[python] 제어문 (0) | 2024.04.22 |