SlideShare a Scribd company logo
1 of 19
Download to read offline
파이썬 언어 기초
최범균
파이썬
• 인터프리터, 스크립트
• 동적 타입 언어
• 함수, 클래스, 모듈, 패키지
• 간결하고 쉬운 문법
• 다양한 라이브러리 많음
• 통계, 기계학습, 웹 개발, 배포
도구 등 다양한 영역에서 사용
• 현재 버전 3.5
• 여전히 2.7도 많이 사용
[http://www.tiobe.com/tiobe_index]
스크립트 언어
# hello.py
print("헬로우")
스크립트 실행
$ python hello.py
헬로우
코드 작성, 바로 실행
몇 가지 기본 구성 요소
import httplib, urllib # 패키지/모듈 임포트
import time
# 주석
key = 'XXXXXXXX' # 글로별 변수
def sendCommand(): # 함수
# 블록은 들여쓰기로 처리
# params, headers 등 로컬 변수
params = urllib.urlencode({'api_key':key, 'command_string': 'OFF'})
headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn = httplib.HTTPSConnection("api.thingspeak.com")
try:
# 블록은 들여쓰기로
conn.request("POST", "/talkbacks/7678/commands", params, headers)
response = conn.getresponse()
print response.status, response.reason
data = response.read()
print("command id =", data)
conn.close()
except:
print "connection failed"
주요 타입
데이터 타입
• 숫자
• int : 10, 20
• float : 10.1, 0.8
• 부울(bool) : True, False
• 문자열(str) : '가', "가나다"
주요 연산
• 수치 연산:
• 10 + 20, 10 – 5, 2 * 3
• 24 / 5 : 4.8 (실수 반환)
• 240 // 50 : 4
• 240 % 50 : 40
• 2 ** 3 : 2의 3승
• 비교 연산:
• < <= > >= == !=
• is : 같은 객체인지
• is not : 같은 객체가 아닌지
주요 타입: 리스트(list)
• 여러 값을 순차적으로 저장할 수 있는 자료형: 배열
• 생성 : pk = [4, 6, 1, 9]
• 추가/사입
• 추가 : pk.append(10)  [4, 6, 1, 9, 10]
• 삽입 : pk.insert(1, 3)  [4, 3, 6, 1, 9]
• 인덱스 기반 접근
• 양수 인덱스(0부터 시작): pk[0]  4, pk[2] = 3  pk = [4, ,6, 3, 9]
• 음수 인덱스뒤에서 -1부터 시작): pk[-2]  1
• 제거
• remove(val): pk.remove(6)  [4, 1, 9]
• pop(idx): popped = pk.pop(2)  popped = 1, pk = [4, 6, 9]
주요 타입: 사전(dict)
• (키, 값) 쌍을 갖는 해시
• 생성 : map = {'r': 'red', 'g': 'green', 'b': 'blue'}
• 추가/변경
• map['r'] = 'RED'  {'r': 'RED', 'g': 'green', 'b': 'blue'}
• 접근
• 개별 요소: map['g']  'red'
• 키: map.keys()  dict_keys(['r', 'b', 'g'])
• 값: map.values()  dict_values(['red', 'blue', 'green'])
• 키 존재 여부: 'g' in map  True, 'x' not in map  True
• 개별 쌍 제거
• del map['g']
주요 타입: 튜플(tuple)
• Immutable 리스트
• 생성 : cardExp = (12, 2019)
• cardNo = 1234, 5678, 2468, 0987
• oneItem = 433,
• 접근
• 인덱스: cardExp[0]  12, cardExp[1]  2019
• 튜플 언패킹
• mon, year = cardExp  mon = 12, year = 2019
• 변환
• tuple  list: cardNoList = list(cardNo)
• list -> tuple: cNo = tuple(cardNoList)
제어문
if age > 10 and age < 20:
print('무서운10대')
elif age <= 10:
print('아직은 말 들음')
else:
print('성인')
while 조건:
코드 # 조건이 True이면 실행
for i in range(5): # range(5) : 0~4
print(i)
for v in [1,2,3,4,5]:
print(v)
break, continue, pass문 존재
함수
def hello(name):
print('Hello,', name)
def hello2(name):
print('Hello,', name)
return # 반환 값 없음
def sum(a, b):
return a + b # 값 반환
hello('이름')
s = sum(1, 2) # s는 3
h = hello # 함수는 first-class
h('이름')
# 키워드 인자, 기본 값
def createCar(doors = 2, type = 'sports'):
…
createCar() # doors = 2, type = 'sports'
createCar(4, 'suv) # doors = 4, type = 'suv'
createCar(type = 'sedan', doors = 4)
createCar(type = 'suv') # doors = 2
# 람다식
reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
클래스
class Raspberry:
def __init__(self, ver): # 생성자(초기화)
self.version = ver # 멤버 변수
def turnOn(self): # 멤버 함수
# __로 시작하는 멤버 변수 : 일종의 private
self.__powerState = True
def temperature(self):
temp = …
return temp
def gpio_on(self, num):
GPIO.output(num, True)
rp = Raspberry(3) # 생성
rp.turnOn() # 멤버 함수 사용
rp.version # 멤버 변수 사용
rp.gpio_on(18)
상속
class Developer:
def __init__(self, name):
self.name = name
def coding(self):
print(self.name, 'is coding!!')
class PythonDeveloper(Developer):
def coding(self):
super().coding()
print(self.name, 'is python coding!!')
class JavaDeveloper(Developer):
def __init__(self, name):
super().__init__(name + ' in java')
>>> jd = JavaDeveloper('bk')
>>> jd.coding()
bk in java is coding!!
>>>
>>> pd = PythonDeveloper('Gudio')
>>> pd.coding()
Gudio is coding!!
Gudio is python coding!!
>>>
모듈=파일, 패키지=모듈 모음=폴더
# switch.py
# py 파일이 곧 모듈
import os
statusFilePath = "/home/pi/switchStatus.txt"
def isSwitchOff():
if not os.path.exists(statusFilePath):
return False
f = open(statusFilePath, 'r')
line = f.readline()
f.close()
if line == "ON":
return False
else:
return True
def setSwitchStatus(newStatus):
f = open(statusFilePath, 'w')
f.write(newStatus)
f.close()
…
importswitch #switch 모듈임포트
defrunCommand():
params =urllib.urlencode({'api_key':key })
headers ={"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"}
conn=httplib.HTTPSConnection("api.thingspeak.com")
try:
…
iflen(data)>0:
switch.setSwitchStatus(data) #모듈명.구성요소:함수,변수,클래스등접근가능
conn.close()
#switch.statusFilePath처럼 모듈의글로벌변수접근
except:
print "connection failed"
if__name__ =="__main__":
runCommand()
import
* 파이썬 3.3 전에는 폴더에 __init__.py 파일이 있어야 패키지로 인식
* 3.3부터는 이 파일이 없어도 패키지로 인식함
패키지=모듈 모음=폴더
* 파이썬 3.3 전에는 폴더에 __init__.py 파일이 있어야 패키지로 인식
* 3.3부터는 이 파일이 없어도 패키지로 인식함
패키지 구조 예:
my/
__init__.py
pack/
__init__.py
infomod.py
pack1/
__init__.py
memlist.py
모듈/패키지 사용, import/from
• 패키지/모듈 검색 기준 : sys.path
• import, from import로 사용 대상 지정
• import 모듈/패키지명 (as 별칭)
• from 패키지/모듈 import 모듈/구성요소 (as 별칭)
import my.pack.infomod
my.pack.infomod.info()
# my/pack/infomod.py
def info():
…
import my.pack.infomod as infom
infom.info()
from my.pack import infomod
infomod.info()
from my.pack.infomod import info
info()
스크립트 실행 진입 지점
# run.py
import switch # 임포트 시점에 실행
def runCommand():
print("runCommand")
...
print("before")
if __name__ == "__main__":
runCommand()
print("after")
# switch.py
print("switch")
python run.py
switch
before
runCommand
after
개발 도구
PyCharm/IntelliJIDLE Visual Studio Code
기타
• pip : 패키지 관리 도구
• Django : 웹 프레임워크
• numpy, pandas, matplotlib : 데이터 분석 모듈
• scikit, tensorflow, theano : 머신러닝
• jupyter notebook : 웹 브라우저 기반 파이썬 실행 환경
• 코드, 데이터 분석, 시각화 등 공유 가능
참고자료
https://docs.python.org/3/

More Related Content

What's hot

Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brickyongwoo Jeon
 
헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리은숙 이
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개Dong Jun Kwon
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple OverviewKim Hunmin
 
처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1성일 한
 
React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기Kim Hunmin
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기beom kyun choi
 
Angular2 router&http
Angular2 router&httpAngular2 router&http
Angular2 router&httpDong Jun Kwon
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device accessJinKyoungHeo
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)SeongHyun Ahn
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰beom kyun choi
 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivityJinKyoungHeo
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2지수 윤
 
