분류 전체보기 (65) 썸네일형 리스트형 Python 스페셜 메서드 len, getitem, iter, str, repr, new 스페셜 메서드(Special Method)란? 스페셜 메서드란, 더블 언더스코어(__)로 시작하고 끝나는 메서드 Dunder Method(double underscore method)라고도 불린다. 특별한 기능을 수행하며, Python 인터프리터에 의해 특정한 시점 또는 상황에서 자동으로 호출된다. 클래스의 특정 동작을 커스터마이즈할 수 있게 해준다. 이제 대표적인 스페셜 메서드와 예제 코드를 설명한다. __len__ __len__() 메서드는 객체 속성에 대해 그 길이를 반환하는 스페셜 메서드다. class Sentence: def __init__(self, sentence): self.sentence = sentence def __len__(self): return len(sentence) s = S.. Python 클래스, 객체 객체 지향 프로그래밍(Object-oriented Programming) * 클래스의 필요성 클래스는 객체 지향 프로그래밍의 핵심이 되는 부분이다. 우선, 클래스를 사용하지 않게 되면 어떠한 단점이 있는지 살펴보자. 중복 코드의 제거 → 함수로 해결 가능 데이터 간의 관련성 명시 → 컬렉션(리스트, 딕셔너리 등)으로 해결 가능 위 2가지 단점 모두 함수와 컬렉션으로 극복할 수 있다. 하지만 함수와 데이터 컬렉션 사이의 관련성을 명시하기 위해서는 클래스가 반드시 필요하다. 클래스는 데이터와 함수를 하나로 묶을 수 있도록 한다. * 클래스와 객체 클래스는 붕어빵틀, 객체는 붕어빵이라고 생각하면 이해가 쉽다. Python 클래스 선언 방법 class MyBlog: count = 0 # 클래스 속성. 객체의 수.. Python 함수 선언 방법, 변수 지역성 함수 선언 Python 함수 선언 방법은 다음과 같다. def my_function(): print("Hello from my_function()") ↑ 인자를 받지 않는 함수 def my_function(arg1, arg2): print(arg1, arg2) ↑ Positional Argument. 2개의 인자를 받는 함수 def my_function(*args): print(type(args)) print("The first argument is", args[0]) my_function("A", "B", "C") >> >> A ↑ Positional Argument Packing. 여러 인자를 받는 함수. 여기서 args는 tuple 타입으로 들어온다. def my_function(a, b, c, *.. Python 이터러블(iterable)과 반복자(iterator) 이터러블 오브젝트(Iterable Object)란, 순회 가능한 객체를 뜻하며, 반복자(iterator)를 꺼낼 수 있다. 리스트, 튜플, 문자열 등 모두 반복 가능한 객체(iterable object)다. 반복자(iterator)는 이터러블 오브젝트의 모든 요소를 차례대로 순회할 때 사용되는 객체다. 반복자는 iter() 함수를 통해 생성할 수 있다. numbers = "0123456789" # 문자열 컨테이너 itr = iter(numbers) print(itr) >> String 반복자가 생성된 것을 볼 수 있다. 컨테이너를 순회하기 위해서는 next() 함수를 사용하면 된다. print(next(itr)) print(next(itr)) print(next(itr)) print(next(itr)) .. Python 컬렉션 Comprehension Python은 리스트, 딕셔너리, 세트 등의 컬렉션을 간결하게 생성할 수 있도록 comprehension이라는 것을 제공한다. 컴프리헨션을 사용하면 반복문과 조건문을 결합하여 간결하게 컬렉션을 만들 수 있는데, 사용방법을 알아보자. 리스트 컴프리헨션(List Comprehension) # 리스트 컴프리헨션 squares = [x**2 for x in range(1, 11)] print(squares) 1부터 10까지의 정수의 제곱을 리스트로 만드는 리스트 컴프리헨션의 예제 코드다. 딕셔너리 컴프리헨션(Dictionary Comprehension) # 딕셔너리 컴프리헨션 square_dict = {x: x**2 for x in range(1, 6)} print(square_dict) 1부터 5까지의 정수를.. Python 라이프 사이클과 reference count 참조 계수(Reference Count) 참조 계수란, 객체의 라이프 사이클(Life Cycle)을 관리하는 방법 중 하나로 객체를 참조하고 있는 횟수를 추적하는 지표다. 참조 계수가 0이 되면 해당 객체를 메모리에서 해제한다. 객체의 참조 계수를 보려면 sys 라이브러리의 getrefcount() 함수를 사용하면 된다. import sys num = 3 print(sys.getrefcount(num)) >> 33 3이라는 데이터가 담긴 객체를 33군데에서 참조하고 있다는 것이다. 그 33군데 중 num도 하나를 차지할 것이다. class MyClass: pass obj = MyClass() # reference count = 1 obj2 = obj # reference count = 2 del obj2.. Python 깊은복사 vs 얕은복사 가변 객체(Mutable Object) vs 불가변 객체(Immutable Object) 가변객체 : 객체의 값을 변경할 수 있는 객체 불가변객체 : 객체의 값을 변경할 수 없는 객체 Python에서는 자료형 타입에 따라 가변 객체와 불가변 객체가 다음과 같이 나뉜다. 가변객체 불가변객체 리스트(list) 정수(int) 딕셔너리(dict) 실수(float) 집합(set) 문자열(string) 논리형(bool) 가변 객체(mutable object)의 경우, 객체의 값이 변경 가능하므로 얕은 복사(shallow copy)가 이루어지고, 불가변 객체(immutable object)의 경우, 객체의 값이 변경될 수 없으므로 깊은 복사(deep copy)가 이루어진다. li = [1,2,3,4] print(id.. Python 변수와 메모리 객체 Python에서 '모든 것'은 객체다. 변수, 클래스, 객체 모든 것이 객체라고 생각하면 된다. 객체는 변수(상태, 속성)와 메소드(기능)로 구성되어 있다. print((3).bit_length()) num = 3 print(num.bit_length()) str = "three" print(str.upper()) 예를 들어, 정수값이 담긴 객체에는 bit_length()와 같은 메소드가 존재하고 문자열이 담긴 객체에는 upper()나 lower()와 같은 메소드가 존재한다. 변수 Python에서 변수 역시 객체다. 다음 코드를 보자. num = 5 위 코드를 실행하면 num이라는 변수에 5가 저장되어 있다고 생각하기 쉽다. 하지만 실제 메모리를 들여다보면 아래 그림과 같다. 데이터 값 5는 객체에.. Linux 스크립트 함수 작성 예제1# 함수 정의 방법1function helloWorld { echo "hello world!"}# 함수 정의 방법2helloWorld() { echo "hello world!"}> hello world! 예제2Bash에서 함수는 명령어와 유사하게 위치 매개변수를 사용한다.helloWorld() { echo $# echo $0 # 함수의 이름이 아니라 스크립트 이름을 출력 echo $1 echo $2 echo $3}helloWorld bit hub blog>> 3>> ./functions.sh>> bit>> hub>> blogblogName=bithubplatform=tistoryfield=IThelloWorld $blogname $platform $field>>.. Linux 파이프 파이프란?파이핑은 하나의 명령어의 출력스트림을 파이프를 통해 다른 명령어의 입력스트림으로 연결해주는 작업이다.파이프는 커널이 주기억장치(RAM)에 만든다.입출력 리다이렉션과 다른 점은 리다이렉션은 파일로 스트림을 연결했던 반면, 파이핑은 다른 명령어의 스트림이 이어진다. Syntaxcommand1 | command2 | command3 ... Examplesort names.txt | uniqjamessamsteven jobsthosmastom기명 파이프(Named Pipe) 기명파이프가 일반파이프(익명파이프)와 다른 점은 파이프의 역할이 kernel의 파이프가 아니라 파일형태의 FIFO라는 점이다. Syntaxmkfifo myFIFO(섹션1)cat myFIFO 우선 mkfifo myfifo를 실행해.. 이전 1 2 3 4 5 ··· 7 다음