유효 범위

함수 외부에서 지정한 변수는 함수 내부에서 수정할 수 없다.

enemies = 1

def increase_enemies() :
    enemies = 2
    print(f"enemies inside function : {enemies}")

increase_enemies()
print(f"enemies inside function : {enemies}")

전역 변수와 지역 변수

전역 변수는 함수 외부와 내부에서 모두 사용 가능

지역 변수는 함수 내부에서만 사용 가능.

#전역 변수
player_hearth = 10

def drink_potion() :
# 지역 변수
    potion_strength = 2
    print(player_hearth)

drink_potion()

전역 변수를 수정하는 방법

함수 내부에 global을 호출한다.

이 방법은 코드를 혼란스럽게 할 수 있기 때문에 추천하진 않는다고 한다.

enemies = 1

def increase_enemies() :
    global enemies
    enemies += 2
    print(f"enemies inside function : {enemies}")

increase_enemies()
print(f"enemies inside function : {enemies}")

함수 내부에서 전역변수를 호출하지 않고 전역 변수를 수정하는 방법.

return 반환문을 출력하면 된다.

enemies = 1

def increase_enemies() :
    print(f"enemies inside function : {enemies}")
    return enemies + 2

enemies = increase_enemies()
print(f"enemies inside function : {enemies}")

전역변수를 생성할 때 대문자로 입력하여 추후 함수 내부에서 수정하지 않도록 할 수 있다.

PI = 3.14159
URL = "<https://www.google.com>"

숫자 맞추기 게임

from random import randint
from art import logo

EASY_LEVEL_TURNS = 10
HARD_LEVEL_TURNS = 5

# 정답과 유저가 추측한 정답이 맞는지 확인하는 함수.def check_answer(guess, answer, turns):
  if guess > answer:
    print("Too high.")
    return turns - 1
  elif guess < answer:
    print("Too low.")
    return turns - 1
  else:
    print(f"정답입니다! 정답은 {answer} 입니다..")

#난이도를 설정해주는 함수.def set_difficulty():
  level = input("난이도를 설정해주세요 'easy' or 'hard': ")
  if level == "easy":
    return EASY_LEVEL_TURNS
  else:
    return HARD_LEVEL_TURNS

def game():
  print(logo)
#1부터 100까지 중 숫자를 선택.print("숫자 맞추기 게임에 오신것을 환영합니다.")
  print("1부터 100까지 중 숫자를 하나 선택하겠습니다.")
  answer = randint(1, 100)
  print(f"정답은 {answer} 입니다.")

  turns = set_difficulty()
  guess = 0
  while guess != answer:
    print(f"You have {turns} attempts remaining to guess the number.")

# 유저의 시도.
    guess = int(input("Make a guess: "))

    turns = check_answer(guess, answer, turns)
    if turns == 0:
      print("You've run out of guesses, you lose.")
      return
    elif guess != answer:
      print("Guess again.")

game()