자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPTJinKyoungHeo
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10hungrok
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기NAVER Engineering
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Circulus
 

What's hot (20)

Web Components 101 polymer & brick
Web Components 101 polymer & brickWeb Components 101 polymer & brick
Web Components 101 polymer & brick
 
헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리헷갈리는 자바스크립트 정리
헷갈리는 자바스크립트 정리
 
Angular2 가기전 Type script소개
 Angular2 가기전 Type script소개 Angular2 가기전 Type script소개
Angular2 가기전 Type script소개
 
Es2015 Simple Overview
Es2015 Simple OverviewEs2015 Simple Overview
Es2015 Simple Overview
 
처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1처음배우는 자바스크립트, 제이쿼리 #1
처음배우는 자바스크립트, 제이쿼리 #1
 
React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기React로 TDD 쵸큼 맛보기
React로 TDD 쵸큼 맛보기
 
DDD로 복잡함 다루기
DDD로 복잡함 다루기DDD로 복잡함 다루기
DDD로 복잡함 다루기
 
Angular2 router&http
Angular2 router&httpAngular2 router&http
Angular2 router&http
 
5-3. html5 device access
5-3. html5 device access5-3. html5 device access
5-3. html5 device access
 
빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)빠르게 활용하는 파이썬3 스터디(ch1~4)
빠르게 활용하는 파이썬3 스터디(ch1~4)
 
