sm 기술 블로그

11. 함수 / 지역변수,전역변수 본문

Python

11. 함수 / 지역변수,전역변수

sm_hope 2022. 5. 5. 16:09
함수
특정 기능을 수행하는 코드들의 모음

기본구조

def 함수이름(매개변수 - 생략가능) :
	함수에서 수행할 작업

매개변수는 생략이 가능하다.

 

예제 - ATM

def open_account():
    print("새로운 계좌가 생성되었습니다.")


def deposit(balance, money):
    print("입금이 완료되었습니다. 잔액은 {0} 원입니다.".format(balance+money))
    return balance + money

def withdraw(balance, money): #출금
    if balance >= money: #잔액이 출금보다 많으면
        print("출금이 완료되었습니다. 잔액은 {0} 원입니다.".format(balance - money))
        return balance - money
    else :
        print("출금이 완료되지 않았습니다. 잔액은 {0} 원입니다.".format(balance))
        return balance

def withdraw_night(balance, money): #저녁에 출금
    commission = 100 #수수료 100원
    return commission, balance - money - commission
    #수수료와 잔액-돈-수수료 를 받음


balance = 0 #잔액
balance = deposit(balance, 1000)

commission, balance = withdraw_night(balance, 500)
print("수수료 {0}원이며, 잔액은 {1} 원입니다.".format(commission,balance))

def를 통해 함수를 생성한다.

계좌를 생성, 입금, 출금(+야간 출금), 함수를 선언하였다.

return은 함수내에서 이루어져 도출된 값을 밖에서도 사용할 수 있도록 한다.

 

deposit(balance, 1000) 를 통해 balance 값과 1000 값을 함수를 선언하고 전달한다.

※ def test() 는 함수, 클래스 안에 def test()는 메소드(혹은 함수)라 한다. 

 

# 출력 결과
입금이 완료되었습니다. 잔액은 1000 원입니다.
수수료 100원이며, 잔액은 400 원입니다.

1000원을 입금하고, 야간 출금으로 수수료 100원을 때고 500원을 출력함

 

 

예제 - 학생 관리 함수

# def profile(name, age, lang1, lang2, lang3, lang4, lang5):
#     print("이름 : {0}\t나이 : {1}\t".format(name, age), end=" ")
#     #end=" " 줄바꿈 하지 않고 종료
#     print(lang1,lang2,lang3,lang4,lang5)




#가변인자를 사용해서 계속 추가할 수 있도록 함.
def profile(name, age, *language):
    print("이름 : {0}\t나이 : {1}\t".format(name, age), end=" ")
    #end=" " 줄바꿈 하지 않고 종료
    for lang in language:
        print(lang, end=" ")
    print()



profile("유재석",20,"Python", "Java", "C", "C++", "C#","JavaScript")
profile("김태호",25, "Kotlin", "Swift")

*을 이용하면 매개변수를 묶을 수 있다.

end = " "는 줄바꿈을 하지 않고 출력한다는 의미이다.

반복문을 통해 유재석 profile가 사용하는 언어 Python, Java, C, C++, C#, JavaScript을 하나씩 출력할 수 있다. 

 

# 출력 결과

이름 : 유재석   나이 : 20        Python Java C C++ C# JavaScript    
이름 : 김태호   나이 : 25        Kotlin Swift

지역변수 전역변수

 

지역변수 : 변수를 만든 함수 안에서만 접근할 수 있는 변수

전역변수 : 함수를 포함하여 스크립트 전체에서 접근할 수 있는 변수

 

#지역변수와 전역변수

gun = 10

def checkpoint(soldiers): #경계근무
    global gun #전역 공간에 있는 gun 사용

    gun = gun - soldiers # checkpoint 함수내에서만 사용하는 지역 변수
                         # global을 통해서 전역변수로 변함
    print("[함수 내] 남은 총 : {0}".format(gun))
    
def checkpoint_ret(gun, soldiers): #경계근무
    gun = gun - soldiers # checkpoint 함수내에서만 사용하는 지역 변수
                         
    print("[함수 내] 남은 총 : {0}".format(gun))
    return gun

print("전체 총 : {0}".format(gun))
# checkpoint(2)
gun = checkpoint_ret(gun, 2)
print("남은 총 : {0}".format(gun))

 

gun = 10은 전역변수로 전체에서 사용가능하다.

 

함수 내에서 gun = nun-soldiers로 지역변수로 정의하였다. 

정의된 변수는 지역 내에서만 사용이 가능하기 때문에 바로 그 값을 함수 외부에서도 사용하기 위해서는

return을 해줘야한다.

 

 

Comments