본문 바로가기
반응형

Python26

파이썬 문법 : 제너레이터 함수 이터러블 객체 순서가 있는 자료형 문자열, 리스트, 튜플, 딕셔너리, range 객체 __iter__(), __next__() 메소드가 정의되어있다. 제너레이터 함수 이터레이터를 만드는 함수이다. yield 사용한다 제너레이터 표현식을 사용해서 만들 수 있다. 메모리 사용이 효율적이다. List 같은 경우 결과 값을 메모리에 저장한다. 제너레이터의 경우 식만 저장할뿐 값을 저장 하지 않는다. __next__ 함수가 호출 될 때에 결과값을 만든다 # yield 사용 def gen_func(*args): for arg in args: yield arg month = gen_func('1월', '2월', '3월', '4월') print(month.__next__()) # 1월 print(month.__next.. 2023. 3. 9.
파이썬 문법 : 내부 함수, 클로저 내부함수 함수 안에서 정의 되는 함수 클로저(closure) 함수가 종료되어도 자원을 사용할 수 있는 함수 클로저 조건 내부함수 외부함수 변수를 참조해야 한다. 외부함수가 내부함수를 반환 해야 한다. def outer(name):# 외부함수 def inner():# 내부함수 print(name, "하이")# 외부함수 변수 참조 return inner# 내부함수 반환 callfunc = outer("tom") callfunc() # OUTPUT tom 하이 클로저 살펴보기 print(dir(callfunc)) # ['__annotations__', '__builtins__', '__call__', '__class__', '__closure__', '__code__', '__defaults__', '__de.. 2023. 3. 6.
파이썬 문법 : method 인스턴스 메소드 인스턴스 속성에 접근하는 메소드 self 를 파라미터로 받는다. 클래스 메소드 클래스 속성에 접근하는 메소드 클래스를 의미하는 cls 를 파라미터로 받는다 @classmethod 를 붙인다 class Unit: count = 0 def __init__(self, name, weight, height, hidden): self.name=name self.weight=weight self.height=height self.__hidden=hidden Unit.count +=1 print(f"{self.name} Unit 생성") def __str__(self): return f"name={self.name} weight={self.weight} height={self.height}" # 인스.. 2023. 3. 3.
파이썬 문법 : class 속성들 인스턴스 속성 객체마다 다르게 갖고 있는 속성 코드에서 self 로 표기된 속성들이 인스턴스 속성이다. 클래스 속성 모든 객체가 공유하는 속성 count 가 클래스 속성 접근시에는 클래스이름.속성 으로 접근 (ex : Unit.count) 비공개 속성 클래스 안에서만 접근 가능한 속성 __hidden 이 비공개 속성이다. 외부에서 변경시 Unit.__hidden 으로는 접근이 불가능 하다 네이밍 맹글링에 의해서 접근은 가능하다 (unit1._Unit__hidden) class Unit: count = 0 def __init__(self, name, weight, height, hidden): self.name=name self.weight=weight self.height=height self.__hid.. 2023. 3. 2.
파이썬 문법 : map, filter 함수 map 함수 map(함수, 순서가 있는 자료형) map 의 결과는 map object 이기 때문에 사용하기 편한 list 형태로 변환한다. def remove_blank(x): return x.strip() items=[' mouse', ' monitor '] items=list(map(remove_blank, items)) print(items) # output # ['mouse', 'monitor'] # 람다함수로 표기할 경우 items=list(map(lambda x:x.strip(), items)) filter 함수 filter(함수, 순서가 있는 자료형) def func(x): return x < 0 print(list(filter(func, [-3, 0, 2, 7, -7]))) # output.. 2023. 2. 28.
파이썬 문법 : 람다 함수 람다함수를 사용하면 코드가 간결해진다 메모리 사용이 효율적이다. # 람다함수 선언 방법 lambda a : a-1 # 호출방법 1 : 그대로 호출 print ((lambda a:a-1)(10)) # 호출방법 2 : 변수에 담아서 호출 minus_ten = lambda a : a-10 print (minus_ten(100)) # 람다함수 if 문 사용 def is_positive_num(a): if a > 0: return True else: return False lambda a : True if a > 0 else False 개인적으로 함수 자체를 호출하는 방법보다는 변수에 담아서 호출하는게 가독성에는 더 좋아보인다. 2023. 2. 27.
파이썬 문법 : 튜플 튜플은 () 로 정의된다 튜플은 값을 바꿀수 없다. t1 = () t2 = (1,) t3 = (1,2,3) t4 = 1,2,3 t5 = ('a', 'b', ('ab', 'cd')) 1개의 요소만 가질때에는 콤마(,) 를 붙여야 한다. 괄호가 생략 가능하다 개수가 정해지지 않은 매개 변수로 사용된다. (* 가 매개변수 앞에 붙는다.) = 위치가변 매개변수 def print_fruits(*args): print(args) for arg in args: print(arg) print_fruits('apple', 'banana', 'melon') output ('apple', 'banana', 'melon') apple banana melon 2023. 2. 27.
Python 가상환경 Python Virtualenv 프로젝트별 종속성 문제를 해결하기 위해서 가상환경을 제공한다. 동시에 여러개의 프로젝트 진행시 각각의 파이썬 버전이 다를경우 사용한다. virtualenv 환경 구성 pip install virtualenv D:\STUDY\study_python>virtualenv py3.8-env created virtual environment CPython3.8.5.final.0-64 in 6461ms creator CPython3Windows(dest=D:\STUDY\study_python\py3.8-env, clear=False, global=False) seeder FromAppData(download=False, pip=bundle, setuptools=bundle, whee.. 2022. 10. 27.
[나는 리뷰어다] 진지한 파이썬 전에 읽었던 "나의 첫 파이썬" 에 이어서 이번에는 "진지한 파이썬" 을 읽게 되었다. 책 제목에서 느낄수 있듯이 이 책은 파이썬의 진지한(?) 부분에 대해서 설명해 주고 있다. 우선 파이썬이라는 언어의 기본 적인 내용들은 알고 있어야 한다. 기본적인 문법에 대한 내용보다는 파이썬으로 무언가를 만들때 혹은 프로젝트를 구성하는 것부터 시작해서 라이브러리 관리, 문서화, 배포, 테스트, 성능에 관련 된 내용을 담고 있다. 장점과 단점을 몇가지 알아보면 다음과 같다. 장점 - 개발을 하면서 프로젝트의 구조를 어떻게 만들어야 하는지, 그리고 자칫 소홀히 할 수 있는 문서화는 어떻게 해야 하는지 좋은 가이드를 알려준다. - 다양한 방법의 단위 테스트를 알려주고 있어서 개발시에 상황에 맞게 적용해 볼 수 있다. 단.. 2021. 2. 19.
[나는 리뷰어다] Web Scraping with Python 최근에 파이썬에 대한 관심이 증가 하면서 여러 분야에서 사용이 되고 있다. 다양한 분야중에 웹 크롤러도 주목을 받고 있다. 나도 관심을 갖고는 있었지만 그저 막연하게만 생각하고 있었다. 어떤 방법들이 있는지, 무엇을 먼저 해야 하는지 모르고 있었다. 그런 의미에서 이 책은 웹 크롤러에 대해서 기초부터 고급까지 차근차근 알아 볼수 있는 책이다. 읽으면서 몇가지 필요한 것들에 대해서 생각해 보았다. 1. 파이썬에 대한 기초적인 문법들은 알고 있어야 코드를 이해할 수 있다. 2. 웹 에 대해서도 기초적인 코드는 알고 있어야 한다. (html, javascript등) 3. 정규 표현식도 알고 있으면 도움이 된다. 4. 크롤러 라는건 생각보다 간단하지 않다. 인내력이 필요하다. 데이터 분석과 거의 동일한 작업이라.. 2020. 10. 25.
python django 프로젝트 시작하기 공부하다가 과정이 좀 많아서 적어두기로 함. 1. 가상환경 만들기 python -m venv [이름] ex) python -m venv my_venv 2. 가상환경 실행 source my_venv/bin/activate my_venv/Scripts/activate (윈도우일 경우) 3. django 설치 (3번 부터는 가상환경 안에서 모두 실행한다.) pip install django 4. 프로젝트 만들기 django-admin startproject [이름] . 5. 데이터 베이스 만들기 python manage.py migrate 6. 프로젝트 실행 python manage.py runserver 7. 앱 만들기 python manage.py startapp [앱이름] # Model Migration.. 2020. 10. 5.
[Flask]HTTP 요청에 대한 핸들러 before_first_request : 웹 application 기동 이후 가장 처음에 들어오는 HTTP 요청에서만 실행before_request : HTTP 요청이 들어올때마다 실행after_request : HTTP 요청이 끝나고 브라우저에 응답하기 전에 실행teardown_request : HTTP 요청 결과가 브라우저에 응답한 다음 실행teardown_appcontext : HTTP 요청이 완전히 완료되면 실행 before_first_request, before_request는 어떠한 인자도 전달할수 없다!!after_request는 flask.wrapper.Response 객체를 return 해야한다. 맨 상단에 # 부분은 Encoding 때문에 추가함 1234567891011121314151.. 2016. 8. 22.
728x90
반응형