print()
input()
def 함수이름 ():
실행할 코드
# 함수 안의 num은, 함수 밖의 num과는 다른 새로운 지역변수
num = 10
def printNum():
num = 20
print(num)
printNum()
print(num)
20
10
global
키워드a = 0
def func():
global a
a += 1
for i in range(10)
func()
print(a)
10
- 가변 매개변수는 매개변수를 원하는 만큼 받을 수 있습니다.
- 가변 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.
- 가변 매개변수는 하나만 사용할 수 있습니다.
def 함수이름(매개변수1, 매개변수2, *가변 매개변수):
print(매개변수1)
print(매개변수2)
print(가변매개변수)
함수이름(0,1,2,3,4,5,6,7,8,9)
0
1
(2, 3, 4, 5, 6, 7, 8, 9)
- 기본 매개변수는 매개변수에 아무것도 넣지 않아도 들어가는 값입니다.
- 매개변수 이름을 지정하여 키워드 매개변수라고도 합니다.
- '매개변수=값'의 형태로 되어있습니다.
- 기본 매개변수 뒤에는 일반 매개변수가 올 수 없습니다.
def print_n_times(value, n=5):
for i in range(n)
print(value)
print_n_times("안녕하세요")
안녕하세요
안녕하세요
안녕하세요
안녕하세요
안녕하세요
일반 매개변수 - 가변 매개변수 - 기본 매개변수 순서로 매개변수를 선언합니다.
def function(일반매개변수A, 일반매개변수B, *가변매개변수, 기본매개변수A=10, 기본매개변수B=20):
print(일반매개변수A, 일반매개변수B)
print(가변매개변수)
print(기본매개변수A, 기본매개변수B)
function(0,1,2,3,4,5,6,7,8,9,10, 기본매개변수B=12)
0 1
(2,3,4,5,6,7,8,9,10)
10 12
def add(a,b):
result = a+b
print(result)
x = add(3,2)
print(x)
none
def add(a,b):
result = a+b
return result
x = add(3,2)
print(x)
5
def 함수(매개변수):
변수 = 초깃값
# 여러 가지 처리
# 여러 가지 처리
# 여러 가지 처리
return 변수
def operator(a,b):
add_var = a+b
subtract_var = a-b
multiply_var = a*b
divide_var = a/b
return add_var, subtract_var, multiply_var, divide_var
# 반환값이 여러 개인 경우 튜플의 형태로 반환됩니다.
print(operator(7,3))
# 튜플의 기능을 활용하여 변수에 값을 할당할 수 있습니다.
a, b, c, d = operator(7,3)
print(a, b, c, d)
(10, 4, 21, 2.3333333333333335)
10 4 21 2.3333333333333335
# 소수를 찾는 프로그램을 만드는 예시입니다.
def isPrime(x):
for i in range(2,x):
if x%i==0:
return False
return True
a = [12, 13, 7, 9, 19]
for i in a:
if isPrime(i):
print(i, sep=',', end=' ')
13 7 19
재귀함수는 자기자신을 호출하는 함수로, 함수 내부에서 함수를 호출하는 함수입니다.
# n! = 1*2*3*(n-2)*(n-1)*n
def factorial_1(n):
변수 = 1
for i in range(1, n+1)
변수 *= i
return 변수
print("1!:", factorial_1(1))
print("2!:", factorial_1(2))
print("3!:", factorial_1(3))
print("4!:", factorial_1(4))
print("5!:", factorial_1(5))
1!: 1
2!: 2
3!: 6
4!: 24
5!: 120
# 0! = 1
# n! = n*(n-1)!
def facorial_2(n):
if n == 0 :
return 1
else:
return n * factorial(n-1)
print("1!:", factorial_1(1))
print("2!:", factorial_1(2))
print("3!:", factorial_1(3))
print("4!:", factorial_1(4))
print("5!:", factorial_1(5))
1!: 1
2!: 2
3!: 6
4!: 24
5!: 120
# f(1) = 1
# f(2) = 1
# f(n) = f(n-1) + f(n-2)
counter = 0
def f(n)
global counter =+ 1
if n==1 or n==2:
return 1
else:
return f(n-1) + f(n-2)
print(f(35))
print(counter)
9227465
18454929
이미 구했던 값을 여러번 반복해서 구하는 문제가 생겨 연산의 시간이 길어집니다.
메모 = {1:1, 2:1}
def f(n):
if n in 메모 :
return 메모[n]
else:
output = f(n-1) + f(n-2)
메모[n] = output
return output
print(f(150))
9969216677189303386214405760200
이전과 달리 빠른 속도로 연산이 됩니다.
메모 = {1:1, 2:1}
def f(n):
if n in 메모 :
return 메모[n]
output = f(n-1) + f(n-2)
메모[n] = output
return output
print(f(150))
들여쓰기 단계가 줄어 코드를 더 쉽게 읽을 수 있습니다. 이렇게 흐름 중간에 return 키워드를 사용하는 것을 조기리턴이라고 합니다.
한 줄의 리턴 코드를 가진 함수를 간단히 표현하기 위해 람다를 사용한다.
# 함수로 표현시
def power(숫자):
return 숫자 ** 2
# 람다로 표현시 :
power = lamda 숫자 : 숫자 ** 2
pritn(power(10))
100
# 한 줄안에 코드를 넣는 인라인 코드를 짤 때 유용하다.
A = [1,2,3,4,5]
result = map(lambda 숫자: 숫자 ** 2, A)
print(list(result))
[1,4,9,16,25]
def plus_one(x):
return x+1
print(plus_one(1))
2
plus_one=lambda x:x+1
print(plus_one(1))
2
def plus_one(x):
return x+1
a=[1,2,3]
print(list(map(plus_one,a)))
[2, 3, 4]
a=[1,2,3]
print(list(map(lambda x:x+1,b)))
[2, 3, 4]
def out_function():
print('out_function 입니다')
def in_function():
print('in_function 입니다')
in_function()
out_function()
out_function 입니다
in_function 입니다
def out_function():
print('out_function 입니다')
def in_function():
print('in_function 입니다')
in_function()
in_function()
NameError: name 'in_function' is not defined
map()
과, filter()
가 있습니다.fileter(fun, *iterables)
리스트의 요소를 함수에 넣고, 리턴된 값이 True인 것으로 새로운 리스트를 구성해주는 함수입니다.
def 짝수만(number):
return number % 2 == 0
a = list(range(10))
b = filter(짝수만, a)
print(list(b))
for i in b:
print(i)
[0, 2, 4, 6, 8}
0
2
4
6
8
a = list(range(10))
b = filter(lambda number: number % 2 == 0, a)
print(list(b))
for i in b:
print(i)
[0, 2, 4, 6, 8}
0
2
4
6
8
map(function or None, iterable)
리스트의 요소를 함수에 넣고, 리턴된 값으로 새로운 리스트를 구성해주는 함수입니다.
map()
함수def 제곱(number):
return number * number
a = list(range(5))
print(list(map(제곱, a)))
[0, 1, 4, 9, 16, 25]
map()
함수 with 람다a = list(range(5))
print(list(map(lambda number : number * number, a)))
map()
함수 활용a, b, c = map(int, input().split())
a, b, c = map(float, input().split())
a = list(range(5))
print([i*i for i in a if i % 2 == 0])
map()
,filter()
함수는 제너레이터 함수라서
내부의 데이터가 실제로 메모리에 용량을 차지하지 않는다
하지만 신경쓰지 않을 정도로 컴퓨터의 성능이 매우 발전
최근에는 리스트내포 구문이 많이 쓰이는 추세이다