파이썬의 모든것

김용녀·2022년 7월 22일
0

해당글은 파이썬 원서를 토대로 작성했습니다.

1. 파이썬 인터프리터 이용하기

1.1 대화형모드
터미널에서 인터프리터가 대화형모드로 작동한다고한다. 첫줄에 '>>>'기호가 나타나고, 줄이 길어져 다음줄로 넘어갈경우 '...'기호가 나타난다.
1.2 인코딩
파이썬 파일들은 UTF-8로 인코딩되었다. 그 외의 값을 선언하려면 파일 첫줄에 주석문을 추가해야한다. ex) # -- coding: cp1252 --

2. 파이썬 기본형 이용하기

2.1 숫자

  • 인터프리터를 통해 간단한 계산이 가능하다. +,-,*,/,%,()자유롭게 사용하면된다.
    주의할 점은 /(나누기) 실행시 항상 float으로 return 되므로 정수형 값을 구하고싶다면 '/' 대신 '//' 연산자를 이용해야한다.
    거듭제곱 연산은 a**b 형식이다.

2.2 문자열

  • 문자열에서 '..'와 ".."은 같은 결과를 준다. 문자열내에 "를 출력하고싶다면, ''로 묶고 '를 출력하고싶다면 ""로 묶으면된다. 이것에 상관없이 쓰고싶다면, \' or \" 를 사용하면된다.
    \n과 같이 특수문자로 취급되고싶지 않다면, 문자열에 r을 붙이면된다.
  • 문자열 리터럴끼리 계산
    'py''thyon'은 'python'으로 출력되지만 변수+'py'는 '+'연산을 이용해야한다.
  • 파이썬 문자열은 불변이다. 문자열의 인덱스에 새로운 문자를 대입하면 에러가 일어난다.

3.3 리스트

  • 리스트에서 [-1] 인덱스는 마지막 인덱스에서 역순으로 출발한다.
  • 리스트는 문자열과 다르게 가변이다.
  • append 메서드는 리스트 끝에 새 항목 추가, len()길이 내장함수
    

3. 파이썬 반복, 제어문 등 (for,if...)

  • If문 - elif -else문.
    elif는 else+if문의 줄임표현으로 , 과도한 들여쓰기를 방지해준다.
  • for문
    for A in B의 형태로, 이때 B는 리스트나 문자열의 항목이어야한다.
    for A in range (B) 의 형태는 내장함수 range()를 이용해서
    0부터 B-1의 수열을 만든다. 이때 증가분(step) 지정가능.
  • range() 함수
    수열을 만들어줌. 하지만 range 자체로는 list가 아님!
    list(range(5,10)) = [5,6,7,8,9] 기본적으로는 등차가 1이다
  • for문에도 else절을 걸 수 있다.
    이중 for문에서 안쪽 for문이 끝날경우, else절을 이용하여 for문을 완전히 끝낼수있다.
  • pass문
    프로그램이 특별이 할일없을때 사용
  • match문
    match는 case와 이용하여 match (변수): case(변수값) 으로 if문과 유사하다.
  • 함수 정의하기
    파이썬 함수에선 인자값으로 위치인자와 키워드 인자 두개가 올수있다.
    위치인자는 앞에 *(args)를, 키워드인자는 **(kwargs)를 붙인다.보통 위치인자 *는 리스트,튜플등 인덱스가 있는 객체를 받을때 입력한다.
    **키워드 인자는 Dictionary(키워드=특정값)형태로 입력받을때 사용한다.
  • 람다 표현식
    일반 함수와 같은 기능을 간편하게 사용가능하다.
    def hap(x,y):
    return x+y <==처럼 함수를 따로 선언해야하는 반면, 람다식 이용시
    lamda x,y:x+y(10,20) 을 통해 함수 선언 없이 람다 식으로 해결할수있다.
  • 함수 어노테이션
    변수,함수 선언시 num:int = 1 형식으로 변수 뒤에 자료형을 명시해준다.

4. 자료구조

