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]
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
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
함수에서 몇 개의 인자를 넘길지 모르겠을 때, 넘길 수 있는 인자 갯수를 유연하게 사용하고 싶을 때 유용하게 사용할 수 있다.
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'}
파이썬에서는 함수를 포함한 모든 것이 객체이다. 따라서 함수도 변수에 할당이 될 수 있고, 함수에 넘길 수도 있다.
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