티스토리 뷰
Python 03 - Python 함수/ 내장/ 외장/ 람다 함수
python의 함수는 크게 2가지 분류
- 1. 내장함수
- 2. 사용자 정의 함수 (user define function)
- 내장함수와 이름이 겹치면 재정의된 함수로 대체됨
- 관용적으로 함수 이름에 대문자 사용x, 소문자와 밑줄로
- 파이썬은 함수 인자에도 data type을 명시하지 않는다
<사용자 정의 함수>
1. 일반적인 함수 정의
def my_sum(a, b, c):
return a + b + c
result = my_sum(10, 20, 30)
print("함수 호출의 결과는 : {}".format(result)) # 함수 호출의 결과는 : 60
2. 인자가 가변적인 경우
=> *args => 인자를 튜플로 받는다
## 함수를 호출하는데 인자가 가변적일 경우 => *args
def my_sum2(*args): # 전달되는 인자를 tuple로 받는다
tmp = 0
for k in args:
tmp += k
return tmp
result = my_sum2(1, 2, 3, 4, 5, 6)
print("결과값은 : {}".format(result)) # 결과값은 : 21
3. 결과값이 2개인 경우 -> 튜플로 받는 것
## python은 함수의 결과값이 (리턴값이) 2개 이상일 경우 => 사실 튜플임
def my_operator(a, b):
result1 = a + b
result2 = a * b
return result1, result2 # 괄호를 생략한 tuple로 리턴함
result = my_operator(10, 20)
print(type(result)) # <class 'tuple'>
# tuple을 각각 받아올 수 있다
# (tmp1, tmp2)
tmp1, tmp2 = my_operator(10, 20)
print(tmp1) # 30
print(tmp2) # 200
4. default parameter -> 맨 마지막 인자에만 사용 가능
- 가변 인자 (formal parameter)
- 실인자 (real parameter)
## default parameter
# => 맨 마지막 인자에만 사용 가능
# def my_default(a, b=10, c): => error
def my_default(a, b, c=True): # 가변인자 (formal parameter)
data = a + b
if data > 10 and c:
return data
else:
return 0
result1 = my_default(10, 20, False)
result2 = my_default(10, 20) # 실인자 (real parameter)
5. mutable / immutable 인자
- call-by-value & call-by-reference 와 비슷
- 실인자의 데이터 - 변화X => immutable (숫자, 문자열, Tuple)
- 실인자의 데이터 - 변화O => mutable (list, dict)
def my_func(tmp_number, tmp_list): # 리턴값이 없는 함수
tmp_number = tmp_number + 100
tmp_list.append(100)
data_x = 10 # Numeric
data_list = [10] # list
my_func(data_x, data_list)
print(data_x) # 10 변화X => immutable (숫자, 문자열, Tuple)
print(data_list) # [10, 100] 변화O => mutable (list, dict)
<내장 함수>
- id() : 객체의 고유 주소값을 return하는 함수
- 숫자인 경우 0 ~256까지는 많이 사용하는 객체(값)
my_list1 = [1, 2, 3, 4]
my_list2 = [1, 2, 3, 4]
print(id(my_list1)) # 1660836073992
print(id(my_list2)) # 1660836073992 => 내용이 같을 지라도 다른 주소값을 갖는다
my_num1 = 100
my_num2 = 100
print(id(my_num1)) # 140709997743472
print(id(my_num2)) # 140709997743472 => 숫자는 같은 주소값을 가질 수 있다
<lambda expression>
- 함수와는 다르지만 함수의 역할을 수행하는 lambda expression (람다 표현식)
- 함수의 이름이 없음 (= annonymous function)
- 이름이 없기 때문에
- 변수에 저장, 함수의 인자로 사용,함수의 결과값 (리턴값)으로 함수를 리턴
- => first class
- 람다가 함수와 결정적으로 다른 점 : 람다는 대체식
# def my_func(tmp_number, tmp_list): # 리턴값이 없는 함수
# tmp_number = tmp_number + 100
# tmp_list.append(100)
my_lambda = lambda x1, x2, x3: x1 + x2 + x3
my_lambda(10, 20, 30) # => 10 + 20 + 30
'멀티캠퍼스 AI과정 > 01 Python Basic' 카테고리의 다른 글
Python 05, 06 - Magic function, First Class, Closure (0) | 2021.01.05 |
---|---|
Python 04 - Python 객체지향 프로그래밍 1, 2, 3 (0) | 2021.01.05 |
Python 02 - 입출력, 제어문, List Comprehension (0) | 2021.01.05 |
Python - 01 DateTime (0) | 2021.01.05 |
Python 01 - Python Data Type (0) | 2021.01.05 |
댓글