모델링 연습 리뷰
모델링 연습 리뷰모델링 연습 리뷰
모델링 연습 리뷰
 
5-5. html5 connectivity
5-5. html5 connectivity5-5. html5 connectivity
5-5. html5 connectivity
 
iOS 메모리관리
iOS 메모리관리iOS 메모리관리
iOS 메모리관리
 
7주 JavaScript Part2
7주 JavaScript Part27주 JavaScript Part2
7주 JavaScript Part2
 
자바야 놀자 PPT
자바야 놀자 PPT자바야 놀자 PPT
자바야 놀자 PPT
 
Jquery javascript_ed10
Jquery javascript_ed10Jquery javascript_ed10
Jquery javascript_ed10
 
Redux
ReduxRedux
Redux
 
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
[TECHCON 2019: MOBILE - Android]2.예제에서는 알려주지 않는 Model 이야기
 
Nexacro
NexacroNexacro
Nexacro
 
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
Startup JavaScript 5 - 객체(Date, RegExp, Object, Global)
 

Viewers also liked

Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugbeom kyun choi
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)beom kyun choi
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀beom kyun choi
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Testbeom kyun choi
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유beom kyun choi
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013beom kyun choi
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128beom kyun choi
 
Kotlin으로 안드로이드 개발하기
Kotlin으로 안드로이드 개발하기Kotlin으로 안드로이드 개발하기
Kotlin으로 안드로이드 개발하기Taehwan kwon
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVONYounghan Kim
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 Yong Joon Moon
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터YunWon Jeong
 
Re: 제로부터시작하는텐서플로우
Re: 제로부터시작하는텐서플로우Re: 제로부터시작하는텐서플로우
Re: 제로부터시작하는텐서플로우Mario Cho
 
암호화 기초
암호화 기초암호화 기초
암호화 기초학섭 오
 
