"내일을 바꾸는 업무 자동화" 프리렉(2020년)

기본 IT 소양이 있는 개발자라면, "Head First 파이썬"과 본 도서를 추천한다. 해당 도서가 2년이 지났기에 책에 나온대로 설치를 하다보면 라이브러리 버전 차이로 실행이 되지 않아 간혹 인터넷에서 새로운 버전에 따른 문법을 찾아야 할 때도 있지만, 전체적으로 "파이썬이 편리하다." 라는 생각과 자바처럼 "반복되는 코드없이 단순하게 호출하고 이용하는 것에 경이롭다."는 생각도 든다.

본 후기는 파이썬을 처음 접하는 개발자가 책을 읽지 않더라도 또는 내용이 기억나지 않은 파이썬 입문자를 위해 정리한 것이다. 개인적으로 책을 읽는 것을 추천하고, 책을 읽은 후 자기업무(생활)에 활용해 볼지 고민할 수 있는 시간을 갖기 바란다.


  1. 파이썬 설치 : https://www.python.org : 이하 설명 생략(easy)
  2. PyCharm, IDLE Shell, Visual Studio Code, Atom 등을 설치하면서 환경설정(설치과정에 포함됨)을 하면, CMD 창이 아니라 편집기에서 F5로 실행 가능.
  3. CMD 창에서 c:\> pip install library-name 을 수행하면 해당 라이브러리의 최신 버전을 설치하고, 유지보수, 참고자료의 버전 등 이유로 과거버전을 다운 받을려면, c:\> pip install library-name==3.4(원하는 버전) 을 수행하면 된다.
    cf) 설치삭제= c:\> pip uninstall library-name
    cf) 버전확인= c:\> python (enter)
    >>> import library-name
    >>> print(library-name.__version__) -- 버전 출력
  4. 자동화 프로그램 : 프로그램 개발 이후 crontab(리눅스 등), 시작프로그램 등록(윈도우) 등을 통해 실행
    ex) 네이버 메일 발송, 네이버 기사 크롤링(모두 100줄 이하로 간단)
    ex) 인스타그램 로그인 후, 좋아요 클릭 등
    ex) 특정사이트 게시판 읽어서 엑셀 파일로 정리한 후, 네이버 메일 발송
  5. 웹서비스 : 장고(큰 규모), 플라스크(작은 규모) 등을 이용하여 서비스
  6. BOT : 텔레그램(https://core.telegram.org/bots/api) 을 활용하여 챗봇 서비스

기본적인 X 곱하기 Y = X * Y 이런 내용은 생략한다.(^^, 생소하다면 블로그가 아닌 책을 읽으셔야 합니다)

가. x*y : print('*' * 7) > ******* : 문자열(*)을 숫자 Y번(7번) 반복하는 연산자다. 만약 x(문자) + y(숫자)인 경우에는 형변환이 발생하지 않아, TypeError 오류 발생. 즉, print('홍길동' + 100) 은 오류이다.

나. 인덱스가 잼이 있다. 인덱스 숫자가 양수, 음수 모두 가능하며 첫글자는 0으로 시작한다. 접근 편리함

문자열(data) Y o u C a n d
인덱스(양) 0 1 2 3 4 5 6
인덱스(음) -7 -6 -5 -4 -3 -2 -1

* 슬라이싱(문자열에 대한 접근 범위) : print(data[2:4]) > uCa, print(data[:4]) > YouCa, , print(data[:]) > YouCand, print(data[-4:-2]) > Can, print(data[-4:]) > Cand

다. 문자열 내장함수 :
* data.count('0') > 1 (문자열에 특정 문자(열)의 수 반환)
* data.find('C') > 3 (문자열에 특정 문자(열)의 가장 작은 위치 반환, 없으면 -1 반환)
* '#'.join(data) > Y#o#u#C#a#n#d (문자열 사이에 특정 문자를 추가한 결과를 반환)
* data.upper(), data.lower() > (문자를 대문자(소문자)로 변환하여 반환)
* data.split('C') > You and (특정 문자로 문자열을 쪼개서 반환)
* data.strip() > (문자 양 끝의 공백 문자를 제거하여 반환, 자바의 trim() 기능)
* data.isdigit() > false (숫자만으로 이루어졌는지 검증 true/false)
* f-string포매팅(문자열에 변수를 쉽게 포함할 수 있게 지원)
ex) name = '홍길동'
age = 18
res = f'My name is {name} and i am {age} old.'

