함수
def func():
print('Hello')
func()
전달값과 반환값
def func1(a, b):
print('a + b : {0}'.format(a + b))
return a + b
def func2(a, b):
if a >= b:
print('a - b : {0}'.format(a - b))
return a - b
else:
print('a < b,', 'a : {0}'.format(a))
return a
def func3(a, b):
commission = 100
return commission, a - b - commission
a = 0
a = func1(a, 1000)
print('a : {0}'.format(a), '\n')
a = func2(a, 2000)
a = func2(a, 500)
print('a : {0}'.format(a), '\n')
commission, a = func3(a, 300)
print('commission : {0}, a : {1}'.format(commission, a))
기본값
def profile(name, age, main_lang):
print('name : {0}\tage : {1}\tmain language : {2}'\
.format(name, age, main_lang))
profile('aaa', 20, 'py')
profile('bbb', 25, 'js')
def profile(name, age = 17, main_lang = 'py'):
print('name : {0}\tage : {1}\tmain language : {2}'\
.format(name, age, main_lang)
profile('aaa', 20, 'js')
profile('bbb')
profile('ccc', 25)
키워드 값을 이용한 함수 호출
def profile(name, age, main_lang):
print(name, age, main_lang)
profile(name = 'aaa', main_lang = 'py', age = 20)
profile(main_lang = 'js', age = 25, name = 'bbb')
> 함수에서 전달받는 매개변수의 값을 키워드를 이용하여 함수를 호출하고, (키워드 = 값)을 넣어주면 순서와 상관없이 출력된다
가변 인자를 이용한 함수 호출
def profile(name, age, lang1, lang2, lang3, lang4, lang5):
print('name : {0}\tage : {1}\t'.format(name, age). end = '')
print(lang1, lang2, lang3, lang4, lang5)
profile('aaa', 20, 'py', 'java', 'js', 'c', 'c+')
profile('bbb', 25, 'c#', 'kotlin', 'html', swift', 'sql')
def profile(name, age, language*):
print('name : {0}\tage : {1}\t'.format(name, age), end = ' ')
for lang in language:
print(lang, end = ' ')
print('')
profile('ccc', 30, 'py', 'java', 'js', 'c', 'c+', 'c#', 'html'
profile('ddd', 40)
지역변수와 전역변수
gun = 10
def check(people):
global gun
gun = gun - people
print('result : {0}'.format(gun))
print('total count : {0}'.format(gun))
check(2)
print('total count : {0}'.format(gun))
gun = 10
def check(people):
gun = 20
gun = gun - people
print('result : {0}'.format(gun))
print('total count : {0}'.format(gun))
check(2)
> 지역변수 gun의 값은 18이지만 함수 호출이 끝나면 사라지며, 전역변수 gun과는 다른 변수이다. 따라서 전역변수 gun의 값은 여전히 10이다
print('total count : {0}'.format(gun))
gun = 10
def check_return(gun, people):
gun = gun - people
print('result : {0}'.format(gun))
return gun
print('total count : {0}'.format(gun))
gun = check_return(gun, 2)
print('total count : {0}'.format(gun))
> 일반적으로 전역변수를 많이 사용하면 코드 관리가 어려워짐, 가급적 함수의 전달값(파라미터)으로 던져서 계산하고 반환값을 받아서 사용하는 방법이 좋다
응용 : 조건문에서 함수의 반환값(True, False) 이용
def isPrime(x):
for i in range(2, x):
if x % i == 0:
return False
return True
alist = [12, 13, 7, 9, 19]
for j in alist:
if isPrime(j):
print(j, end = ' ')