객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회beom kyun choi
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해beom kyun choi
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Wangeun Lee
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기Yong Joon Moon
 

Viewers also liked (20)

Ddd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksugDdd start 부록 지앤선&ksug
Ddd start 부록 지앤선&ksug
 
keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)keras 빨리 훑어보기(intro)
keras 빨리 훑어보기(intro)
 
Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀Tensorflow regression 텐서플로우 회귀
Tensorflow regression 텐서플로우 회귀
 
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 TestOkjsp 13주년 발표자료: 생존 프로그래밍 Test
Okjsp 13주년 발표자료: 생존 프로그래밍 Test
 
Event source 학습 내용 공유
Event source 학습 내용 공유Event source 학습 내용 공유
Event source 학습 내용 공유
 
Tdd live spring camp 2013
Tdd live spring camp 2013Tdd live spring camp 2013
Tdd live spring camp 2013
 
DDD 준비 서문래
DDD 준비 서문래DDD 준비 서문래
DDD 준비 서문래
 
Spring Boot 소개
Spring Boot 소개Spring Boot 소개
Spring Boot 소개
 
도메인구현 KSUG 20151128
도메인구현 KSUG 20151128도메인구현 KSUG 20151128
도메인구현 KSUG 20151128
 
Kotlin으로 안드로이드 개발하기
Kotlin으로 안드로이드 개발하기Kotlin으로 안드로이드 개발하기
Kotlin으로 안드로이드 개발하기
 
좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON좌충우돌 ORM 개발기 2012 DAUM DEVON
좌충우돌 ORM 개발기 2012 DAUM DEVON
 
파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기 파이썬 namespace Binding 이해하기
파이썬 namespace Binding 이해하기
 
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
알파희 - PyPy/RPython으로 20배 빨라지는 아희 JIT 인터프리터
 
Flume 훑어보기
Flume 훑어보기Flume 훑어보기
Flume 훑어보기
 
Re: 제로부터시작하는텐서플로우
Re: 제로부터시작하는텐서플로우Re: 제로부터시작하는텐서플로우
Re: 제로부터시작하는텐서플로우
 
암호화 기초
암호화 기초암호화 기초
암호화 기초
 
객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회객체 지향 발담그기 JCO 컨퍼런스 14회
객체 지향 발담그기 JCO 컨퍼런스 14회
 
스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해스프링 시큐리티 구조 이해
스프링 시큐리티 구조 이해
 
Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계Spring integration을 통해_살펴본_메시징_세계
Spring integration을 통해_살펴본_메시징_세계
 
파이썬 문자열 이해하기
파이썬 문자열 이해하기파이썬 문자열 이해하기
파이썬 문자열 이해하기
 

Similar to 파이썬 언어 기초

Python programming for Bioinformatics
Python programming for BioinformaticsPython programming for Bioinformatics
Python programming for BioinformaticsHyungyong Kim
 
[A1]루비는 패셔니스타
[A1]루비는 패셔니스타[A1]루비는 패셔니스타
[A1]루비는 패셔니스타NAVER D2
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수SeungHyun Lee
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기Sang Heon Lee
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기Jaeseung Ha
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)Sang Don Kim
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11OnGameServer
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)Kyoungchan Lee
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)Sang Don Kim
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기Chris Ohk
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2Chris Ohk
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기지수 윤
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계Sungkyun Kim
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리Booseol Shin
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)Tae Young Lee
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019min woog kim
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 releaseJaehyeuk Oh
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차Han Sung Kim
 

Similar to 파이썬 언어 기초 (20)

Python programming for Bioinformatics
Python programming for BioinformaticsPython programming for Bioinformatics
Python programming for Bioinformatics
 
[A1]루비는 패셔니스타
[A1]루비는 패셔니스타[A1]루비는 패셔니스타
[A1]루비는 패셔니스타
 
C언어 세미나 - 함수
C언어 세미나 - 함수C언어 세미나 - 함수
C언어 세미나 - 함수
 
