본문 바로가기

코딩 연습/코딩배우기164

파이썬 실천 기술 #05 - 이름공간, 스코프 효율적 개발로 이끄는 파이썬 실천 기술 - 이름공간(namespace), 스코프 (참고용으로 사용할 부분만 간략하게 정리) 이름공간(namespace) 이름과 객체의 매핑, 특정한 하나의 이름이 통용될 수 있는 범위 이름공간이 다르면 같은 이름이 다른 객체를 참조할 수 있다 이름공간의 종류 : 전역 이름공간(모듈별), 지역 이름공간(함수 및 메서드별), 빌트인 이름공간(내장함수, True/False, None 등) 이름공간 생성 시점 : 내장객체 이름공간은 파이썬 실행 시, 모듈별 전역 이름공간은 해당 모듈이 최초에 로딩될 시, 로컬 이름공간은 변수 호출 시 생성되며, 함수에서 벗어나면 그 이름공간은 삭제됨 클래스 정의 시 로컬 이름공간이 생성되고, 클래스 변수와 메서드는 이 이름공간에 속하고, 만들어진.. 2021. 6. 3.
파이썬 실천 기술 #04 - 클래스와 인스턴스 효율적 개발로 이끄는 파이썬 실천 기술 - 클래스와 인스턴스 (참고용으로 사용할 부분만 간략하게 정리) 파이썬의 클래스 구조 파이썬에서는 클래스도 객체이고, 클래스를 정의하면 그 이름의 클래스 객체가 만들어진다. class 키워드 사용하여 실행 시 객체를 만들어낸다. 같은 클래스의 여러 인스턴스(즉, 객체)는 같은 특성을 가지면서 서로 각각 독립된 상태를 유지한다. # 클래스 정의 - Page라는 이름을 가진 객체(즉, 클래스 객체) 생성 # 이 클래스 객체는 그 자체로 새로운 인스턴스(객체)를 만들 수 있고, # 인스턴스는 클래스 정의의 내용에 기술된 메서드나 변수를 가지는데, # self.num 과 self.content 는 인스터스 변수이고, __init__() 와 output()는 인스턴스 메서드.. 2021. 5. 26.
파이썬 실천 기술 #03 - 함수 효율적 개발로 이끄는 파이썬 실천 기술 - 함수 (참고용으로 사용할 부분만 간략하게 정리) 함수 파이썬의 모든 데이터는 객체라고 함(클래스나 인스턴스, 함수도 객체) 함수를 정의하면 함수명의 이름과 똑같은 함수 객체(function object)가 만들어짐 함수 객체를 다른 함수의 인수(argument)로 전달하거나 변수에 대입 가능 함수명에 ()를 붙여 호출하고 처리(실행)한 결과를 반환값으로 호출자에게 반환 # 함수는 객체, function 타입 def print_page(content): print(content) print(print_page) # 함수 객체 출력 (함수명 print_page == 변수) print_page('인수 있는 함수임') # ()를 붙여 호출, 인수 있음 print(pri.. 2021. 5. 25.
파이썬 실천 기술 #02 - 데이터 구조 효율적 개발로 이끄는 파이썬 실천 기술 - 데이터 구조 (참고용으로 사용할 부분만 간략하게 정리) # None d = {'a': 1, 'b': 2} print(d.get('b')) print(d.get('c')) # get() 메서드는 값이 없으면 None 리턴됨으로 None이 보임. print(d.get('c', '없음')) # 디폴트 값을 줘서 None 대신 출력하도록 할 수 있음 [결과] 2 None 없음 # bool - 논리값(참/거짓) 다루는 타입 print(type(True), type(False)) print(bool(0), bool(None), bool([]), bool('book'), bool('0')) [결과] False False False True True x = ['book'] y.. 2021. 5. 20.
파이썬 실천 기술 #01 - PEP20, 제어흐름(if, for, while, Exception) 효율적 개발로 이끄는 파이썬 실천 기술 - PEP20, 제어흐름(if, for, while, Exception) (참고용으로 사용할 부분만 간략하게 정리) ▼ 파이썬 설계 가이드라인 - PEP20: The Zen of Python import this [결과] The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better than dense. Readability counts. Special ca.. 2021. 5. 18.
파이썬 코딩의 기술 - 1.Pythonic #2 ■ Effective_python1.Pythonic #2 05.복잡한 식 대신 도우미 함수 작성 from urllib.parse import parse_qs ## query_string parsing ## 파라미터에서 값을 정수로 얻어야 하는 경우, my_value = parse_qs('빨강=5&파랑=0&초록=', keep_blank_values=True) ## dict 반환 print(repr(my_value)) # {'빨강': ['5'], '파랑': ['0'], '초록': ['']} print('빨강', my_value.get('빨강')) ## get()은 list 반환 # 빨강 ['5'] print('파랑', my_value.get('파랑')) # 파랑 ['0'] print('투명도', my_val.. 2020. 12. 2.
파이썬 코딩의 기술 - 1.Pythonic #1 ■ Effective_python1.Pythonic #1 01.사용중인 파이썬 버전 확인 ## python --version 또는 python -V #C:\>python --version #Python 3.8.3 # #C:\>python -V #Python 3.8.3 import sys print(sys.version) # 3.8.3 (default, Jul 2 2020, 17:30:36) [MSC v.1916 64 bit (AMD64)] print(sys.version_info) # sys.version_info(major=3, minor=8, micro=3, releaselevel='final', serial=0) 02. PEP8 스타일 가이드 PEP8 : 파이썬 코드 작성 스타일 가이드 공백(whi.. 2020. 11. 15.
파이썬 웹 크롤링(Web Crawling) 알아보기 #10 ■ 파이썬 크롤링 실습 - 네이버 웹툰 requests, BeautifulSoup로 네이버 웹툰(m.comic.naver.com) 목록 크롤링 후 urllib, os, datetime 모듈로 디렉토리와 파일 이름을 다시 만들어서 이미지 저장해보기 다운로드 받을 네이버 웹툰 클릭 후, 전체 url(get_url)에서 파라미터 부분을 각각 분리하여 url과 params dict로 만든다. requests.get()과 soup.select()로 a_tag_list(리스트)를 생성한다. * soup.select()의 type은 리스트임 * tag.select()에서 detail.nhn은 점(.) 이스케이프 처리 완전한 url을 위해 urljoin()으로 url과 를 합친다 제목을 추출하기 위해 각 a_tag에서.. 2020. 11. 14.
파이썬 크롤링(Crawling) - 셀레니움(Selenium) 연습 #3 ■ CGV 영화 리뷰 스크래핑 from selenium import webdriver import time chrome_options = webdriver.ChromeOptions() chrome_options.add_argument('--headless') def get_movie_reviews(url, page_num = 10): wd = webdriver.Chrome('C:/Temp/chromedriver.exe', options = chrome_options) wd.get(url) writer_list = [] review_list = [] date_list = [] movie_review = [] for page_no in range(1, page_num + 1): page_ul = wd.fin.. 2020. 11. 12.
파이썬 리트스 순서 뒤집기 revers(), reversed() 함수, 그리고 리스트 묶기 zip() 함수 ■ 리트스 순서 뒤집기 revers(), reversed() 함수 list1 = ['사과', 3, '40', 'apple', '홍길동'] rlist1 = reversed(list1) ## 순서가 뒤집힌 리스트 이터레이터 객체 반환 print(rlist1) # print(list(rlist1)) # ['홍길동', 'apple', '40', 3, '사과'] print(list1) ## 리스트 원본 수정 안됨 # ['사과', 3, '40', 'apple', '홍길동'] list1.reverse() ## 리스트 원본 수정됨 print(list1) # ['홍길동', 'apple', '40', 3, '사과'] ■ 리스트 묶어서 활용하는 zip() 함수 names = ['김홍두', '조용해', '나해커'] ages .. 2020. 11. 12.