라. 리스트 : data = ['data1','data2','data3']
* x + y : 리스트(x) 와 리스트(y) 연결(자바의 arraycopy() 기능 수행, 직관적인 프로그래밍ㅋ)
* x * y : 리스트(x) 를 y번 반복, 리스트(x) + 리스트(x) + 리스트(x) .. y 번 수행.
* 항목 삭제(위치, 값 기준) : del(data[2]), data.remove('data2')
* 항목 추가(맨 뒤) : data.append('data4')
* 정렬 : data.sort()
* 순서 역전 : data.reverse(), data.sort(reverse=True)
* 특정 위치에 항목 추가 : data.insert(1, 'data1.3')
* 특정값 갯수 반환 : data.count('data1')

마. 튜플 : 리스트와 동일. 주의해야 할 점은 값이 1개일 경우 변수명=(값1,) 과 같이 값 뒤에 ','를 표기해야 함. 그리고 상수처럼 수정이 불가능하다. 즉 처음 만든 이후로는 수정되지 않는데 개발자의 실수를 차단할 목적이라고 함. ex) data = (1,)
>>> print(data)
>>> (1,)

바. 딕셔너리 자료형 : key-value 형
* 변수명 = {'key1' : 'value1', 'key2':'value2', 'key3':'value3'}
* data.keys(), data.values(), data.items(), data.get('key1'), data.get('key3',0) 등이 가능하다. 마지막은 키값이 없을 경우 기본값을 지정할 수 있다.

사. if문 : 기본적으로 파이썬은 { } 가 없다. indent(탭)으로 구분하므로,
if 조건 :
코드1
elif 조건2 :
코드2
else :
코드3
형식이다. 이런 띄어쓰기 때문에 본인 보기 편한대로 편집하다 IndentationError : unexpected indent 오류가 발생할 수 있다. 문자열, 리스트, 튜플, 딕셔너리는 비어있으면(empty) false이고, 숫자인 경우 0이면 false 그외 모두 true 이다.

아. for, while : if문 과 동일하게 { } 대신 인덴트(탭, 띄어쓰기)를 이용하고, for, while 키워드 옆에 ':' 를 붙인다.
* for elem in elems : , while data-list :

자. 함수 정의 :
* def 함수명 (전달값_변수명, 전달값_변수명....) :
코드 1....
return data (반환값 없으면 return 생략)

차. range : 범위의 갯체를 반환
* range(A) : 0 ~A-1 까지 순번을 가진 range 객체 반환
* range(A, B) : A ~ B-1 까지 순번을 가진 range 객체 반환
* range(A, B, C) : A ~ B-1 까지 C간격으로 순번을 가진 range 객체 반환, C는 음수도 가능

카. class : 자바랑 동일한데 차이점은 함수, 변수 호출시 self 추가.(정의할때만 사용하고 이용할 때는 생략)
* class 클래스명 : << (형식)
변수명 = 값
def 함수명(self, 전달값_변수명, ..)
코드내용
* class Email : << (예제)
sender = 'dddd@gmail.com'
def send_mail(self, recv, subject, content) :
print(self.sender)
print('**', 20)
e = Email()
e.send_mail('hhhh@gmail.com', 'Welcome','Nice to Meet U')
* 클래스 활용 : from 파일명 import 클래스명, 클래스명...
cf) 만약 import한 여러 라이브러리들 간에 이름이 중첩이 된다면, 'as 별칭' 으로 구분
from my_email import send_email as SE
cf) 본인이 작성한 파일을 불러 이용할 때 from import 활용하며, import를 생략하면 from 파일명에 선언된 모든 함수와 클래스를 이용가능

타. 주석 : 한줄은 '#'을 이용하고, 여러줄은 ''' ''' 를 이용한다. 또는 편집기의 (un)comment 기능 활용.

이상 기본 문법적인 내용을 마치고, 메일발송(1), 크롤링(요소 검색법 포함), 인스타그램 자동로그인, 게시물 검색 에 대해 개별적으로 알아보자.

 

Posted by 목표를 가지고 달린다
,