앎을 경계하기

Programming/Python

Python 함수, 변수 스코프, 글로벌 변수

양갱맨 2019. 12. 26. 00:39

함수

def sum(a, b):
    return a+b
a = 3
b = 4
c = sum(a,b)
print(c)
7

 

def say():
    return 'Hi'
say()
'Hi'

 

def sum(a,b):
    print("%d"%(a+b))
sum(3,4)
7

 

print(sum(3,4)) # 반환값이 없어서 None이 나온다.
7
None

 

입력값이 몇 개일지 모르는 경우

def sum_many(*args):
    sum = 0
    for i in args:
        sum = sum + i
    return sum
result = sum_many(1,2,3)
result
6

 

result = sum_many(1,2,3,4,5,6,7)
result
28

 

함수의 결과값은 항상 하나

def sum_and_mul(a,b):
    return a+b, a*b 
result = sum_and_mul(3,4)
result # 리턴이 2개인게 아니라 tuple 형식으로 반환된다.
(7, 12)

 

#2개처럼 받고싶다면 다음과 같이 사용하면 된다.
sum, mul = sum_and_mul(3,4)
print(sum)
print(mul)
7
12

 

파라미터 초기값 설정하기

초기값 설정시 주의할 점

  • 초기화시키고 싶은 입력 변수는 항상 뒤쪽에 위치시켜야 초기화되지 않은 파라미터와 헷갈리지 않는다.

      def say_myself(name, man=True, old):
          ...
    
      say_myself('abc',8) # 8이 man에 들어갈 값인지 old에 들어갈 값인지 알 수 없다.

     

def say_myself(name, old, man=True):
    print(name)
    print(old)
    if man:
        print("남자입니다.")
    else:
        print("여자입니다.")
say_myself('jane', 15, False)
say_myself('jack', 15)
jane
15
여자입니다.
jack
15
남자입니다.

 

변수 스코프

함수 내에서 사용되는 변수는 함수 영역을 벗어나면 사용할 수 없다.

함수 내에서 사용되는 값을 함수 외부에서도 사용하고 싶으면 return으로 반환해서 사용해야한다.

a = 1
def vartest(a):
    a = a+1

vartest(a)
print(a)
1

 

#global 변수 사용하기
a = 1
def vartest():
    a = 5

vartest()
print(a) # 글로벌 변수는 그냥 값 수정이 불가하다.
1

 

a = 1
def vartest():
    global a # 이와같이 글로벌 변수임을 표시해줘야 값 수정이 가능하다.
    a = 5

vartest()
print(a)
5

참고 도서 : Do It! 점프 투 파이썬

'Programming > Python' 카테고리의 다른 글

Python 파일 입출력  (0) 2019.12.26
Python 사용자 입력, 출력  (0) 2019.12.26
Python 조건문, 반복문  (0) 2019.12.26
Python 변수, 객체, 복사  (0) 2019.12.25
Python tuple, dictionary, set  (0) 2019.12.25