[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기[NDC2016] TERA 서버의 Modern C++ 활용기
[NDC2016] TERA 서버의 Modern C++ 활용기
 
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
NDC 2017 하재승 NEXON ZERO (넥슨 제로) 점검없이 실시간으로 코드 수정 및 게임 정보 수집하기
 
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
[Td 2015]java script에게 형(type)이 생겼어요. typescript(박용준)
 
Boost 라이브리와 C++11
Boost 라이브리와 C++11Boost 라이브리와 C++11
Boost 라이브리와 C++11
 
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
GopherCon Korea 2015 - Python 개발자를 위한 Go (이경찬)
 
파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)파이썬 데이터 분석 (18년)
파이썬 데이터 분석 (18년)
 
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
[Td 2015]녹슨 c++ 코드에 모던 c++로 기름칠하기(옥찬호)
 
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
[TechDays Korea 2015] 녹슨 C++ 코드에 모던 C++로 기름칠하기
 
C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2C++17 Key Features Summary - Ver 2
C++17 Key Features Summary - Ver 2
 
Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기Javascript개발자의 눈으로 python 들여다보기
Javascript개발자의 눈으로 python 들여다보기
 
Javascript 101
Javascript 101Javascript 101
Javascript 101
 
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C#  혼합 멀티플랫폼 게임 아키텍처 설계
[KGC2014] 두 마리 토끼를 잡기 위한 C++ - C# 혼합 멀티플랫폼 게임 아키텍처 설계
 
파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리파이썬2.7 기초 공부한 것 정리
파이썬2.7 기초 공부한 것 정리
 
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
파이썬 데이터과학 1일차 - 초보자를 위한 데이터분석, 데이터시각화 (이태영)
 
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
김민욱, (달빛조각사) 엘릭서를 이용한 mmorpg 서버 개발, NDC2019
 
I phone 2 release
I phone 2 releaseI phone 2 release
I phone 2 release
 
파이썬 스터디 2주차
파이썬 스터디 2주차파이썬 스터디 2주차
파이썬 스터디 2주차
 

More from beom kyun choi

TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나beom kyun choi
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료beom kyun choi
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개beom kyun choi
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개beom kyun choi
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개beom kyun choi
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기beom kyun choi
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)beom kyun choi
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료beom kyun choi
 
하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기beom kyun choi
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기beom kyun choi
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기beom kyun choi
 

More from beom kyun choi (14)

TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나TDD 발담그기 @ 공감세미나
TDD 발담그기 @ 공감세미나
 
ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료ALS WS에 대한 이해 자료
ALS WS에 대한 이해 자료
 
리뷰의 기술 소개
리뷰의 기술 소개리뷰의 기술 소개
리뷰의 기술 소개
 
자바8 스트림 API 소개
자바8 스트림 API 소개자바8 스트림 API 소개
자바8 스트림 API 소개
 
자바8 람다식 소개
자바8 람다식 소개자바8 람다식 소개
자바8 람다식 소개
 
Zookeeper 소개
Zookeeper 소개Zookeeper 소개
Zookeeper 소개
 
하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기하둡2 YARN 짧게 보기
하둡2 YARN 짧게 보기
 
차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)차원축소 훑어보기 (PCA, SVD, NMF)
차원축소 훑어보기 (PCA, SVD, NMF)
 
Storm 훑어보기
Storm 훑어보기Storm 훑어보기
Storm 훑어보기
 
Hive 입문 발표 자료
Hive 입문 발표 자료Hive 입문 발표 자료
Hive 입문 발표 자료
 
HBase 훑어보기
HBase 훑어보기HBase 훑어보기
HBase 훑어보기
 
하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기하둡 맵리듀스 훑어보기
하둡 맵리듀스 훑어보기
 
하둡 HDFS 훑어보기
하둡 HDFS 훑어보기하둡 HDFS 훑어보기
하둡 HDFS 훑어보기
 
하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기하둡 (Hadoop) 및 관련기술 훑어보기
하둡 (Hadoop) 및 관련기술 훑어보기
 