List

  • append 리스트 항목 끝에 추가
  • extend 리스트 끝에 이터러블의 항목을 기존 리스트에 덧붙여서 추가.
    append와 list의 차이
  • insert(i,x) 인덱스 i에 x값을 추가
  • remove(x) 리스트에서 x값인 첫번째 항목 삭제
  • pop([i]) i번째 인덱스 값 삭제와 동시에 return . 인덱스 지정하지 않으면 스택처럼 FILO 순서로 실행된다.
  • clear() 리스트 모든 항목을 삭제
  • count(x) 리스트에서 x가 등장하는 횟수
  • sort() 리스트를 오름차순으로 정리. sort(reverse=True)은 그 반대로 정리
  • reverse() 리스트를 제자리에서 뒤집기
  • copy () 리스트를 얕은 복사
  • del()문 . 값대신 인덱스를 이용해서 삭제. ex) del A[0]

리스트를 큐로 사용하기

from collections import deque
queue = deque(["xxxx","sads"]
이처럼 덱 형식으로 바꾸면 FIFO형식으로 append와pop이 작동한다.

그 외의 형태

  • 튜플 : 리스트와의 차이는 list는 가변, 튜플은 불변이다....+ 튜플은 ()소괄호로 묶고, 리스트는 []대괄호로 묶기
  • 집합 : 중복이 없어서 순서가 없는 컬렉션이다. 집합을 만들때 중괄호 또는 set()함수 이용
  • 딕셔너리 : dict{'key':'value'} 형태의 컬렉션

5. 모듈

파이썬에서 모듈이란?
인터프리터는 종료 시 데이터가 삭제된다. 그래서 인터프리터대신 편집기를 이용하여 파일을 저장하고 깔끔하게 정리하고자 한다. 이런 행위를 '스크립트'를 만든다고 한다. 파이썬은 정의들을 파일에 넣고 스크립트나 인터프리터 모드에서 사용하고자한다. 이때 이용되는 파일을 '모듈'이라 한다. 이때 사용하기 위해 Import하는것이다.

  • tip. dir()함수가 모듈이 정의한 이름을 찾아준다.

6. 입력과 출력

우리는 출력을 한다하면 대부분 print() 함수를 사용한다.
파이썬에는 print와 함께 사용하는 다양한 함수가있다.

  • format() : {}를 사용하여 format( 변수) 와 함께 문자열을 출력할수 있다. print('We are the {} who say "{}!"'.format('knights','Ni')) We are the knights who say "Ni!"
  • f문자열 : {}안에 직접 변수를 넣는다.
print(f'The value of pi is approximately {math.pi:.3f}.')
The value of pi is approximately 3.142.

입력방식에는 input()과 sys.stdin.readline()을 이용한다.
보통 readline의 시간복잡도가 조금 더 유리하다고 한다.그래서 알고리즘 문제풀때 자주 사용한다. 둘다 입력받는 값은 str 로 저장된다.

7. 에러와 예외

파이썬에서 예외처리는 try-except문이 사용된다.
try는 무조건적으로 실행되고, 에러가 터진다면 except가 실행된다.

  • 이 외에도 except가 터지지않으면 else문이 실행되고, 오류 발생 여부와 상관없이 작동하는 finally문도 있다.
    - raise xxError 를 통해 에러를 의도적으로 터뜨릴수있다. 이를 통해 error를 연쇄적으로 발생시킬수도 있다.

8. 클래스

  • 클래스 기본 정의
    Class objects support two kinds of operations: attribute references and instantiation. 클래스 내에는 함수와 인스턴스 변수가 있다.
    객체를 생성할떈 생성자를 통해 생성되는데, 클래스내에 명시하는 init 함수를 통해 변수들이 초기화된다. init내에는 항상 첫번째 파라미터로 self가 들어와야하는데, 이것은 객체 생성시 파라미터값으로 넘어오는 것이 아니라 기존에 클래스가 갖고있는 변수 값이다. 클래스에 내장된 값이라고 봐도 될것이다. 이런경우에 MyCLass는 i가 12345라는 값을 가지는데, 객체 생성시 넘어올 i값과 구분하기 위해 self라는 인자를 통해 구분하는것이다.
  • 상속
    (해당예제는 Person(부모), Student (자식) 관계)
    클래스간 상속하는 경우에서 자식 클래스 괄호에 부모 클래스를 받고) 생성자init에서 부모의 변수를 받고, 자식에서 추가로 이용할 변수를 이용하면 된다.
    그리고 super()._init()의 경우 자식클래스 내에서도 부모 클래스의 변수값을 지정할수 있다.
    다중상속 또한 가능하다. 자식 클래스 선언시 여러 부모 클래스를 가짐)
  • 메서드 오버라이딩
    자식 클래스가 부모 클래스의 메서드를 상속받아 사용하지만, 메서드를 재정의해서 사용하는것이다. 메서드명과 파라미터는 그대로받는다.
  • 이터레이터
    이터레이터는 요소가 복수인 컨테이너(리스트, 퓨플, 셋, 사전, 문자열)에서 각 요소를 하나씩 꺼내 어떤 처리를 수행할 수 있도록 하는 간편한 방법을 제공하는 객체이다.  
    이터레이터는 next() 함수 호출 시 계속 그다음 값을 반환시킬수 있다.
    리스트는 이터레이터를 이용할수있지만, 단독으로 next()호출시 오류가 발생한다.
 a = [1, 2, 3]
