7. 함수 > 7-3. 변수의 범위

변수의 범위

해당 파트는 아래 영상 시청 후 교안을 정독해주세요.

자, 드디어 파이썬 기초 문법의 마지막 파트입니다. 힘내서 달려볼까요?

변수

변수를 범위로 나누어본다면 지역변수와 전역변수, 두가지로 나눌 수 있습니다.

지역변수

지역변수는 함수 내에서 선언된 변수를 의미합니다. 지역변수는 함수 내에서만 사용이 가능합니다.

def plus_6(b):
  a=6
  c=a+b
  return c

print(a) #에러 발생

plus_6 함수 내에서 변수 a는 정수 6을 값으로 할당받았습니다. 그러나 a 변수를 print() 함수로 출력해보면 에러가 발생하는데요, 이는 함수 밖에서 변수 a 가 존재하지 않기 때문입니다.

전역변수

전역변수는 함수 밖에서 선언된, 일반적인 변수를 의미합니다. 전역변수는 어디서든 사용이 가능합니다.

a=6

def plus_6(b):
  c=a+b
  return c

plus_6(1) #반환값 7

함수 내에서만 사용이 가능한 지역변수와 달리, 함수 밖에서 선언된 변수- 즉 전역변수는 함수 밖과 함수 내 모두에서 사용 가능합니다. 위 예시를 살펴보면, 함수 밖에서 선언된 변수 aplus_6(1) 의 반환값이 7이라는 점에서 plus_6 함수 내에서도 여전히 그 값을 유지하고 있음을 알 수 있습니다.

random 함수

파이썬 기초 문법 커리큘럼을 마치기 전, 정말 자주 쓰이는 함수 중 하나인 random 함수에 대해 짧게 살펴보고자 합니다.

random 함수는 말 그대로 무작위로 무언가를 뽑는 함수입니다. 벌써 너무 다양한 활용 방법이 떠오르시지 않나요? 아래 예시를 보며 실전 감각을 익혀봅시다.

정수, 실수 뽑기

import random

random.randint(1, 5) #제가 돌렸을 때의 반환값은 5
random.randrange(1, 5) #제가 돌렸을 때의 반환값은 2
random.random() #제가 돌렸을 때의 반환값은 0.9491427503340493
  • random.randint(a, b) : a 이상, b 이하의 정수를 무작위로 뽑아주는 함수에요. 위 예시에서 결과값은 1, 2, 3, 4, 5 중 하나겠죠?
  • random.ranrange(a, b) : a 이상, b 미만의 정수를 무작위로 뽑아주는 함수에요. 위 예시에서 결과값은 1, 2, 3, 4 중 하나일 거에요.
  • random.random() : 0 부터 1 사이의 실수를 무작위로 뽑아주는 함수에요. 입력값이 없는 함수라는 점을 주의해주세요!

당연하지만, 무작위로 대상을 뽑아주는 함수이기 때문에 제가 함수를 실행한 결과와 여러분이 직접 함수를 실행한 결과는 다를 거에요.

리스트에서 뽑기

STAFF = ['정찬', '이정윤', '조용주', '정예은', '안지은', '유혜정', '송혜민', '김윤진']

random.choice(STAFF) #제가 돌렸을 때의 반환값은 '안지은'
random.sample(STAFF, 3) #제가 돌렸을 때의 반환값은 ['송혜민', '정예은', '정찬']

이번에는 리스트에서 무작위로 대상을 뽑아볼게요.

  • random.choice(list) : 리스트 안에 있는 값들 중 하나를 무작위로 뽑아주는 함수에요. 인수로는 리스트 그 자체나 리스트를 할당받은 변수가 들어갑니다.
  • random.sample(list, num) : 리스트 안에 있는 값들 중 지정된 수만큼 값들을 무작위로 뽑아주는 함수에요. 첫번째 매개변수 자리에는 리스트 그 자체나 리스트를 할당받은 변수가 들어가고, 두번째 매개변수의 자리에는 얼마나 많은 값을 뽑을지를 지정하는 수가 들어갑니다.

위 예시를 볼까요? 코사다마의 운영진들의 이름이 사이좋게 리스트 안에 적혀있네요. 먼저, random.choice() 함수를 통해 오늘 코사다마 슬랙에 공지를 남길 사람을 뽑아봅시다. 지은님이 뽑히셨네요! 이번에는 random.sample() 함수를 통해 새로운 커리큘럼을 개발할 운영진 3명을 정해볼게요. 오, 혜민님, 예은님, 찬님이 당첨되셨네요! 😂

이렇게 random 함수를 배우신 여러분, 어떠신가요. 이제 거대 포털의 힘을 빌린 사다리타기...! 없어도 되겠다 싶죠? 하핳. 저는 실제로 최근 주최측으로 참여한 해커톤에서 random.sample() 함수를 사용해 상품 당첨자를 선정했답니다!

첫 코드 블럭에 있는 import random 코드가 무엇을 의미하는지 의아하실 수 있는데요, random 은 일반적으로 사용하는 print 함수 등과 같이 바로 사용하지 못하기 때문에 반드시 사용 전 import 예약어를 통해 함수를 불러와야 합니다!

너무 수고 많으셨습니다 여러분! 여러분은 이렇게 파이썬 프로그래밍의 첫 발을 떼신 거에요.

데이터 사이언스 입문 커리큘럼에서 다시 뵙기 전까지 본 커리큘럼의 내용을 꼼꼼히 복습해 체화하실 수 있도록 하세요!

마지막으로 업데이트 된 날짜:
2022년 9월 24일