728x90
반응형
SMALL

1. 함수

  • 변수 x,y에 대해 x값이 정해지면 그에 따라 y값을 결정하는것
  • 반복적으로 사용되는 가치있는 부분을 묶어서 하나의 집합으로 만듬
  • 코드를 재활용 하기 위한 목적
 

1-1. 이름만 있는 함수

def 함수명():
    함수가 호출되면 실행할 문장
    ...
함수명() # 호출
 

 
def func1():
    print('처음으로 만드는 함수!')
 
 

 
func1()
 
처음으로 만드는 함수!
 

 
func1()
func1()
 
처음으로 만드는 함수!
처음으로 만드는 함수!

 
for i in range(5):
    func1()
 
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!
처음으로 만드는 함수!

1-2. 매개변수가 있는 함수

def 함수명(변수1, 변수2, ....):
    함수가 호출되면 실행할 문장
    ...
함수명(값1, 값2, ...) #호출

 
def func2(num):
    print(f'입력받은 숫자: {num}')
 

 
func2(10)
func2(4)
 
입력받은 숫자: 10
입력받은 숫자: 4

 
# start부터 end까지의 숫자를 더하는 함수
def func3(start, end):
    sum = 0
    for i in range(start, end + 1):
        sum += i
    print(f'{start}부터 {end}까지의 합: {sum}')
 

 
func3(1, 10)
func3(1, 100)
 
1부터 10까지의 합: 55
1부터 100까지의 합: 5050

1-3. 리턴값이 있는 함수

def 함수명(변수1, 변수2, ...):
    함수가 호출되면 실행할 문장
    ...
    return 값

값1 -> 변수1 값2 -> 변수2 리턴값 -> 변수

변수 = 함수명(값1, 값2, ...) # 호출
 

 
def func4():
    print('안녕하세요 python!')
 

 
# func4() 함수는 리턴값이없어서 a에 할당해줄 값은 없다.
a = func4()
print(f'a에 저장된 값: {a}')
 
안녕하세요 python!
a에 저장된 값: None
 

 
# 리턴값이 있는 함수는 재활용이 가능해서 많이 사용한다.
# 확장성(유연함) 이 있다.
def func5():
    return '🎁'
 
 

 
# 재활용
def hamsu():
    return '안녕하세요'
 

 
# 재활용
hamsu = hamsu()
print(hamsu, 'python')
 
안녕하세요 python
 

 
presents = func5()
print(f'presents에 저장된 값: {presents}')
 
presents에 저장된 값: 🎁
 

 
# num1.2는 함수가 실행될때만 동작하는 변수들이다.
# (함수안에서만 작동)(지역변수)
def func6(num1, num2):
    sum = num1 + num2
    return sum
 
 

 
result = func6(10) # TypeError: func6() missing 1 required positional argument: 'num2'
print(result)      # num2 의 값이 빠져있다는 뜻
 
 
 
 

 
result = func6(10, 5)
print(result)
print(sum) # 함수안의 변수
print(num1) # sum, num1, num2는
print(num2) # 함수밖에서 사용불가
 
 
 

1-4. 디폴트 매개변수

def 함수명(변수1=값1, 변수2=값2 ...):
    함수가 호출되면 실행할 문장  
    ...
    return 값
변수 = 함수명(값1, 값2 ...) # 호출
변수 = 함수명() # 호출

디폴트 매개변수를 첫번째 파라미터 하나에만 적용하는것은 불가

 

 
print(func6()) # TypeError: func6() missing 2 required positional arguments: 'num1' and 'num2'
# 매개변수가 지정되지 않음
 
 

 
# 디폴트 매개변수
def func6(num1 = 1, num2 = 1):
    sum = num1 + num2
    return sum
 
 

 
# 디폴트 매개변수
print(func6()) #매개변수가 없으면 디폴트값으로 계산
print(func6(10, 5)) # 매개변수를 넣을수도 있음
result = func6(7, 3) # 변수에 담아서도 사용가능
print(result) 
 
2
15
10
 

 
# 생략
# 디폴트 패러미터 생략은 뒷부분에만 가능하다
# 앞부분하나에만 적용하는것은 안됌
def func6(num1 = 1, num2):
    sum = num1 + num2
    return sum

# 올바른 예:
def func6(num1, num2 = 1):
    sum = num1 + num2
    return sum
 
 

 
func6()
 
2
 

1-5. 매개변수의 개수가 가변적인 함수

def 함수명(*변수):
    함수가 호출되면 실행할 문장
    ...
    return 값
# 호출
변수 = 함수명(값1, 값2, 값3 ....) # 여러개를 보내도 된다.
변수 = 함수명(값1) # 하나만 보내도 됌
변수 = 함수명() # 안보내도됌

가변적인 매개변수를 전달할 경우 함수 안에서 튜플 형태로 사용

 

 
# *args : 여러개의 매개변수를 받을때 관례적으로 사용하는 변수명
def func7(*args):
    result = 0
    # print(args) # 함수 안에서 print(args)를 찍으면 None 값이 같이 나옴
    for i in args:
        result += i
    return result
 

 
# 함수 안에서 print(args)를 찍으면 None 값이 같이 나옴
print(func7())
print(func7(10, 30, 20, 70))
print(func7(10))
 
0
130
10
 

1-6. 매개변수를 딕셔너리 구조로 전달받는 함수

def 함수명(**변수):
    함수가 호출되면 실행할 문장
    ...
    return 값
# 호출
변수 = 함수명(변수1=값1, 변수2=값2....) 

 
def func8(id, name, age):
    print(f'아이디: {id}')
    print(f'이름: {name}')
    print(f'나이: {age}')
 

 
# 매개변수명과 딕셔너리의 키가 같아야함
# 순서도 중요(생략도 가능해서 생략했을때 문제가 생김)
# 딕셔너리의 키는 반드시 문자열 형태
dic1 = {"id": 'apple', 'name':'김사과', 'age': 20}
 
 

 
# 딕셔너리는 **로 호출
# 함수에 프린트 적어놓아서 코랩에서는 프린트안쓴거
func8(**dic1)
 
아이디: apple
이름: 김사과
나이: 20

 
# * 데이터를 하나만 보낼경우 키가 저장됌
func8(*dic1)
 
아이디: id
이름: name
나이: age

 
# 딕셔너리로 만들어라
def func9(**args):
    # print(args)
    
    # id key를 딕셔너리에서 찾아서 호출
    # Json
    for i in args:
        if i == 'id':
            id = args[i]
    return id
 
 

 
# 딕셔너리로 만들어짐
user = func9(id = 'apple', name = '김사과', age = 20)
user
 
 

1-7. 리턴값이 여러개인 함수

def 함수명(변수1, 변수2 ...):
    함수가 호출되면 실행할 문장
    ...
    return 값1, 값2, ...

호출

원래는
변수 = 함수명(변수1, 변수2 ..) 이랬는데 이제는
변수1, 변수2, ... = 함수명(변수1, 변수2,...)
 

 
 
 
 
 

 
 
 
 
 
 

 
 
 
 
 
덧셈: 13, 뺄셈: 7, 곱셈: 30, 나눗셈: 3.3333333333333335
 

 
 
 
 
30

 

728x90
반응형
LIST

'파이썬' 카테고리의 다른 글

콜백 함수  (0) 2023.03.09
변수의 범위  (0) 2023.03.09
세트(set)  (0) 2023.03.08
자료구조- 딕셔너리(dictionary)  (0) 2023.03.08
제어문- 반복문(while, for)  (0) 2023.03.07

+ Recent posts