ia = iter(a)
for i in ia:
   print(i) 

iterator 처리를 통해 ia가 되면, 그때 next()가 내장된 for 문을 이용하여 호출가능하다. 이터레이터를 이용하는것에는 리스트 ,튜플,range같은 시퀀스 객체가 있다.

  • 제너레이터
    이터레이터를 만들어내는 하나의 방법으로 , 제네레이터는 yield 문을 통해 순차적으로 반복자(Iterator)를 만들수있다.
    myGenerator라는 함수에서 yield를 실행시켜 이터레이터를 생성할수 있다.
  • enumerate
    enmurate() 함수 이용시, 리스트를 인덱스와 value로 이루어진 tuple을 하나의 인자에 넣어준다 .이때 index와 value를 나눠서 저장하거나 출력하고싶다면, 인자를 나눠주면 된다.
    만약 인덱스를 1에서 시작하고싶다면, 넘겨주는 리스트 뒤에 start=1 쓰면된다.
for i, letter in enumerate(['A', 'B', 'C']):
  print(i, letter)
..............................
0 A
1 B
2 C

9. 표준 라이브러리

  • os 모듈
    시스템 명령어 실행 등
import os 
os.environ['PATH'] -시스템 환경변수 확인
os.getcwd() -현재 디렉토리 
os.chdir() -디렉토리 변경
os.system() - 시스템 명령어 실행
  • glob
    디렉토리내 파일목록 확인
>>import glob
>>glob.glob('*.py')
['primes.py', 'random.py', 'quote.py']
  • sys
    파이썬 인터프리터가 제공하는 변수와 함수를 직접 제어할 수 있게 해주는 모듈이다.
>>import sys
sys.argv  => 명령행에서 인수 전달하기
sys.exit 강제 스크립트 종료
sys.path 모듈 위치 불러옴
  • math
    수학과 관련된 각종 모듈. 상수 또는 계산식을 가져다 쓸수있다.
import math
math.pi
math.e
math.sqrt()
  • random
    난수 생성기능
import random
random.random()  0부터 1사이의 무작위의 실수. 여기에 곱셈이나 덧셈 가능
random.uniform(a,b) a와 b사이의 랜덤 실수
random.randint(a,b) a와 b사이의 랜덤 정수
random.choice("string") 랜덤하게 원소를 하나 선택
random.shuffle([1,2,3,4,5]) 원소의 순서를 랜덤하게 바꿈
  • from datetime import date
    날짜와 시간을 조작하는 클래스 제공
date.today()
now,days 등...
  • locale
    시간(datetime)모듈을 한글로 포맷을 바꾸면, 에러가발생한다. 이때 locale라이브러리를 통해 해결함
  • logging
    작업시 로그를 남길수 있는 기능
import logging
logging.debug('Debugging information')
logging.info('Informational message')
logging.warning('Warning:config file %s not found', 'server.conf')
logging.error('Error occurred')
logging.critical('Critical error -- shutting down')

10.가상환경 및 패키지

  • venv
    가상환경을 만들고 관리하는데 사용되는 모듈
  • pip
    파이썬 모듈을 설정 및 관리를 담당하는 모듈
profile
어서오세요

0개의 댓글