상세 컨텐츠

본문 제목

파이썬에 대해서1(기초)

기타정보

by 김일국 2017. 11. 7. 15:50

본문

#파이썬 설치: https://www.python.org/downloads/

#파이썬 설치기술참조: https://goddaehee.tistory.com/286

#파이썬 라이브러러(아래 타입정리 밑의 빌트인함수와 타입이 중요함): docs.python.org/ko/3/library/index.html

 

파이썬 표준 라이브러리 — Python 3.9.5 문서

파이썬 표준 라이브러리 파이썬 언어 레퍼런스 는 파이썬 언어의 정확한 문법과 의미를 설명하고 있지만, 이 라이브러리 레퍼런스 설명서는 파이썬과 함께 배포되는 표준 라이브러리를 설명합

docs.python.org

#파이썬 전용 데이터 타입 정리

- 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

 

내장 함수 — Python 3.9.5 문서

내장 함수 파이썬 인터프리터에는 항상 사용할 수 있는 많은 함수와 형이 내장되어 있습니다. 여기에서 알파벳 순으로 나열합니다. abs(x) 숫자의 절댓값을 돌려줍니다. 인자는 정수, 실수 또는 __

docs.python.org

#파이썬 빌트인 타입 : docs.python.org/ko/3/library/stdtypes.html

 

내장형 — Python 3.9.5 문서

다음 섹션에서는 인터프리터에 내장된 표준형에 관해 설명합니다. 기본 내장 유형은 숫자, 시퀀스, 매핑, 클래스, 인스턴스 및 예외입니다. 일부 컬렉션 클래스는 가변입니다. 제자리에서 멤버

docs.python.org

요 며칠간 파이썬이란 언어에 대해서 살펴 보았다. 실습사이트: 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()

관련글 더보기

댓글 영역