#파이썬 설치: https://www.python.org/downloads/
#파이썬 설치기술참조: https://goddaehee.tistory.com/286
#파이썬 라이브러러(아래 타입정리 밑의 빌트인함수와 타입이 중요함): docs.python.org/ko/3/library/index.html
#파이썬 전용 데이터 타입 정리
- range(10) : 파이썬 3.x 부터 생겨남. range = (0,1,2,3,4,5,6,7,8,9) 과 같음.
- list = [10,20,30,40] #특징: 1차원배열
- tuple = (10,20,30,40) #특징: 수정/삭제 않됨
- set = {10,10,20,20,30,30.40,40} #특징: 중복값 제거됨
- dictionnary = {'one':10,'two':20,'three':30,'four':40} #특징: 키:밸류 형태의 DB리스트 또는 json과 같은 형태
#파이썬3.x 전용 range 타입 정리 range(start, stop, step) 형태
#파이썬으로 구구단 만들기
for i in range(2, 10):
for j in range(1, 10):
print('{} x {} = {}'.format(i, j, i*j))
#위 구구단을 1줄로 압축하기(지능형 리스트로 출력)
print(['{} x {} = {}'.format(i,j,i*j) for i in range(2,10) for j in range(1,10)])
#변수나클래스의 타입과 빌트인 매서드 확인
print(type(변수/클래스명)
print(dir(변수/클래스명))
#파이썬 빌트인 함수 : docs.python.org/ko/3/library/functions.html
#파이썬 빌트인 타입 : docs.python.org/ko/3/library/stdtypes.html
요 며칠간 파이썬이란 언어에 대해서 살펴 보았다. 실습사이트: https://codeanywhere.com/editor/
C나 자바와는 다른 자료구조와 데이터변수(파이썬에서는 객체)구조가 특이한 점이다.
그리고, 자바와 같은 객체지향 언어이고, 자바스크립트와 같은 인터프리터형 언어이다.
위 실습사이트는 python3 과 python 명령으로 버전3과 2를 모두 지원한다.
파이썬은 특징은 아래와 같다.
1. 객체지향 언어이고, 인터프리터방식의 언어이다.
2. 기본자료구조에 리스트,튜플,딕셔너리가 존재한다.
예제실행 python hello.py
--------------------
- 아래 소스(hello.py)
--------------------
# -*- coding: utf-8 -*-
import json
import pprint
print('헬로 World!!!')
student = {'홍길동':[179,65],'김일국':[168,60]}
print(student['김일국'])
# def 함수정의
def DoAdd(a,b):
return (a+b)
x=3
y=DoAdd(x,-5)
print(y)
def DoOperation(a,b):
return (a+b),(a-b),(a*b),(a/b)
a,b,c,d = DoOperation(3,4)
print(a,b,c,d)
def AddVar(m=1,a=1,b=1):
m=m+a+b
return m
m=AddVar()
print(m)
m=AddVar(m,2)
print(m)
# 아래 함수는 매개변수로 넘어오는 문자열들을 결합하여 대문자로 변환한다(*튜플자료)
def MakeUpper(*args):
out=''
for k in args:
out=out+k+' '
out=out+'.'
return out.upper()
str=MakeUpper('i','love','python')
print(str)
def MakeSummation(*args):
print(args)
return sum(args)
a=MakeSummation(1,3,5,7)
print(a)
# 아래 함수는 매개변수로 넘어오는 변수들을 **딕셔너리자료 형태로 처리(키:값 형태)
def Average(**man):
print json.dumps(man, ensure_ascii=False) #, indent=4
height=0
weight=0
for k in man:
height=height+man[k][0]
weight=weight+man[k][1]
height=height/len(man)
weight=weight/len(man)
return [height,weight]
data = { '홍부장':[173,67],'정이사':[170,62],'김부장':[190,95],'장사장':[180,72] }
a=Average(**data)
print(a)
# 전역변수와 지역변수정의
var = 0
def SetVar(n):
global var # var를 전역변수로 정의
var = n
SetVar(1)
print(var) # var가 지역변수라면 0 이 출력되겠으나, 함수내에서 전역변수로 처리되어서 1이 출력됨
def to_bytes(n, length, endianess='big'):
h = '%x' % n
s = ('0'*(len(h) % 2) + h).zfill(length*2).decode('hex')
return s if endianess == 'big' else s[::-1]
# 파일읽기
f=open('./textSave.txt','r')
s=f.read()
f.close()
print(s)
# 바이너리파일 저장
''' 전체 주석시작
f=open('./binSave.bin', 'wp')
for k in range(0,256):
data=k.to_bytes(1,'title') #2.7버전에는 to_bytes함수가 없음.
f.write(data)
f.close()
'''
3. 클래스, 모듈, 함수데코레이션을 구성할 수 있다.
----------------------------
- 함수모듈(module.py) 구성예
----------------------------
class MyBox:
nNumBox=0
def __init__(self,n=0):
self.num=n
MyBox.nNumBox=MyBox.nNumBox+1
def __del__(self):
self.nNumBox=self.nNumBox-1
def __add__(self,n):
self.num=self.num+n
return self
def __sub__(self,n):
self.num=self.num-n
if self.num<0:
self.num=0
return self
def insert(self):
self.num=self.num+1
def extract(self):
if self.num>0:
self.num=self.num-1
def get_item_number(self):
return self.num
def get_box_number(self):
return MyBox.nNumBox
# 파생클래스 구현
class MyNewBox(MyBox):
def insert(self):
self.num=self.num+2
-----------------------------------
- 모듈 사용예(python test_module.py)
-----------------------------------
# -*- coding: utf-8 -*-
import module
from module import * #모듈명을 쓰지 않아도 된다. * 또는 MyBox, MyNewBox
NewA=MyNewBox()
NewA.insert()
n=NewA.get_item_number()
print(n)
A=module.MyBox() # MyBox에 공이 0개인 A이름의 객체 생성
print(A)
B=module.MyBox(2) # MyBox에 공이2개 들어있는 B이름의 객체 생성
print(B)
C=module.MyBox(3)
# A.insert()
A=A+12
itemNumber = A.get_item_number()
print(itemNumber)
A=A-3
itemNumber = A.get_item_number()
print(itemNumber)
numBox = B.get_box_number()
print(numBox)
--------------------------------
- 클래스 사용예(python class.py)
--------------------------------
print(numBox)
import json
import pprint
print("클래스 구현")
class MyBox:
nNumBox=0
def __init__(self,n=0):
self.num=n
MyBox.nNumBox=MyBox.nNumBox+1
def __del__(self):
self.nNumBox=self.nNumBox-1
def __add__(self,n):
self.num=self.num+n
return self
def __sub__(self,n):
self.num=self.num-n
if self.num<0:
self.num=0
return self
def insert(self):
self.num=self.num+1
def extract(self):
if self.num>0:
self.num=self.num-1
def get_item_number(self):
return self.num
def get_box_number(self):
return MyBox.nNumBox
# 파생클래스 구현
class MyNewBox(MyBox):
def insert(self):
self.num=self.num+2
NewA=MyNewBox()
NewA.insert()
n=NewA.get_item_number()
print(n)
A=MyBox() # MyBox에 공이 0개인 A이름의 객체 생성
print(A)
B=MyBox(2) # MyBox에 공이2개 들어있는 B이름의 객체 생성
print(B)
C=MyBox(3)
# A.insert()
A=A+12
itemNumber = A.get_item_number()
print(itemNumber)
A=A-3
itemNumber = A.get_item_number()
print(itemNumber)
numBox = B.get_box_number()
print(numBox)
--------------------------------------------
- 함수데코레이션 사용예(python decoration.py)
--------------------------------------------
func()
# -*- coding: utf-8 -*-
# 공통함수처리
import time
def make_decoration(func):
def decorated_func():
print(func.__name__,'is being called')
func()
print(func.__name__,'was executed')
return decorated_func
@make_decoration
def function_a():
print('abc')
@make_decoration
def function_b():
print('def')
function_a()
function_b()
def display_time(f):
def decorated():
print(time.asctime())
f()
return decorated
@display_time
def func():
print('ABC')
func()
2017블로그 결산 (0) | 2018.01.06 |
---|---|
2018정보처리기사 실기준비->합격+웹페이지보안 JS팁 (0) | 2017.12.23 |
정보처리 기사 실기 2017년 3회 실패 (0) | 2017.05.07 |
컴퓨터과학 개념에서 많이 사용되는 수도코드 및 그리스 문자 기호 (0) | 2017.04.21 |
온라인 맞춤법 검사기 (0) | 2017.01.02 |
댓글 영역