Today_I_Learned/Python
-
[Ubuntu16.04][Python3] Python3 버전 복구Today_I_Learned/Python 2023. 12. 1. 15:13
[환경] Ubuntu 16.04 Python3.8 ( -> Ubuntu 16.04 의 기본 버전인 Python3.5 로 복구가 목표) [요약] pyhon3 링크 변경 python3 경로의 하위 파일을 python3.5의 파일들로 교체 특정 버전의 python 제거 (선택사항) 필요한 Package들 재설치 pyhon3 링크 변경 python3 명령어로 python 기본 버전이 실행되도록 하고 싶다면 python3 명령어에 연결된 링크 설정을 변경해야 한다. 단순히 update-alternatives 로 변경했을 경우 update-alternatives 로 다시 원래 버전을 지정해주면 된다. sudo update-alternatives --config python3 -> 원하는 python 버전의 번호 입..
-
[사용법] virtualenvwrapperToday_I_Learned/Python 2023. 11. 21. 15:41
virtualenv 만 달랑 사용해오다가 virtualenvwrapper 란 패키지를 알게되어 사용법을 기록한다. 간단 설명 virtualenvwrapper 는 virtualenv 모듈의 확장팩 격인 패키지이다. virtualenv로 생성한 가상 환경을 보다 편리하게 사용할 수 있도록 이것 저것(ex. 가상환경 생성/삭제, 실행, 조회 등을 한 줄의 명령어로 제공, 여러 개의 가상환경들을 한꺼번에 관리할 수 있는 기능 등)을 제공하는 패키지이다. 전제 조건 ubuntu 22.04 이상 (필자의 환경) python3.8 ~ 3.11 python3-pip 설치 완료 virtualenv 모듈 설치 완료 설치 python3 -m pip install virtualenvwrapper 이 때 설치 Log를 잘 확인..
-
List 정렬 기준, iterable객체의 요소가 iterable 일 때Today_I_Learned/Python 2023. 11. 1. 16:17
작성 의도 반복 가능한(iterable) 객체의 모든 Element 역시 반복 가능한 객체 일 때 (ex. 2차원 List, [(1, 2, 3), (4, 5, 6), …] 등) sort()나 sorted() 함수를 이용하여 정렬을 진행하면 python에서는 기본적으로 각 Element의 첫 번째 요소를 기준으로 오름차순 정렬을 수행한다. 그러나 각 Element의 첫 번째가 아닌, 특정 순서의 값으로 정렬을 진행하고 싶은 경우엔 sorted() 나 List의 내장 함수인 sort() 함수의 key parameter를 잘 활용해야 한다. (* key parameter는 함수(callable)를 인자로 받는다.) 다음 글을 읽으면 key parameter를 통해 함수를 여러 번 호출하지 않고도 복잡한 정렬을..
-
class method vs. static methodToday_I_Learned/Python 2023. 9. 26. 11:23
공통점 별도 인스턴스 생성없이 클래스를 대상으로 클래스 이름 뒤에 바로 '. ' 오퍼레이터를 붙여서 호출 가능 ex) class ExampleClass: class_name = "ExampleClass" @classmethod def example_class_method(cls): print(f"{self.class_name}: This is classmethod.") @staticmethod def example_static_method(): print(f"{self.class_name}: This is staticmethod.") ExampleClass.example_class_method() >>> ExampleClass: This is classmethod. ExampleCalss.example_..
-
이터레이터 iteratorToday_I_Learned/Python 2023. 9. 17. 11:29
요소(element)를 하나씩 차례대로 꺼낼 수 있는 객체. 이터레이터를 사용하는 이유는 꺼내올 요소 전체를 미리 생성하지 않고, 필요한 값만 하나씩 생성하여 메모리 사용을 줄이기 위함이다. = 지연 평가 방식 lazy evaluation 반복 가능한 객체만이 이터레이터로 변환될 수 있다. 반복 가능한(iterable) 객체: 요소가 여러 개이고 한 번에 요소를 하나씩 꺼낼 수 있는 객체. for 문과 같은 반복 구문에 적 용할 수 있는 리스트 같은 객체. (iterable object ≠ iterator) 객체의 반복 가능 여부는 __dir__(객체) 로 조회하여 ‘__iter__’가 존재하는지 확인하면 된다. __iter__가 있다는 것은 그 객체가 반복 가능하다는 것이지 반드시 이터레이터라는 의미는..
-
Python3 Scapy에 Read할 수 있는 Packet Header 추가하기(Scapy-2.4.3)Today_I_Learned/Python 2021. 2. 15. 00:51
1. scapy.layers에 원하는 Header를 표현한 Module 추가.ex) mpls.py (Tip. scapy.contrib에 여러 Header Module들이 있으므로 복사해서 layers 안에 붙여 넣기.)완전히 새로 만드는 Header Module인 경우 bind_layer() 해주기 2. scapy.config의 load_layers에 추가한 Module 이름 추가. (.py는 빼고) 끝. 이제 Pcap File을 Scapy의 rdpcap 함수로 읽어오면 추가한 Header가 Scapy문법으로 Parsing되어 있는 것을 볼 수 있다.
-
연산자 OverloadingToday_I_Learned/Python 2021. 1. 27. 16:01
class Number: def __init__(self): self.memNum = 1 def __iadd__(self, val): tmp = self.memNum + val self.memNum = tmp return self aaa = Number() bbb = 5 aaa += bbb print(aaa.memNum) >>> 6 ################################################# class Number: def __init__(self): self.memNum = -1 def __getitem__(self, item): self.memNum = item return self def __iadd__(self, val): tmp = self.memNum + val s..