2018-01-03 TIL(WPS pre-school Day2)

이산수학(sec 2.3 수의 표현)

  • 진법별 표현
  • 진법별 사칙연산
  • 진법 간의 변환

Pre-school Day 2

Pycharm 설정하기

  • Pycharm 터미널에 가상환경 적용하기 file -> defualt setting -> preject interpreter -> add local선택 -> usr/local/var/pyenv/versions/ps7/bin/python3 선택 후 apply & OK

  • Paycharm 터미널 - zsh 변경

파이썬은 객체지향 언어

  • 파이썬의 모든 것은 객체
  • 어떤 데이터를 집어넣어도 알아서 설정해주므로 빅데이터에 적용하기 좋다
  • 동적언어의 대표적 특징

Sequence 자료형

  • 양의 정수로 색인(index)되게 순서대로 객체들이 나열
  • 반복(순환)가능한 객체
  • 모든 순서열에 적용되는 공통 연산이나 함수 존재

문자열

  • ’ “ 구분 없음
  • 여러줄은 ‘'’으로 묶음

문자열 포매팅

name = 'pando'
age = 17
print(f"Hello {name} {age}")

리스트

  • 순서를 갖는 다양한 객체들의 시퀀스
  • 대괄호로 만듬 []
  • 변경 가능한 객체

튜플

  • 고객정보와 같이 변경되면 안되는 자료들
  • 패킹
data = 'pando', 30, 'seoul'
>>> data
>>> ('pando', 30, 'seoul')
  • 언패킹
name, age, city = data
>>> name 
>>> 'pando'

매핑 - 사전자료형

  • 키와 값 형태로 짝지어짐
  • 순서 보장 X
  • 변경 가능
  • 중괄호로 생성 {} 또는 dict()
  • 키만 남은 딕셔너리
  • 값은 유일해야함
    a = {0,0,0,0,0}
    >>> a = {0}
    

    조건문과 반복문

    조건문

    animal = True
    small = True
    if animal:
      if small:
          print("고양이 입니다.")
      else:
          print("곰 입니다.")
    else:
      if small:
          print("장미입니다.")
      else:
          print("나무입니다.")
    

반복문

for [   요소] in [반복가능한 객체]:
    [실행 내용]

while [조건]:
    [실행 내용]
  • 반복가능한 객체 d = [1,2,3]

dir(d) 반복 가능한 객체 확인?

  • iterable 한 객체는 __iter__함수를 갖고 있다
  • d_iter = iter(d)
  • iterable한 객체를 iterator로 만든다(iterable -> iterator)
  • 소모성 객체
  • print(type(d_iter)) –> ? next(d_iter)
  • 다음 값을 반환(끝나면 StopIteration Error발생)
  • 에러가 발생하면 반복문 종료

Comprehension

  • 컴프리헨션은 하나 이상의 이터레이터로부터 파이썬의 자료구조를 만드는 콤팩트한 방법
  • 비교적 간편한 구문으로 조건문과 반복문을 결합할 수 있도록 해줌
  • 파이써닉한 방법
list1 = []
for i in range(10):
    if i % 2 == 0:
        list1.append(i)

list2 = [x for x in range(10) if x%2==0]

함수

  • 여러 구문을 묶은 단위
  • 재사용이 가능
  • 매개변수(parameter), 인자(arguments), 반환(return)으로 구성

위치 인자 & 키워드 인자

  • 쓰는 이유 : 데이터를 받아들일 때 편하고 확장성이 높다
  • 위치 인자 : 튜플로 묶는다
def print_args(*args):
    print('Positional argument tuple:', args)

print_args(1,2,3,4,5,'asd','ads','sdfg')
  • 키워드 인자 : 딕셔너리로 묶는다
def print_kwargs(**kwargs):
    print('Keyword arguments:', kwargs)

print_kwargs(animal='cat',fruit='apple')

예외처리

에러가 발생하면 프로그램이 종료가 되기 때문에 모든 잠재적인 에러를 방지하기 위해 적절한 예외 처리가 필요

short_list = [1,2,3]
while True:
    value = input('Position [q to quit]? ')
    if value == 'q':
        break
    try:
        position = int(value)
        print(short_list[position])
    except IndexError:
        print('인덱스 초과:', position)
    except Exception as other:
        print('잘못된 인덱스:', other)

모듈과 패키지

모듈

파이썬 파일

모듈 임포트
import [모듈]
import requests
다른 이름으로 모듈 임포트
import [모듈] as [다른 이름]
import login as user_login
필요한 모듈만 임포트
from [모듈] import [필요한 부분]
from bs4 import BeaurifulSoup
패키지
  • 모듈을 모아놓은 것
  • 파이썬 어플리케이션을 좀 더 확장 가능하게 만들기 위해 모듈을 패키지라는 파일 계층구조에 구성
  • 디렉토리에 파일 이외에 필요한 파일이 있는데, __init__.py 파일 파이썬은 이 파일을 포함하는 디렉터리를 패키지로 간주
animal
|--__init__.py
|--cat.py
|--dog.py

from animal import cat
cat.move()
cat.eat()
cat.sleep()

클라스

  • 객체 지향 프로그래밍 언어로 만드는 프로그램의 단위는 객체
  • 객체는 클래스를 실체화한 것이며, instance라고 한다.
  • 우리만의 객체를 만들 수 있음
[1]class [2] 클래스 이름 ([3]상속받을 클래스):
    [4]멤버 변수

    def [5]메서드 이름
    
class Person(Object):
    name = 'Pando'

    def hello():
        print('안녕하세요')
  • ’ . ‘ 으로 객체 속성 탐색
  • 소괄호를 이용해 객체를 호출하여 클래스로 인스턴트 객체 생성
Person.name
one = Person()

데코레이터

  • 기존 함수에 기능을 추가하고, 새로운 함수를 만드는 역할
  • 어떤 동작을 함수의 전/후에 수행해야 하거나, 공통적으로 사용하는 코드를 쉽게 관리하기 위해 사용
#login_required(print_hello)
@login_required
def print_hello():
	print('hello')
def login_required(func):
	def wrapper():
		return func
	return wrapper

Comments