"프로그래밍 언어의 개념과 흐름에 대한 고찰 - 파이썬답게 코딩하기" 학습중...
함수와 관련하여 어렴풋이 알던 내용들 몇가지 정리해봅니다.
## *args와 kwargs
## 가변 매개 변수, args = arguments, kwargs = keyword arguments
## args는 non keyword 가변 인자를 다루고 kwargs는 keyword 가변 인자를 다룬다.
#!/usr/bin/python3
# def args_test(*args) :
# print("=== args list ===")
# for arg in args :
# print("Argument : %s" % arg)
#
# def kwargs_test(**kwargs) :
# print("=== kwargs list ===")
# for keyword, arg in kwargs.items() :
# print("Argument keyword : %s, arg : %s" % (keyword, arg))
#
# def main() :
# args = ['red', 'blue', 'first', 'second']
# kwargs = {'red' : 'color', 'blue' : 'color', 'first' : 'number', 'second' : 'number'}
# args_test(*args)
# kwargs_test(**kwargs)
#
# if __name__ == "__main__" :
# main()
# === args list ===
# Argument : red
# Argument : blue
# Argument : first
# Argument : second
# === kwargs list ===
# Argument keyword : red, arg : color
# Argument keyword : blue, arg : color
# Argument keyword : first, arg : number
# Argument keyword : second, arg : number
# def test(name, *args, **kwargs) : ## 함수 인자의 순서에 주의
# print("=== fixed argument ===")
# print("fixed argument : %s" % name)
# print("=== args list ===")
# for arg in args :
# print("argement : %s" %arg)
# print("=== kwargs list ===")
# for keyword, arg in kwargs.items() :
# print("argument keyword : %s, arg : %s" %(keyword, arg))
#
# def main() :
# args = ['red', 'blue', 'first', 'second']
# kwargs = {'red' : 'color', 'blue' : 'color', 'first' : 'number', 'second' : 'number'}
# test("python", *args, **kwargs)
# test("python", 'red', 'blue', 'green', red = "color", blue = "color")
#
# if __name__ == "__main__" :
# main()
# === fixed argument ===
# fixed argument : python
# === args list ===
# argement : red
# argement : blue
# argement : first
# argement : second
# === kwargs list ===
# argument keyword : red, arg : color
# argument keyword : blue, arg : color
# argument keyword : first, arg : number
# argument keyword : second, arg : number
# === fixed argument ===
# fixed argument : python
# === args list ===
# argement : red
# argement : blue
# argement : green
# === kwargs list ===
# argument keyword : red, arg : color
# argument keyword : blue, arg : color
## 주의할 점 : 가변 인자에도 순서가 있다. 1. 고정 인자, 2. non keyword 가변 인자, 3. keyword 가변 인자
## partial application
# def partial(func, *partial_args) :
# def wrapper(*extra_args) :
# args = list(partial_args)
# args.extend(extra_args)
# return func(*args)
# return wrapper
# def logging(year, month, day, title, content) :
# print("%s-%s-%s %s:%s" %(year, month, day, title, content))
#
# def main() :
# print("=== use logging function ===")
# logging("2017", "12", "28", "python2", "end of support in 2020")
# logging("2017", "12", "28", "python3", "updating")
# print("=== use partial function ===")
# f = partial(logging, "2017", "12", "28")
# f("python2", "end of support in 2020")
# f("python3", "updating")
#
# if __name__ == "__main__" :
# main()
# === use logging function ===
# 2017-12-28 python2:end of support in 2020
# 2017-12-28 python3:updating
# === use partial function ===
# 2017-12-28 python2:end of support in 2020
# 2017-12-28 python3:updating
## 위의 코드는 내장 함수로 다시 구현 가능하다.
# from functools import partial
#
# def logging(year, month, day, title, content) :
# print("%s-%s-%s %s:%s" %(year, month, day, title, content))
#
# def main() :
# print("=== use partial function ===")
# f = partial(logging, "2017", "12", "28")
# f("python2", "end of support in 2020")
# f("python3", "updating")
#
# if __name__ == "__main__" :
# main()
# === use partial function ===
# 2017-12-28 python2:end of support in 2020
# 2017-12-28 python3:updating
'파이썬(PYTHON)' 카테고리의 다른 글
통계 - 주택 청약 통장 계좌수 (0) | 2020.08.22 |
---|---|
파이썬의 기본 문법1 (0) | 2020.08.21 |
파이썬의 함수2 (0) | 2020.08.20 |
파이썬의 함수1 (0) | 2020.08.19 |
파이썬의 변수 (0) | 2020.08.18 |