1.3 함수 #Writing Idiomatic Python 3.1
1. 함수 인자의 default 값으로 mutable object(가변객체)를 사용하는 것은 피하자
👎
def f(a, L=[]):
print(f'L: {L}')
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
L: [] [1] L: [1] [1, 2] L: [1, 2] [1, 2, 3]
👍
def f(a, L=None):
print(f'L: {L}')
if L is None:
L = []
L.append(a)
return L
print(f(1))
print(f(2))
print(f(3))
L: None [1] L: None [2] L: None [3]
2. expressions(표현식)의 결과를 리턴할 수 있다
👎
def all_equal(a, b, c):
result = False
if a == b == c:
result = True
return result
print(all_equal(1, 1, 1))
True
👍
def all_equal(a, b, c):
return a == b == c
print(all_equal(1, 1, 1))
True
3. keyword arguments 를 적절하게 사용하면 좋다
👎
def python_list(list_value, sep):
print(sep.join(list_value))
the_list = ['a', 'b', 'c']
python_list(the_list, ' ')
a b c
👍
def python_list(list_value, sep=' '):
print(sep.join(list_value))
the_list = ['a', 'b', 'c']
python_list(the_list)
a b c
4. *args, **kwargs 사용하기
함수에서 몇 개의 인자를 넘길지 모르겠을 때, 넘길 수 있는 인자 갯수를 유연하게 사용하고 싶을 때 유용하게 사용할 수 있다.
👎
def person(name1=None, name2=None, age=None, mbti=None):
print(name1, name2, age, mbti)
person('name1')
person('name1', 'name2')
print('---------------------')
person('name1', 'nam2', age=30)
person('name1', 'nam2', age=30, mbti='entj')
name1 None None None name1 name2 None None --------------------- name1 nam2 30 None name1 nam2 30 entj
👍
def person(*names, **kwargs):
print(names)
print(kwargs)
person('name1')
person('name1', 'name2')
print('---------------------')
person('name1', 'nam2', age=30)
person('name1', 'nam2', age=30, mbti='entj')
('name1',) {} ('name1', 'name2') {} --------------------- ('name1', 'nam2') {'age': 30} ('name1', 'nam2') {'age': 30, 'mbti': 'entj'}
5. 함수를 하나의 값처럼 사용하기
파이썬에서는 함수를 포함한 모든 것이 객체이다. 따라서 함수도 변수에 할당이 될 수 있고, 함수에 넘길 수도 있다.
👎
def print_add():
print(1+2)
def print_sub():
print(1-2)
def print_mul():
print(1*2)
print_add()
print_sub()
print_mul()
3 -1 2
👍
import operator as op
def calculate(operator):
print(operator(1, 2))
calculate(op.add)
calculate(op.sub)
calculate(op.mu)
3 -1 2
Author And Source
이 문제에 관하여(1.3 함수 #Writing Idiomatic Python 3.1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@oen/1.3-함수-Writing-Idiomatic-Python-3.1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)