파이썬 언어 기초

  • 2. 파이썬 • 인터프리터, 스크립트 • 동적 타입 언어 • 함수, 클래스, 모듈, 패키지 • 간결하고 쉬운 문법 • 다양한 라이브러리 많음 • 통계, 기계학습, 웹 개발, 배포 도구 등 다양한 영역에서 사용 • 현재 버전 3.5 • 여전히 2.7도 많이 사용 [http://www.tiobe.com/tiobe_index]
  • 3. 스크립트 언어 # hello.py print("헬로우") 스크립트 실행 $ python hello.py 헬로우 코드 작성, 바로 실행
  • 4. 몇 가지 기본 구성 요소 import httplib, urllib # 패키지/모듈 임포트 import time # 주석 key = 'XXXXXXXX' # 글로별 변수 def sendCommand(): # 함수 # 블록은 들여쓰기로 처리 # params, headers 등 로컬 변수 params = urllib.urlencode({'api_key':key, 'command_string': 'OFF'}) headers = {"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"} conn = httplib.HTTPSConnection("api.thingspeak.com") try: # 블록은 들여쓰기로 conn.request("POST", "/talkbacks/7678/commands", params, headers) response = conn.getresponse() print response.status, response.reason data = response.read() print("command id =", data) conn.close() except: print "connection failed"
  • 5. 주요 타입 데이터 타입 • 숫자 • int : 10, 20 • float : 10.1, 0.8 • 부울(bool) : True, False • 문자열(str) : '가', "가나다" 주요 연산 • 수치 연산: • 10 + 20, 10 – 5, 2 * 3 • 24 / 5 : 4.8 (실수 반환) • 240 // 50 : 4 • 240 % 50 : 40 • 2 ** 3 : 2의 3승 • 비교 연산: • < <= > >= == != • is : 같은 객체인지 • is not : 같은 객체가 아닌지
  • 6. 주요 타입: 리스트(list) • 여러 값을 순차적으로 저장할 수 있는 자료형: 배열 • 생성 : pk = [4, 6, 1, 9] • 추가/사입 • 추가 : pk.append(10)  [4, 6, 1, 9, 10] • 삽입 : pk.insert(1, 3)  [4, 3, 6, 1, 9] • 인덱스 기반 접근 • 양수 인덱스(0부터 시작): pk[0]  4, pk[2] = 3  pk = [4, ,6, 3, 9] • 음수 인덱스뒤에서 -1부터 시작): pk[-2]  1 • 제거 • remove(val): pk.remove(6)  [4, 1, 9] • pop(idx): popped = pk.pop(2)  popped = 1, pk = [4, 6, 9]
  • 7. 주요 타입: 사전(dict) • (키, 값) 쌍을 갖는 해시 • 생성 : map = {'r': 'red', 'g': 'green', 'b': 'blue'} • 추가/변경 • map['r'] = 'RED'  {'r': 'RED', 'g': 'green', 'b': 'blue'} • 접근 • 개별 요소: map['g']  'red' • 키: map.keys()  dict_keys(['r', 'b', 'g']) • 값: map.values()  dict_values(['red', 'blue', 'green']) • 키 존재 여부: 'g' in map  True, 'x' not in map  True • 개별 쌍 제거 • del map['g']
  • 8. 주요 타입: 튜플(tuple) • Immutable 리스트 • 생성 : cardExp = (12, 2019) • cardNo = 1234, 5678, 2468, 0987 • oneItem = 433, • 접근 • 인덱스: cardExp[0]  12, cardExp[1]  2019 • 튜플 언패킹 • mon, year = cardExp  mon = 12, year = 2019 • 변환 • tuple  list: cardNoList = list(cardNo) • list -> tuple: cNo = tuple(cardNoList)
  • 9. 제어문 if age > 10 and age < 20: print('무서운10대') elif age <= 10: print('아직은 말 들음') else: print('성인') while 조건: 코드 # 조건이 True이면 실행 for i in range(5): # range(5) : 0~4 print(i) for v in [1,2,3,4,5]: print(v) break, continue, pass문 존재
  • 10. 함수 def hello(name): print('Hello,', name) def hello2(name): print('Hello,', name) return # 반환 값 없음 def sum(a, b): return a + b # 값 반환 hello('이름') s = sum(1, 2) # s는 3 h = hello # 함수는 first-class h('이름') # 키워드 인자, 기본 값 def createCar(doors = 2, type = 'sports'): … createCar() # doors = 2, type = 'sports' createCar(4, 'suv) # doors = 4, type = 'suv' createCar(type = 'sedan', doors = 4) createCar(type = 'suv') # doors = 2 # 람다식 reduce(lambda x, y: x + y, [0, 1, 2, 3, 4])
  • 11. 클래스 class Raspberry: def __init__(self, ver): # 생성자(초기화) self.version = ver # 멤버 변수 def turnOn(self): # 멤버 함수 # __로 시작하는 멤버 변수 : 일종의 private self.__powerState = True def temperature(self): temp = … return temp def gpio_on(self, num): GPIO.output(num, True) rp = Raspberry(3) # 생성 rp.turnOn() # 멤버 함수 사용 rp.version # 멤버 변수 사용 rp.gpio_on(18)
  • 12. 상속 class Developer: def __init__(self, name): self.name = name def coding(self): print(self.name, 'is coding!!') class PythonDeveloper(Developer): def coding(self): super().coding() print(self.name, 'is python coding!!') class JavaDeveloper(Developer): def __init__(self, name): super().__init__(name + ' in java') >>> jd = JavaDeveloper('bk') >>> jd.coding() bk in java is coding!! >>> >>> pd = PythonDeveloper('Gudio') >>> pd.coding() Gudio is coding!! Gudio is python coding!! >>>
  • 13. 모듈=파일, 패키지=모듈 모음=폴더 # switch.py # py 파일이 곧 모듈 import os statusFilePath = "/home/pi/switchStatus.txt" def isSwitchOff(): if not os.path.exists(statusFilePath): return False f = open(statusFilePath, 'r') line = f.readline() f.close() if line == "ON": return False else: return True def setSwitchStatus(newStatus): f = open(statusFilePath, 'w') f.write(newStatus) f.close() … importswitch #switch 모듈임포트 defrunCommand(): params =urllib.urlencode({'api_key':key }) headers ={"Content-type": "application/x-www-form-urlencoded","Accept": "text/plain"} conn=httplib.HTTPSConnection("api.thingspeak.com") try: … iflen(data)>0: switch.setSwitchStatus(data) #모듈명.구성요소:함수,변수,클래스등접근가능 conn.close() #switch.statusFilePath처럼 모듈의글로벌변수접근 except: print "connection failed" if__name__ =="__main__": runCommand() import * 파이썬 3.3 전에는 폴더에 __init__.py 파일이 있어야 패키지로 인식 * 3.3부터는 이 파일이 없어도 패키지로 인식함
  • 14. 패키지=모듈 모음=폴더 * 파이썬 3.3 전에는 폴더에 __init__.py 파일이 있어야 패키지로 인식 * 3.3부터는 이 파일이 없어도 패키지로 인식함 패키지 구조 예: my/ __init__.py pack/ __init__.py infomod.py pack1/ __init__.py memlist.py
  • 15. 모듈/패키지 사용, import/from • 패키지/모듈 검색 기준 : sys.path • import, from import로 사용 대상 지정 • import 모듈/패키지명 (as 별칭) • from 패키지/모듈 import 모듈/구성요소 (as 별칭) import my.pack.infomod my.pack.infomod.info() # my/pack/infomod.py def info(): … import my.pack.infomod as infom infom.info() from my.pack import infomod infomod.info() from my.pack.infomod import info info()
  • 16. 스크립트 실행 진입 지점 # run.py import switch # 임포트 시점에 실행 def runCommand(): print("runCommand") ... print("before") if __name__ == "__main__": runCommand() print("after") # switch.py print("switch") python run.py switch before runCommand after
  • 18. 기타 • pip : 패키지 관리 도구 • Django : 웹 프레임워크 • numpy, pandas, matplotlib : 데이터 분석 모듈 • scikit, tensorflow, theano : 머신러닝 • jupyter notebook : 웹 브라우저 기반 파이썬 실행 환경 • 코드, 데이터 분석, 시각화 등 공유 가능