for문 : 되풀이 작업을 연속적으로 수행
def문 : 필요시 호출하여 되풀이 작업을 간헐적으로 수행
def 함수명(매개변수) :
함수가 수행할 코드
return 반환할 객체
함수명(인수) -> 객체
매개변수(parameter)
를 함수 호출 시에는 인수(argument)
라고 부름def favoriteFruit ():
result = "Blueberry"
return result
value = favoriteFruit()
print(value)
def f1(x):
a = 3
b = 5
y = a * x + b
return y
c = f1(10)
print(c) # 35
def f2(x):
a = 3
b = 5
y = a * x + b
print(y)
d = f2(10)
print(d)
# 35
# None
변수0, 변수1, 변수2, ... = (객체0, 객체1, 객체2, ... )
a, b, *c, d = (1, 2, 3, 4, 5, 6)
print(a) # 1
print(b) # 2
print(c) # [3, 4, 5]
print(d) # 6
*
를 붙여서 인수로 보낸 모든 객체들을 묶어서 하나의 객체
로 관리def packing(args):
print(args)
packing(1,2,3,4,5,6)
# TypeError: packing() takes 1 positional argument but 6 were given
위의 예시의 경우 매개변수는 하나인데 인수는 6개로 오류가 남
def packing(*args):
print(args)
packing(1,2,3,4,5,6)
# (1, 2, 3, 4, 5, 6)
근데 이렇게 매개변수 앞에 *
를 붙여주면 인수를 args라는 튜플
하나로 묶어 받겠다는 것
def add_many(*args):
result = 0
for i in args:
result = result + i
return result
result = add_many(1,2,3)
print(result)
# 6
print(add_many(1,2,3,4,5,6,7,8,9,10))
# 55
**
를 붙여서 인수로 보낸 모든 객체들을 하나의 딕셔너리
로 관리def tester(**kwargs):
print(kwargs)
tester(a='apple', b='banana')
# {'a': 'apple', 'b': 'banana'}
def func():
local_var = "지역 변수"
print(local_var)
func()
# 지역 변수
print(local_var)
# NameError: name 'local_var' is not defined
# local_var이 함수 내부에 있는 지역 변수이기 때문에 접근을 못 함
global
키워드 사용def tester():
global obj
obj = 10
obj = 20
tester() 🔴
print(obj) # 10
def tester():
global obj
obj = 10
obj = 20
print(obj) # 20
def tester():
global obj
obj = 10
tester()
obj = 20 🟢
print(obj) # 20
lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식
lambda a, b: a+b
result = add(3,4)
for i in range(10):
print(i, end=' ')
# 0 1 2 3 4 5 6 7 8 9
객체.메소드명(인수)
: 메소드명 왼쪽에 객체와 .을 붙임print('coding'.upper())
# CODING
# 'coding'이라는 문자열을 인수로 넣고 다 대문자로 바꾼 것
객체.어트리뷰트명
import 모듈명
: 외부 모듈 호출from 모듈명 import 함수
: 모듈에서 함수만 호출내장함수(built-in function)
import statistics
파이썬 기본 모듈. 간단한 통계 연산을 수행하는 함수 수록
import statistics
print(statistics.mean([4,5,6,7,8]))
# 6
내장함수는 그냥 쓰면 됨
print(round(21.34567, 3))
# 21.346