티스토리 뷰

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
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함