"프로그래밍 언어의 개념과 흐름에 대한 고찰 - 파이썬답게 코딩하기" 학습중...


함수와 관련하여 어렴풋이 알던 내용들 몇가지 정리해봅니다.


First-Class Function 관련


#!/usr/bin/python3
## First-Class Function
## 함수가 first class citizen 속성을 가지면 first class function이라고 하여 변수에 함수를 할당할 수 있고, 매개변수로 함수를
## 전달하거나 반환값으로 함수를 사용할 수 있습니다.
# def sqr(x) :
# return x*x
#
# def main() :
# print("function call")
# print(sqr(10))
#
# print("assign variable")
# f = sqr
# print(f(10))
#
# if __name__ == "__main__" :
# main()



Higher-Order Function 관련


# def sqr(x) :
# return x*x
#
# def bind(func, arg_list) :
# result = []
# for arg in arg_list :
# result.append(func(arg))
# return result
#
# def main() :
# arg_list = [5, 10]
# print("assign variable & send parameter")
# squares = bind(sqr, arg_list) ## 매개변수로 함수 sqr를 넣을 수도 있다.
# print(squares)
#
# if __name__ == "__main__" :
# main()

## 출력결과 => 이렇듯 함수를 하나의 개체로 보고 매개변수로 전달하고, 반환값으로 사용할 수 있어 유연한 코딩이 가능합니다.
# assign variable & send parameter
# [25, 100]



Higher-Order Function 관련


##Higher-Order Function
# LOWER_LIST = ["python", "python2", "python3"]
# UPPER_LIST = []
#
# def convert() :
# for data in LOWER_LIST :
# UPPER_LIST.append(data.upper())
#
# def main() :
# print("=== print result ===")
# convert()
# print(LOWER_LIST)
# print(UPPER_LIST)
#
# if __name__ == "__main__" :
# main()
## 위의 코드를 Higher-Order Function을 이용하여 짜면 아래와 같습니다.
# LOWER_LIST = ["python", "python2", "python3"]
# UPPER_LIST = []
#
# def convert(data) :
# return data.upper()
#
# def main() :
# print("=== print result ===")
# UPPER_LIST = map(convert, LOWER_LIST) ## map 함수는 내장 함수로서 첫번째 매개변수인 함수와 두번째 매개변수인 리스트를
## 매핑해서 결과를 반환합니다. 이로써 코드가 조금더 짧아졌습니다. Higher-Order Function을 사용하면 map과 같은 함수를 사용
## 해서 가독성이나 효율성을 높일 수 있습니다.
# print(LOWER_LIST)
# print(list(UPPER_LIST))
#
# if __name__ == "__main__" :
# main()
## 결과는 두 코드 모두 동일하게 아래와 같다.
# === print result ===
# ['python', 'python2', 'python3']
# ['PYTHON', 'PYTHON2', 'PYTHON3']



'파이썬(PYTHON)' 카테고리의 다른 글

파이썬의 함수3  (0) 2020.08.21
파이썬의 함수2  (0) 2020.08.20
파이썬의 변수  (0) 2020.08.18
openpyxl 모듈 활용 연습3  (0) 2020.08.16
openpyxl 모듈 활용 연습2  (0) 2020.08.16

+ Recent posts