
기존 타언어 개발자를 위한 강좌가 있으면 좋겠는데 ..
(C++ 외에도 C#이나 JAVA에 익숙한 분들)
인터넷에는 너무 처음부터 설명하는 강좌밖에 없어서
저 처럼 시간 아까우신 분들을 위한 강좌에요.
파이썬 알아두면 다른 고수준 언어도 접근하기 쉬워요.
(루비,루아,자바스크립트 같은..)
기존 언어 익숙하신 분들을 위한 강좌에요.
한 5분만 투자하면 마스터하실거 같네요.
그럼 빠르게 시작해봐요.
1. 설치 #1
아래 경로에서 설치 인스톨러 다운받으세요.
https://www.python.org/downloads/
설치시에 PATH 환경변수 등록을 체크 하는걸 권장합니다.
만약 안하셨다면
파이썬이 설치되어 있는 경로와 해당 경로안에
Scripts라는 폴더를 PATH에 추가합니다.
(저는 D:\Phython 에 설치했어요)
2. 설치 #2
통합환경은 VS Code를 사용해주세요.
VS Code는 솔루션파일이 따로 없고
폴더가 솔루션이라고 보면 됩니다.
따라서 빈폴더를 만들고 VS Code에서 '파일 - 폴더 열기' 해주세요.
그리고 확장 마켓 플레이스에서 'python'을 검색하셔서 설치해주세요
3. Hello Python 출력
VS Code 탐색기에서 새파일(+버튼)을 누르고
확장자를 '.py'로 하는 파일을 만들어 주세요.
print("hello python")
편집창에 위와 같이 코딩한뒤 F5을 눌러보세요.
콘솔창(VS Code 안에 터미널)에 hello python 이 뜰겁니다.
F5 누를때 상단에 디버그 구성 선택 이라고 뜨면
'Python 파일 현재 Python 파일 디버그'
항목을 선택하시면 됩니다.
(보고 있는 파일을 실행하기 위해서 일단..)
4. 디버깅
메뉴-실행에 보면
F5가 디버그라고 되어 있을거에요.
익숙한 F9로 브레이크포인트를 걸어서 실행해 보면
중단점에서 멈추는것을 볼 수 있습니다.
한줄 진행은 F10, 진입 F11, 나오기 Shift + F11,
디버깅 중단 Shift + F5 똑같습니다.
중단시점 변수 내용, 조사식, 호출스택 까지~
VS Code. 통합환경으로 손색 없죠?
이제 문법만 알면 될것 같은 느낌이 듭니다.
디버깅후 원래 파일리스트들을 보려면 좌측 탭에
탐색기 탭을 누르시면 됩니다.
5. 창출력
문법을 보기전에 ..
뭐라도 창이 출력되야 마음이 편할것 같아요.
(WinAPI 처음 배울때 느낌)
SDL를 포팅한 pygame 패키지를 사용해서 창을 출력해봐요.
pygame은 기본패키지가 아니라 설치가 필요해요.
콘솔창을 열고 (winkey+r, cmd)
pip install pygame --pre
위와 같이 쳐줍니다.
그리고 VS Code로 넘어와서 새파일을 만들어 줍니다.
저는 main.py 라고 만들었어요.
import pygame
pygame.init()
pygame.display.set_mode((640, 480))
pygame.display.set_caption('Test Game')
def GameLoop ():
running = True
while running:
for event in pygame.event.get():
if(event.type == pygame.QUIT):
print("call Quit")
running = False
break
if(running) :
# Call GameLogic Function
GameLogic()
pygame.display.update()
def GameLogic() :
print("call GameLogic")
GameLoop()
pygame.quit()
위 소스를 긁어서 넣고 실행해보세요.
창을 출력하니 안심이 됩니다.
콘솔창 보면 'call GameLogic' 이 주루룩 뜰겁니다.
루프에서 콜했으니 당년하지요.
창닫기나 종료 이벤트가 발생하기 전까지 돕니다.
그리고 검은 영역도 DirectX나 OpenGL로 만들어진
게임용 그래픽 모드 입니다.
따라서 GameLogic 함수에 실시간 게임 로직을 넣으면 ,
재미 있는 게임이 되겠네요~ ㅎㅎ
이제 문법을 봐요.
6. 클래스
바로 클래스 형태 부터 먼저 봐요.
새파일을 열고 클래스명과 동일한 이름으로 파일을 만들어 주세요.
(당년히 확장자는 py)
저는 BaseUnit 이라는 클래스를 만들었습니다.
class BaseUnit :
def __init__(self) :
print("create unit")
def Play(self) :
print("Call Play")
def __del__(self):
print(self.name + " delete")
위 소스를 봐주세요.
__init__가 생성자 입니다.
__del__은 소멸자 구요.
클래스 맴버함수들은 기본적으로 self를 인자로 넣어줍니다.
딱봐도 self가 this죠?
맴버함수 마다 self를 포함해야 합니다.
이걸로 맴버함수 내에서 self를 사용할 수 있어요.
하지만 맴버함수 호출때 self는 무시하세요.
즉 self만 있는 맴버함수는 'void 함수'라고 보면 되겠어요.
(Play 같은 함수 호출시 self 무시하고 그냥 Play() 라고 호출)
그리고 파이썬은 {} 대신, 들여쓰기(탭)로 구분합니다.
일단 저렇게만 만들고 사용하기 위해 처음 만들었던 파일로 돌아옵니다.
(저 같은 경우는 main.py)
from BaseUnit import BaseUnit
맨 윗줄에 저렇게 타이핑 해줍니다.
from 뒤에는 파일명이고 import 뒤는 클래스명 입니다.
(import BaseUnit만 해줘도 되지만 일단 저렇게 해주세요.)
inst = BaseUnit()
인스턴스 생성은 저렇게 해줍니다.
new 같은거 없어요
그리고 생성자에 self만 있었기에 void 입니다.
그리고 맴버함수 호출은 익숙하게..
inst.Play()
이렇게 하시면 됩니다. 쉽죠?
만약 맨윗줄에 import BaseUnit만 했다면 인스턴스 생성은
inst = BaseUnit.BaseUnit()
이렇게 하시면 됩니다.
아래 소스를 봐주세요.
import pygame
#import BaseUnit
from BaseUnit import BaseUnit
pygame.init()
pygame.display.set_mode((640, 480))
pygame.display.set_caption('Test Game')
inst = BaseUnit()
def GameLoop ():
running = True
while running:
for event in pygame.event.get():
if(event.type == pygame.QUIT):
print("call Quit")
running = False
break
if(running) :
GameLogic()
pygame.display.update()
def GameLogic() :
a = 10
#print("call GameLogic")
inst.Play()
GameLoop()
pygame.quit()
아까 창만들기 예제에서 클래스 인스턴스 생성하고
클래스 맴버함수 호출 까지 해보았어요.
(#이 있는 줄은 주석 이에요)
이제 클래스 맴버변수에 대해 알아봐요.
맴버 변수는 생성자 안에 선언해야 되고 생성자 밖에
선언된건 클래스의 static 변수가 됩니다.
요렇게요.
class BaseUnit :
# class static var
b = 20
def __init__(self) :
# class member var
self.a = 10
def ShowA(self) :
print("a : {}".format(self.a))
def ShowB(self) :
print("b : {}".format(BaseUnit.b))
감 잡히시죠?
(보는김에 string format 함수 예제도 확인 해주세요.)
그리고 다중생성자는 지원하지 않네요.
아래 같은 다중 생성자는 안됩니다.
class BaseUnit :
def __init__(self) :
self.a = 10
print("create unit")
print("a : {}".format(self.a))
def __init__(self, a) :
self.a = a
print("create unit")
print("a : {}".format(self.a))
대신 기본값을 입력할 수 있어서 다중 생성자가 없는
불편함은 어느정도 해결 되겠네요.
class BaseUnit :
def __init__(self, a = 10) :
self.a = a
print("create unit")
print("a : {}".format(self.a))
def WhoIs(self) :
print("Im Base")
함수 선언에 a = 10 보이시죠?
이렇게 기본값 지원 하고 있어서,
instanceA = BaseUnit()
instanceB = BaseUnit(300)
위와 같이 인스턴스를 생성할 수 있으니,
생성자가 여러개 있는 효과을 얻을 수 있어요.
다음은 상속을 해볼게요.
BaseUnit을 상속받아 HeroUnit 클래스를 만들어봐요.
먼저 HeroUnit.py 파일을 만들어 주세요.
from .BaseUnit import BaseUnit
class HeroUnit(BaseUnit):
def __init__(self):
pass
def WhoIs(self):
print("Im Hero")
from 뒤에 . 만 쓰면 현 패키지(폴더)를 의미하는군요.
from . import BaseUnit 만 쓴다면
class HeroUnit(BaseUnit.BaseUnit):
이렇게 선언 해야되요.
예제로 부모 클래스의 WhoIs 를 오버라이딩
해봤습니다.
이제 실제 사용을 해볼까요.
(저는 GameUtil 이라는 폴더를 만들고
BaseUnit.py, HeroUnit.py를 옮겼어요.
아래 예제는 from에 'GameUtil.'를 붙임.)
from GameUtil.BaseUnit import BaseUnit
from GameUtil.HeroUnit import HeroUnit
inst = BaseUnit()
inst.WhoIs()
inst2 = HeroUnit()
inst2.WhoIs()
실행하면 각각
I'm Base
I'm Hero
콘솔창에 뜰겁니다.
이렇게 클래스는 대충 마무리 할까합니다.
저희는 마음이 급하니 클래스 부터 보았어요. ㅎㅎ
이제 기본문법만 알면 되겠네요~
함수 정의는 =>
def 함수명() :
클래스 맴버 함수 정의는 =>
'def 함수명(self) :'
정의 아래 함수 내용은 =>
{} 대신 들여쓰기(탭) 세로줄 유지
대충 이렇구나 감잡고 이 강좌를 그만 보셔도 될겁니다.
(제 마음이 딱 지금 이렇거든요. )
하지만 다른 링크 누르는거 귀찮으신 분들을 위해
좀더 힘내보기로 할게요.
파이썬 처음 접근할때 이것만 기억하면 될거 같아요.
콜론 매니아다. ㅋㅋ
7. 문법
#var
a = 1
print(a)
#array
b = [12,2,333,4,9,10]
print(b)
print(b[2])
b.sort()
print(b)
b.sort(reverse=True)
print(b)
print(b[1:3])
#dictionary
c = {1:2, 3:4}
print(c[1])
d = "my name is string"
print(d)
#dictionary string key,value
emails = {'a' : 'a@naver.com', 'b' : 'ddd:gmail.com', 'asdf' : 'asdf.lycos.co.kr'}
print(emails)
print(emails['a'])
print(emails.keys())
print(emails.values())
print(emails.items())
for name, email in emails.items() :
print('{} 의 이메일은 {} 입니다'.format(name, email))
def TestPlus(x,y):
return x + y
a = TestPlus(3,3)
print(a)
위 소스를 봐주세요.
새파일 만들어서 위 소스 긁어 실행해보세요.
변수에 타입(int,float,short,string등) 선언 따로 없이
다른 고수준 언어 처럼 이렇게
#int
a=10
#string
b="300"
#float
c=3.14
#array (list)
d=[1,2,3,4]
#dictionary (map)
e={a:1, b:2}
형은 자동으로 결정됩니다.
배열, 맵 자료구조 예제랑 map 순회 예제를 첨부했으니
바로 오케이 느낌 이실거에요.
배열 구간 [1:3] 은 왼쪽 이상 오른쪽 미만 까지에요.
[1:3] 이면 인덱스 1,2 가 참조 되요.
아 그리고 반복문에서
break
는 반복문 하나만 탈출 할 수 있습니다.
continue
도 있고, 기능은 같아서 그대로 사용하면 됩니다.
그리고 함수 구현은 함수 호출 보다 먼저 있어야 되요.
이제 비교 if만 보면 끝이죠?
파이썬은 뭐다?
콜론(:) 매니아다.
(feat 들여쓰기 매니아, 괄호는 함수에만)
이것만 기억하면 됩니다.
x = 120
if x > 100:
o = 'good'
else:
o = 'common'
print(o)
비교 부분에 괄호는 필요 없어요.
비교할거 하고 바로 콜론 찍으면 됩니다.
else는 else도 있고 elif도 있습니다.
그리고 true/false는 반듯이 앞에 대문자 박아줘야합니다.
if(x == True) :
이렇게요.
그리고 복수 비교는 아래와 같아요.
x = 120
y = 300
if x > 100 or y > 400:
print("or good")
if x > 100 and y < 400:
print("and good")
|| , && 대신 or, and 이렇게 영어로 써줘야 해요.
개인적으로 콜론이 거슬리는데..
그래도 then, end 같은거 없으니
콜론 매니아 정도는 눈감아줄만 해요. :)
나머지 문법은 아래 튜토리얼 참고하세요~ (무책임)
https://docs.python.org/ko/3/tutorial/index.html
8. 엔트리 포인트
언어 테스트 할땐 파일 각각에서 실행하는게 편하지만,
프로젝트를 할땐 엔트리포인트를 잡는게 좋겠죠.
VS Code에서도 파이썬 뿐만 아니라 실행 구성을
추가할 수 있습니다.
실행 메뉴에서 구성 추가를 선택하거나,
VS Code를 새로 열고 F5 실행 하면 디버그 구성을 물어봅니다.
이때 실행 모듈을 지정할 수 있어요.
실행 모듈이 Main.py 이라면 'Main' 이라고 입력하세요.
launch.json이 생깁니다. 그리고 열어보면
"module" 부분에 -m 옵션으로 지정될 모듈이름이 있는걸
볼 수 있고, 이제 다른 파일을 열고 실행(F5)해도 Main.py가
실행되는걸 확인 할 수 있습니다.
9. 맺음말
이렇게 대략 파이썬을 훝고 지나갔네요.
이제 디테일한건 스스로 하실 수 있으리라 믿어요.
앞으로 강좌는 의사 코드 위주의 파이썬 예제를
보여드릴까해서 간단한 파이썬 강좌를 써보았어요.
pygame로 창만들어 봤으니 이제 게임 개발도 가능해요.
그럼 다음 강좌에서 만나요.
안녕~
