본문 바로가기

Language/Python19

[경로설정] 절대경로·상대경로 | 작업 디렉토리(cwd) 경로지정관련 다양한 개발환경에서 정상적으로 파일처리가 가능한 프로젝트를 구성하기 위해서는 경로에 대한 고려를 해야한다. 이에 필요한 개념들을 톺아본다. 절대경로 / 상대경로 절대경로 - 최상위 디렉토리(루트 디렉토리)에서 시작하는 경로 - 표기 규칙 Windows >> C:\Users\Username\Documents\file.txt Unix/Linux >> /home/username/Documents/file.txt 상대경로 - 현재 작업 디렉토리를 기준으로 나타낸 경로 - 표기 규칙 ./ : 현재 디렉토리 (생략할수있다) ../ : 상위 디렉토리 현재 작업중인 디렉토리 current working directory 상대경로의 시작점이다. 조작방법 - os.getcwd() : 현재 작업중인 디렉토리 반.. 2023. 7. 13.
[문법] 가비지콜렉터, 스페셜 변수 파이썬 그 외카테고리로 묶이지 않는 짤막한 개념들을 다뤄본다. 가비지 콜렉터더 사용할 가능성이 없는 데이터를 메모리에서 제거하는 역할스왑(렘부족으로 하드디스크를 메모리처럼 사용하면서 처리가 느려지는 현상)을 막아주는 효과가 있다.제거대상1. 변수에 저장되지 않은 경우2. 블록에서 나오면서 변수를 활용할 수 없게 되는 경우class Test: def __init__(self, name): self.name = name print(f"{self.name} - 생성") def __del__(self): print(f"{self.name} - 파괴")Test("A")Test("B")c=Test("C")d=Test("D")#출력결과# A - 생성# A - 파괴 >>.. 2023. 7. 11.
[클래스] 정적요소(클래스변수, 클래스함수) 및 캡슐화(프라이빗변수, 게터/세터) 클래스 심화파이썬 클래스를 보다 심도있게 활용하기 위한 개념들을 알아본다.정적요소클래스 내에서 사용되는 정적(static) 요소들에는 클래스변수와 클래스함수가 있다. 클래스변수(Class variable)인스턴스 변수가 메소드 내에서 'self.변수명'으로 정의된다면 클래스변수는 메소드 밖에서 선언된다.형태class 클래스명:    변수명 = 값>> 클래스이름.변수명 또는 인스턴스이름.변수명으로 접근한다.특징1. 모든 인스턴스들이 공유하게 된다   >> 한 인스턴스에 의해 변경되면 모든 인스턴스에서도 변경된다.   (cf. 인스턴스변수는 각각 고유한 속성이다)2. 클래스 정의 시점에서 생성되기 때문에 클래스명.변수명으로 접근할 수 있다.   (cf. 인스턴스변수는 인스턴스의 생명주기에 종속적이며, 인스턴.. 2023. 7. 11.
[함수] 심화편 : 클로저, 데코레이터, 스페셜변수 함수 심화파이썬 함수의 동작을 개선하거나 확장하는데 사용되는 메커니즘들을 알아본다.포스팅순서클로저데코레이터팩토리함수클래스데코레이터  클로저(Closure)함수 안에 내부 함수(inner function)를 구현하고 그 내부 함수를 반환하는 함수클로저는 함수가 해당 함수가 선언되었을 때의 환경(스코프)를 "기억"하고, 나중에 해당 환경에 접근하여 변수에 접근하거나 수정할 수 있게 한다>> 일반적으로 함수의 실행이 끝나면 실행문맥(context 또는 enviroment)도 소멸되나, 함수A의 실행결과로 반환된 함수B는 자신이 생성된 문맥(A의 문맥)에 접근할 수 있다. 이렇게 유지된 문맥과 이 문맥에 접근하는 함수를 클로저라고 부른다.기능1. 데이터은닉   - 클로저에 속한 지역변수는 바깥에서 직접 접근할 .. 2023. 7. 9.
[클래스] 스페셜 메소드 스페셜 메소드파이썬의 내장메소드를 효과적으로 활용하고객체들간의 통일성을 만들어주는 스페셜 메소드에 대해 톺아본다 스페셜 메소드란?특정 상황에서 자동으로 호출 되는 메소드  *메소드 == 클래스 내의 함수약 100여개가 넘는 스페셜 메소드가 있으며, 정의할때 사용해야할 이름들이 약속되어있다>> 같은 규칙으로 호출할 것이 약속되어있기 때문에 협업에 좋다클래스 안에 스페셜 메소드를 정의해주면 기존 스페셜메소드의 오버라이딩이 되어진다.형태- 네이밍 : __xx__- 호출 : xx(obj)  * obj.__xx__() 로도 호출할 수 있으나, 가독성과 일관성을 위해 내장함수로 호출하는게 좋다.  자동호출 케이스객체 생성__init__ >> 객체가 생성될 때 자동으로 호출 (객체 인스턴스의 초기화를 위해 사용)객체.. 2023. 7. 7.
[클래스] 기본 문법 및 상속 클래스파이썬 역시 객체지향 프로그래밍 언어이다.객체를 활용하는 방법에 대해 알아본다. 연관용어객체지향 프로그래밍1. 클래스를 기반으로 객체를 만들고2. 객체들의 상호작용을 중심으로 개발하는 방법론추상화- 복잡한 시스템이나 개념을 단순화하여 필요한 부분만을 강조하는 것객체- 속성을 가질 수 있는 대상- 문자열, 딕셔너리 등도 객체이다.인스턴스- 클래스를 기반으로 만들어진 객체- 일반 객체와 근본적인 차이는 없다.  클래스(Class)란?객체를 만들기위한 템플릿속성과 기능을 가진 인스턴스를 만드는 도구특징1. 클래스 정의시에 모든 속성을 명시하지 않아도 된다.  (인스턴스 생성 후에도 새로운 속성을 추가하거나 수정할 수 있음)2. 클래스명은 파스칼케이스를 따른다.# 클래스 선언 방법class 클래스명: .. 2023. 7. 6.
[표준 모듈] sys, os, urllib, random, datetime 표준모듈파이썬에서 제공하는 다양한 표준라이브러리들을 알아본다. ramdom 모듈난수 생성과 관련된 함수들을 제공random.random()- 0이상 1미만의 float 반환random.uniform(a, b)- a이상 b이하의 정수 난수를 생성random.shuffle(리스트)- 요소들을 랜덤하게 섞은 후 반환random.choice(리스트)- 랜덤한 1개 요소 반random.sample(리스트, k=숫자)- 리스트에서 '숫자'만큼의 요소를 뽑은 리스트 반환  sys 모듈인터프리터와 상호작용하는 기능들을 제공>> 프로그램의 실행 환경을 제어하고 다양한 시스템 수준 작업을 수행sys.argv- 현재 스크립트를 실행할 때 전달된 명령줄 인자(argument)들을 담고 있는 리스트 반환- 예시  명령어 : p.. 2023. 7. 6.
[문법] 모듈시스템과 패키지 모듈 Module파이썬에서 재사용 가능한 코드의 단위인 모듈에 대해서 알아본다. 모듈이란?함수, 클래스, 변수 등을 정의하고 다른 스크립트에서 import하여 사용할 수 있는 독립적인 단위가장 작은 단위는 파이썬 파일 1개가 될 수 있다(특별한 작업 없이도 파일을 모듈로 취급할 수 있음)라이브러리는 모듈의 일종이다.종류1. 사용자 정의 모듈2. 외부모듈(서드파티모듈)   - 다른사람들이 만들어서 공개한 모듈   - 별도로 설치해야한다     >> pip install 모듈이름3. 표준 모듈   - 파이썬 표준 라이브러리(자동설치)외부모듈 분석하기1. 'pip list' 로 설치된 모듈 확인2. 'pip show 모듈명'으로 설치된 위치 확인3. 해당 위치로 가서 py 파일을 분석한다.모듈만들기1. 모듈명.. 2023. 7. 5.
[함수] 메모리관리 : 스택, 힙, global 키워드 메모리관리파이썬에서 전역과 지역(함수영역)에서 데이터가 메모리에 어떻게 기록되고 관리되는지 톺아본다. 메모리영역 : 스택(Stack)지역 변수, 함수 호출 및 리턴, 임시 데이터 등을 관리하는 데 사용되는 영역후입선출(LIFO, Last-In-First-Out)의 구조  >> 데이터의 추가와 제거는 상단(맨 위)에서만 이루어진다.장점- 메모리 할당 및 해제가 간단하고 빠르다.(변수가 스택 프레임에 직접 저장되므로 접근이 빠르고 효율적)- 스택은 크기가 제한되어 있고 고정된 구조를 가지므로 메모리 사용의 예측이 가능.- 스택은 후입선출(LIFO) 구조는 함수 호출과 관련된 데이터 관리에 효율적단점- 크기가 제한되어 있다.- 데이터의 크기를 컴파일 시점에 알려져야한다.- 긴 생명주기를 가지는 데이터에는 부적.. 2023. 7. 5.
[문법] 제너레이터, 이터레이터, 이터러블 반복 및 흐름파이썬에서 다루는 순회관련 개념들을 좀더 자세히 톺아본다. Iterable(이터러블)이터레이터에 의해 순회될 수 있는 객체__iter__() 혹은 __getitem__() 메서드를 구현해야한다관련포스팅 : 239번 포스팅  Iterator(이터레이터)데이터의 스트림을 표현하는 객체이터러블의 순회를 주관한다__iter__() 와 __next__() 필요>> __iter__()를 구현했으므로 이터레이터는 이터러블이다.>> 이터레이터 ⊂ 이터러블순회과정1. 이터러블 객체 __iter__() 메소드 호출2. 해당 이터레이터의 첫 원소를 가리키는 새로인 이터레이터 생성 및 반환3. 이터레이터의 __next__() 메소드 호출4. 현재 원소가 리턴되고 인덱스 포인터가 다음 원소를 가르치도록 옮겨진다. .. 2023. 7. 4.
[내장객체] file 객체를 통한 입출력 파일 입출력파이썬 내장함수를 이용해서 파일 입출력을 할 수 있다. 이때, 텍스트 파일 위주로 알아본다. 파일의 종류텍스트파일- 문자를 ASCII, UTF-8, UTF-16 등으로 인코딩한 파일. - 줄 단위로 데이터가 구성되어 있으며, 각 줄은 문자들의 시퀀스로 이루어져 있다.- 텍스트 편집기로 열어서 내용을 확인하고 편집할 수 있다- ex) 소스 코드 파일(.py, .java), 문서 파일(.txt, .docx)- 데이터를 구조적으로 표현하는 방법에는 CSV, XML, JSON 등의 방법이 있다.바이너리파일- 이미지, 비디오, 실행파일 등을 JPEG, PNG, GIF 등으로 인코딩한 파일- 텍스트 편집기로 열면 알수없는 문자열의 집합이 된다- 특정 파일 형식에 맞게 구조화되어 있으며, 애플리케이션 또는.. 2023. 7. 4.
[함수] 기본편 : 매개변수, 재귀함수, 람다 함수파이썬에서 함수를 활용하는 방법에 대해 톺아본다. 기본편 함수 Function형태def 함수명(매개변수1, .. ):    실행코드    [return]호출방식- 함수명 : 함수객체를 참조하는것으로 다른변수에 할당하거나 다른함수에 인자로 전달 할 수 있다.- 함수명() : 실제 함수의 코드블록을 실행한다.특징- 함수의 매개변수와 반환값의 타입을 사전에 선언하지 않아도 된다.- 함수내에서 전역에 선언된 변수를 수정하려면 global 키워드를 사용해야한다.  (관련 포스팅 : 259번 포스팅)- 람다(lambda) 표현식으로 함수를 간단하게 작성할 수 있다- 오버로딩을 기본매개변수, 가변매개변수 등을 활용해서 기능을 구현할 수 있다.- 함수 내부에서 자기자신을 호출할 수 있다(재귀함수)- First-cl.. 2023. 7. 3.
[제어문] if문, for문, while문 외 (리스트내포 외) 제어문 : 기본파이썬에서 사용하는 제어문의 문법을 알아본다 if문if 조건1 : 조건1이 true일 시 실행할내용elif 조건2 : 조건2이 true일 시 실행할 내용else : false일 시 실행할 내용and 와 or 를 이용해서 다수의 조건을 결합할 수 있다. for문 for 반복자 in 이터러블 : 반복할 내용 else : 수행을 정상완료했을때 실행할 내용 ]이터러블에는 문자열, 리스트, 딕셔너리, range() 등이 있다.반복자- 시퀀스 자료형은 반복자에 요소가 직접 저장된다.- 딕셔너리 자료형은 반복자에 키값이 저장된다. >> 값에 접근하려면 이터러블[반복자] 를 사용if true: for i in range(5): if i == .. 2023. 6. 29.
[자료형] 문자열 활용: 문자열 포멧팅, raw string 문자열 활용파이썬에서 문자열을 다양하게 활용하는 방법들에 대해 톺아본다raw stringraw string백슬래시('\')를 이스케이프 문자로 해석하지 않고 그대로 문자열로 취급하는 문자열 표기법활용 - 정규표현식- 파일 경로- 정규표현식 패턴 등사용방법- 문자열 리터럴 앞에 'r' 또는 'R'을 붙인다   r"..."   R"..."normal_string = "This is a newline.\nThis is the second line."print(normal_string)# 출력:# This is a newline.# This is the second line.raw_string = r"This is a newline.\nThis is the second line."print(raw_string).. 2023. 6. 29.
[문법] 특별편 : 슬라이싱, 전개연산자, 키워드 문법 : 특별편보편적이지 않은 문법들을 모아놓았다. 슬라이싱시퀀스 자료형의 일부분을 추출하는 방법각 인자를 구분하는 : 는 1개 혹은 2개 사용할 수 있다.표현법변수명[시작:끝]변수명[시작:끝:간격]인자- 시작 : 추출을 시작할 인덱스, 기본값 == 0- 끝 : 추출을 종료할 인덱스(미포함), 기본값 == 시퀀스의 길이- 간격 : 추출할 요소 사이의 간격, 기본값 == 1       마이너스(-) 입력시 역방향으로 추출하게 된다.my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]# 시작과 끝, 단계를 모두 지정하여 슬라이싱sliced_list = my_list[1:8:2]print(sliced_list) # 출력: [2, 4, 6]# 시작과 끝을 생략하고 단계만 지정하여 슬라이싱.. 2023. 6. 29.
[문법] 기본 문법, 내장함수(range, 형변환, ..) 문법 : 기본편일반 프로그래밍 언어와 일맥을 상통하는 문법들을 알아본다.기본 문법특징대소문자를 구분한다.코드블록의 시작과 끝을 정의할 때 4칸 들여쓰기를 한다(cf. 자바는 { }를 사용한다)변수- 변수 선언시 자료형을 붙이지 않는다- 자료가 담기는 순간에 타입이 결정된다.- 동일 변수에 다른 타입의 자료형 재할당 가능하다인덱스- 제로인덱스를 사용(숫자셀때는 0부터)- 마이너스(-)는 뒤에서부터 카운트한다. 범위지정- 시작숫자는 포함하고 마지막숫자는 포함하지 않는다.명명 컨밴션- 클래스명 : 파스칼 케이스(첫문자가 대문자인 캐멀케이스)- 함수, 변수 : 스네이크 케이스 주석- 한줄 주석은 #를 사용한다.- 여러줄 주석은 ''' 혹은 """를 사용한다. (문자열을 사용)줄바꿈- 코드가 너무 길어지는 경우,.. 2023. 6. 29.
[자료형] 숫자형, 불린, None 자료형(2/2)파이썬에서 사용되는 자료형들에 대해 알아본다. 특성에 따른 분류특성을 모아보기 위해 Iterable를 기준으로 나눠본다.Iterable types(반복 가능한 자료형)- 문자열(String)- 리스트(List)- 딕셔너리(Dictionary)- 튜플(Tuple)- 집합(Set)Non-iterable types(반복 불가능한 자료형)- 정수(Integer)- 실수(Float)- 불리언(Boolean)- None 그 외 자료형   숫자형 : int, float소수점이 없으면 정수타입(int), 소수점이 있으면 실수타입(float)이다.지수표기법- 숫자 뒤에 'e' 또는 'E'를 붙여 지수를 표현한다ex : 0.44e4 == 0.44 × 10^4 == 4400     1.23e-3 == 1.23.. 2023. 6. 29.
[자료형] 문자열, 리스트, 딕셔너리, 튜플, 집합 자료형(1/2)파이썬에서 사용되는 자료형들에 대해 알아본다. 특성에 따른 분류특성을 모아보기 위해 Iterable를 기준으로 나눠본다.Iterable types(반복 가능한 자료형)- 문자열(String)- 리스트(List)- 딕셔너리(Dictionary) - 튜플(Tuple)- 집합(Set)Non-iterable types(반복 불가능한 자료형) - 정수(Integer) - 실수(Float) - 불리언(Boolean) - None  iterable 특징iterable 자료형이 갖는 특징에 대해 알아본다. iterable 자료형이란?반복가능하며 요소들을 순회하고 접근할 수 있는 자료형시퀀스 자료형과 비순차형 자료형으로 나뉜다.종류- 시퀀스 자료형 : 문자열, 리스트, 튜플- 비순차형 자료형 : 딕셔너리,.. 2023. 6. 22.
[개요] 개발환경 구축 / pip 파이썬프로그래밍 언어 파이썬을 시작해본다.파이썬이란?간결하고 읽기 쉬운 인터프리터 언어장점- 인간의 사고방식을 표현한 문법으로 빠르게 배울 수 있다.- 접착(glue) 언어라 불릴 정도로 다른 언어와의 결합이 용이하다- 모든 운영체제에서 같은 방법으로 사용할 수 있다.- 인공지능, 머신러닝을 도와주는 라이브러리들이 다양하다.단점- 느리다.  단, PC 성능이 좋아져서 연산이 많이 필요한 게임 등이 아닌 이상 차이가 체감되지 않는다. >> PC가 작은 소형장치에서는 쓰이지 않는다. >> 머신러닝, 딥러닝과 같은 고정적인 연산만 별도로 C언어로 작성하기도 한다.- 모바일 어플 개발이 어렵다  인터프리터 언어관련포스팅 : 35번 포스팅컴파일 언어에 대응 되는 개념으로 컴파일 과정이 없고 번역과 동시에 실행이 .. 2023. 6. 21.