파이썬 기초 | 함수 | def ~ return | 매개변수 전달, 값 변환 | pass 키워드 | 지역변수/전역변수 | Global 예약어

728x90

 

1. 함수

 

▶ 함수의 개념

: 무엇을 넣으면 그것이 처리되어 다시 어떤 것을 돌려주는 기능을 함

: 함수는 매개변수(Parameter)를 입력받은 후 그 매개변수를 가공 및 처리한 후에 반환값을 돌려줌.

 

▶ 파이썬에서 제공하는 함수

 

* 별도의 반환값이 없는 함수의 경우

함수명()

ex. print("hello world")

 

* 함수에 별도의 반환값이 있으면 변수에 반환값을 받아야 함

변수이름 = 함수이름()

ex. num = int("1234")
    print(num)

 

* 사용자 정의 함수 

(예시)

# 사용자정의함수 미사용

print("A님, 두 숫자를 입력하세요")
num1 = int(input("정수1 => "))
num2 = int(input("정수2 => "))
hap = num1 + num2
print("결과: ", hap)

print("B님, 두 숫자를 입력하세요")
num1 = int(input("정수1 => "))
num2 = int(input("정수2 => "))
hap = num1 + num2
print("결과: ", hap)

print("C님, 두 숫자를 입력하세요")
num1 = int(input("정수1 => "))
num2 = int(input("정수2 => "))
hap = num1 + num2
print("결과: ", hap)

# 사용자정의함수 사용

def hapFunc() :
    num1 = int(input("정수1 => "))
    num2 = int(input("정수2 => "))
    return num1 + num2

print("A님, 두 숫자를 입력하세요")
hap = hapFunc()
print("결과: ", hap)

print("B님, 두 숫자를 입력하세요")
hap = hapFunc()
print("결과: ", hap)

print("C님, 두 숫자를 입력하세요")
hap = hapFunc()
print("결과: ", hap)

 

 

▶ 파이썬에서 제공하는 함수

* plus() 함수

: 두 정수를 입력받아 두 정수의 합계를 반환

# 함수 정의 부분
def plus(v1, v2) :
    result = 0
    result = v1 + v2
    return result

# 전역변수 선언 부분
hap = 0

# 메인코드 부분
hap = plus(100,200)
print("100과 200의 plus() 함수 결과는 ", hap)

 

 

[연습문제]

 

* 계산을 위한 기호 +, -, *, / 를 입력한 뒤, 두 수를 입력하면 선택한 계산이 되는 계산기 만들기(함수 이용)

def calculate(str, a, b) :
    if str == '+' :
        result = a + b
        return result
    elif str == '-' :
        if a >= b :
            result = a - b
            return result
        elif b > a :
            result = b - a
            return result
    elif str == "/" :
        if a >= b :
            result = a / b
            return result
        elif b > a :
            result = b / a
            return reuslt
    elif str == "*" :
         result = a * b
         return result
    else :
        print("정확한 숫자를 입력하세요.")

# 함수 정의 부분
def cal(v1,v2,op) :
    result = 0
    if op == "+" :
        result = v1 + v2
    elif op == "*" :
        result = v1 * v2
    elif op == "-" :
        if v1 >= v2 :
            result = v1 - v2
        else :
            result = v2 - v1
    elif op == "/" :
        if v1 >= v2 :
            result = v1 / v2
        else :
            result = v2 / v1
    else : 
        print("정확한 숫자를 입력하세요")
    return result

# 전역변수 선언 부분
res = 0
var1, var2, oper = 0,0,""

# 메인 코드 부분
oper = input("계산 입력(+,-,*,/) : ")
var1 = int(input("첫 번째 숫자 입력: "))
var2 = int(input("두 번째 숫자 입력: "))

res = cal(var1, var2, oper)
print(f"## 계산기: {var1} {oper} {var2} =", res)

 


2. 함수의 매개변수 전달과 값 변환

 

▶ 함수의 매개변수 전달

 

[매개변수 전달 방법]

 

1) 매개변수의 개수 정해놓기

 

* 숫자 2개의 합과 3개의 합을 구하는 함수

def para2_func(v1, v2) :
    result = 0
    result = v1 + v2
    return result

def para3_func(v1,v2,v3) :
    result = 0
    result = v1 + v2 + v3
    return result

hap = 0

hap = para2_func(10,20)
print("매개변수 2개 함수 호출 결과 =>", hap)
hap = para3_func(10,20,30)
print("매개변수 3개 함수 호출 결과 =>", hap)

 

 

2) 매개변수에 기본값을 설정해놓기

# 함수 정의 부분
def para_func(v1, v2, v3=0) :
    result = 0
    result = v1 + v2 + v3
    return result

# 전역변수 선언 부분
hap = 0

# 메인 코드 부분
hap = para_func(10,20)
print("매개변수 2개 함수 호출 결과 => ", hap)
hap = para_func(10,20,30)
print("매개변수 3개 함수 호출 결과 => ", hap)

 

▶ 값 반환하기

 

[반환값이 없는 함수]

: 함수를 실행한 결과, 돌려줄 것이 없는 경우에는 return문을 생략함.

: 반환값 없이 함수를 마치면 아무것도 반환하지 않고 함수가 종료됨.

 

[반환값이 1개 있는 함수]

: 함수가 작동한 후에 반환할 값이 있으면 'return 반환값' 형식으로 표현함.

 

[반환값이 2개 있는 함수]

: 반환할 값이 2개라면 return 반환값1, 반환값2 형식으로 표현

 

[pass 키워드]

: 함수의 이름과 형태만 만들어놓고, 내부는 나중에 코딩하고 싶은 경우에 사용

: 함수 뿐 아니라 if문이나 반복문에서도 아무것도 안 하는 코드로 채울 때도 사용함.

 

><

 


3. 지역변수와 전역변수

 

▶ 유효범위, 지역변수, 전역변수 의미

 

* 유효범위 : 자기가 활동할 수 있는 범위

* 지역변수 : 한정된 지역(local)에서만 사용되는 변수

* 전역변수 : 프로그램 전체(global)에서 사용되는 변수

(→ 지역변수가 전역변수보다 우선시 됨)

 

[지역변수와 전역변수의 이름이 같은 경우]

# 함수 정의 부분
def func1() :
    a = 10   # 지역변수
    print("func1()에서 a의 값", a)

def func2() :
     print("func2()에서 a의 값", a)

# 전역변수 선언 부분
a = 20

# 메인 코드 부분
func1()
func2()

 

▶ Global 예약어

: 함수 안에서 사용되는 변수. 무조건 전역변수로 사용하고 싶은 경우에 사용.

: global 예약어와 함께 나오는 변수명은 무조건 전역변수임

: 지역변수와 전역변수의 이름이 같은 경우

728x90

댓글