SW개발/Python

    [Python]isinstance() 란?

    isinstance(object, classinfo) 란? isinstance()는 주어진 인스턴스가 특정 클래스/데이터 타입인지 검사를 해주는 함수이다. 인스턴스가 특정 클래스/데이터 타입과 일치할 경우 True, 아닐 경우 False를 반환한다. print(isinstance(1, int)) # True, int 인지 검사 print(isinstance(1.123, float)) # True, float 인지 검사 print(isinstance({'a': 1}, dict) # True, dict 인지 검사 class Example: pass example = Example() print(isinstance(example, Example)) # True, Example 클래스 인지 검사

    [Python]hasattr(), getattr(), setattr() 함수란?

    파이썬에는 변수가 있는지 확인하는 함수로 3가지가 존재한다. 하나씩 차례대로 알아보자. hasattr(object, name) object에 name 속성 존재하는지 여부를 확인한다. class cls: a = 1 def b(self): pass # cls에 b가 존재할 경우 True 반환 print(hasattr(cls, 'b')) True getattr(object, name[, default]) object에 존재하는 name 속성의 값을 가져온다. class cls: a = 1 def b(self): pass # cls에서 a의 값을 가져오기 print(getattr(cls, 'a')) 1 setattr(object, name, value) object에 존재하는 name 속성의 값을 설정한다. ..

    [Python]property로 getter, setter 구현하기

    Python에서 getter, setter 구현하는 방법 Python 에서 getter와 setter 함수를 구현하는 방법은 2가지가 존재한다. property() 함수를 이용하는 방법 @property 속성을 이용하는 방법 하나씩 차례대로 알아보자. property() 함수 이용 class Person: def __init__(self): self._age = 0 def get_age(self): # getter return self._age def set_age(self, value): # setter self._age = value age = property(get_age, set_age) leffe = Person() leffe.age = 20 # 내부적으로 setter 호출 print(leffe..

    [Python]all(), any() 함수란?

    all() 함수란? all(iterable) 함수는 인자로 받은 반복 가능한 자료형(iterable)의 모든 요소가 참이면 True를 반환하는 함수이다. 간단한 예제를 통해 정리하고 넘어가자. a = [1, 2, 3, 4, 5] print(all(a)) # True b = [0, 1, 2, 3, 4] print(all(b)) # False, 0 이라는 값이 리스트에 존재해 False 반환 c = [] print(all(c)) # True, 빈 리스트에 대해서는 True 반환 print(all('test')) # True, 문자열은 True 반환 # 딕셔너리의 경우 key 값의 참, 거짓만을 반영함 print(all({1: 1, 2: 2})) # True print(all({True: 1, False: 2..

    [Python]파이썬의 언더스코어(_)에 대하여

    파이썬에서는 종종 언더스코어(_)가 사용되는 경우가 있다. 다른 언어와는 달리 파이썬에서는 이 문자는 여러 의미를 가지고 있다. 크게 5가지의 경우에서 언더스코어가 사용된다. 인터프리터에서 마지막 값을 저장할 때 값을 무시하고 싶을 때 변수나 함수명에 특별한 의미/기능을 부여하고 싶을 때 국제화/지역화 함수로써 사용할 때 숫자 리터럴값의 자릿수 구분을 위한 구분자로써 사용할 때 인터프리터에서 사용되는 경우 Python 3.6.1 >>> 10 10 >>> _ 10 >>> _ * 5 50 >>> _ - 10 40 파이썬 인터프리터에서는 마지막으로 실행된 결과값이 _라는 변수에 저장된다. 이를 활용해 위처럼 사용할 수도 있다. 값을 무시하고 싶은 경우 # 언패킹시 특정값을 무시 x, _, y = (1, 2, ..

    [Python]패키지란?

    패키지란 무엇인가? Package 는 도트(.)를 사용하여 파이썬 모듈을 계층적(디렉토리 구조)으로 관리할 수 있게 한다. 예를 들어 모듈의 이름이 A.B 라면 A는 패키지 이름, B는 A패키지의 B모듈을 뜻한다. 패키지 예시 example/ __init__.py sound/ __init__.py echo.py wav.py grapchic/ __init__.py screen.py render.py play/ __init__.py run.py test.py 위의 구조에서 example, sound, graphic, play 는 디렉터리 이름이고 .py 의 확장자는 파이썬 모듈이다. example 디렉터리는 이 패키지의 루트 이름을 뜻하고, 하위에 있는 것들은 서브 디렉터리를 뜻한다. 구조화를 하는 이유? ..

    [Python]if __name__ == "__main__" 란?

    if __name__ == "__main__" 란? __name__ 변수는 파이썬이 내부적으로 사용하는 특별한 변수 이름이다. 만약 example.py 파일을 실행할 경우 example.py 의 __name__ 변수에는 __main__ 값이 저장된다. 하지만 다른 파이썬 모듈에서 import 할 경우에는 모듈의 이름 값인 example 이 저장되게 된다. 사용하는 이유? 현재 스크립트 파일이 프로그램의 시작점이 맞는지 판단하는 작업이다. 즉, 스크립트 파일이 메인 프로그램으로 사용될 경우와 모듈로 사용될 경우를 구분하기 위해서 사용하게 된다. 스크립트 파일로 실행하거나 모듈로 사용하는 코드 def add(a, b): return a + b def mul(a, b): return a * b if __nam..

    [Python]모듈이란?

    모듈 모듈이란 함수나 변수 또는 클래스를 모아놓은 파일이다. 모듈은 다른 파이썬 프로그램에서 불러와 사용할 수 있게 만든 파이썬 파일이라고도 할 수 있다. 모듈 만들기 # mod1.py def add(a, b): return a + b def sub(a, b): return a - b 위와 같이 간단함 모듈을 생성하였다. 그렇다면 모듈은 어떻게 이용해야 할까? 모듈 불러오기 import mod1 print(mod1.add(3, 4)) print(mod1.sub(3, 2)) import 모듈이름을 통해 모듈을 불러올 수 있다. .py의 확장자는 붙이지 않도록 한다. from mod1 import add add(3, 4) from 모듈이름 import 모듈함수 이런 형식을 이용하면 모듈 이름을 붙이지 않고 ..

    [Python]Class 는 왜 필요한가?

    클래스의 필요성 예시를 통해 클래스의 필요성에 대해 파악해보려고 한다. 다음과 같은 코드가 있다. result = 0 def add(num): global result result += num return result print(add(3)) print(add(4)) # 결과 3 7 위의 코드는 계산기의 더하기 기능을 구현한 코드이다. 하지만 2대의 계산기가 필요한 경우에는 add 함수 하나만으로는 결과값을 유지할 수 없다. 그렇기 때문에 add1, add2 와 같이 여러 개의 함수가 필요할 것이다. 이렇게 되면 계산기가 3, 5 이런식으로 많이 필요하게 되면 중복되는 코드는 점점 많아지고 지저분해질 것이다. 이런 경우에 클래스의 사용을 통하여 간단하게 해결할 수 있다. class Calculator: ..

    [Python]split, join 함수

    split() 함수 -> 문자열을 나누기 위해 사용한다. 사용법 바꾸고싶은문자열.split(인자) 예시 result = 'How are you?'.split() print(result) 결과 : ['How', 'are', 'you?'] 위와 같이 공백을 기준으로 문자열을 나눌 수 있다. 공백이 아닌 다른 구분자를 이용하려면 split(',') 처럼 사용해주면 된다. 바꾸고 싶은 문자열에도 변수/문자열 모두 다 사용이 가능하다. join 함수 -> 문자열을 결합하기 위해 사용한다. 사용법 '원하는기준'.join(바꾸고 싶은 문자열/변수) 예시 example = ['a', 'b', 'c'] ','.join(example) print(example) 결과 : 'a,b,c' '_'.join(example) 로 ..