python
-
[python] 파이썬 함수의 위치 인자, 키워드 인자 언패킹코딩 연습/코딩배우기 2020. 9. 19. 20:21
■ 파이썬의 함수 인자(함수를 호출할 때 함수로 전달되는 값)에는 위치 인자 (positional argument)와 키워드 인자 (keyword argument) 인자가 있다. 위치 인자 (positional argument)들은 인자 중 처음에 나오거나 이터러블의 앞에 '*' 기호를 붙여 전달할 수 있는 인자를 말하고, 키워드 인자 (keyword argument)는 함수 호출 때 식별자가 앞에 붙은 인자 (예를 들어, name= ) 또는 '**' 기호를 앞에 붙인 딕셔너리로 전달되는 인자를 말한다. def func(st): return st p = [1, 3, 5] print(func(p)) # [1, 3, 5] print(func([1, 3, 5])) # [1, 3, 5] #print(func(1..
-
[python] 파이썬의 변수, 객체, 그리고 참조 주소코딩 연습/코딩배우기 2020. 9. 19. 19:49
■ 파이썬에서 모든 자료(type)는 객체이기 때문에 변수에 객체를 대입하면 특정 메모리 주소를 할당받게 되고, 그 변수를 다른 변수에 대입하면 같은 객체 주소를 참조하게 된다. ■ 파이썬의 기본 자료형 중 int, float와 수정불가(immutable)한 객체인 str, tuple 등은 그 변수의 대입(할당) 값을 수정하면 다른 주소를 참조하게 되어 같은 변수라고 볼 수 없지만, 수정가능(mutable)한 객체는 값을 수정해도 참조 주소를 유지한다. a = 10 print(id(a)) # 140729182426208 b = a print(id(b)) # 140729182426208 print(a is b) # True a = 20 print(id(a)) # 140729182426528 --> 참조 주..
-
[python] 파이썬의 진수 변환(2진수, 8진수, 10진수, 16진수)코딩 연습/코딩배우기 2020. 9. 18. 19:29
■ 파이썬에서 10진수를 다른 진수의 문자열로 변환할 경우, 파이썬의 내장 함수 bin(), oct(), hex()를 사용하며, 역으로, 다른 진수의 문자열을 10진수 숫자형으로 변환할 때는 int()를 사용한다. print(bin(10)) # 0b1010 print(oct(10)) # 0o12 print(hex(10)) # 0xa print(int('0b1010', 2)) # 10 print(int('0o12', 8)) # 10 print(int('0xa', 16)) # 10 ■ format() 내장 함수를 이용하는 방법(접두어 포함 여부를 선택할 수 있음) # 진수(2/8/10/16) 관련 함수 사용 for i in range(16): print('(10진수:{0:2d}) (2진수:{1:>6s}) (..
-
[python] 파이썬 스태틱(static) 메서드와 클래스(class) 메서드코딩 연습/코딩배우기 2020. 9. 17. 19:54
■ 클래스의 인스턴스(객체)별로 존재하는 변수를 인스턴스 변수라고 하며, 인스턴스(객체)에 속하지 않고 클래스에 속한 변수를 클래스 변수라고 한다. class Simple: cv = 20 # 클래스 변수 def __init__(self): self.iv = 10 # 인스턴스 변수, 객체별로 존재 s = Simple() print(s.iv) # 10 / 인스턴스 변수는 객체를 통해 접근함 #print(Simple.iv) # AttributeError: type object 'Simple' has no attribute 'iv' # 클래스 변수는 클래스 이름으로 접근 가능 print(Simple.cv) # 20 # 객체를 통해서도 클래스 변수에 접근 가능 print(s.cv) # 20 # 접근하는 변수가 객..
-
[python] 파이썬 데코레이터 (Decorator)코딩 연습/코딩배우기 2020. 9. 16. 14:02
■ 파이썬 데코레이터 (Decorator)는 꾸며주는(덧붙여주는) 역할을 하는 함수 또는 클래스로써 클러저와의 차이점은 함수를 다른 함수의 인자로 전달한다는 점이다. 즉, 데코레이터 함수가 인자로 전달된 함수를 기능이 추가된 새로운 함수로 만들고 이 함수를 반환한다. def smile(): print('^_^') def confused(): print('@_@') # 위 함수들의 결과를 'emoticon!'이라는 글이 위, 아래에 위치하도록 꾸며줄 수 있다. def deco(func): # 데코레이터 함수 def wrap_func(): print('emoticon!') func() print('emoticon!') return wrap_func smile_deco = deco(smile) smile_de..
-
[python] 파이썬 중첩함수(Nested Function)와 클로저(Closure)코딩 연습/코딩배우기 2020. 9. 15. 19:11
■ 클로저(Closure)는 함수를 만들어서 반환하는 함수 - 파이썬의 함수도 개체이기 때문에 가능 def maker1(m): def inner(): # 함수 안에 정의된 함수(nested 함수) print('closure ' * m) return inner() # nested 함수 실행 후 반환 f1 = maker1(2) # closure closure print(f1) # None def maker2(m): def inner(): print('closure ' * m) return inner # nested 함수 반환 f2 = maker2(3) # print 함수 실행 X f2() # closure closure closure --> print('clouser ' * m) 실행, m의 값 참조 pri..
-
[python] 파이썬 property객체, @property 데코레이터코딩 연습/코딩배우기 2020. 9. 14. 14:31
■ 파이썬의 내장 함수에 property가 있으며, 클래스 변수를 속성으로 선언하고 메소드를 get, set 인자로 받아 property 객체를 생성하고, getter, setter 기능을 수행토록 한다. class Natural: def __init__(self, n): self.set_n(n) # 아래의 setn 메서드 호출 def get_n(self): # getter return self.__n def set_n(self, n): # setter if n < 1: self.__n = 1 else: self.__n = n def main(): n1 = Natural(1) n2 = Natural(2) n3 = Natural(3) n1.set_n(n2.get_n() + n3.get_n()) print(..
-
[python] 파이썬 __slots__의 효과코딩 연습/코딩배우기 2020. 9. 14. 14:16
■ 파이썬에서는 각 객체마다 해당 객체의 속성을 저장하기위해 __dict__을 사용하는데, __dict__은 그 형태로 인해 메모리를 많이 사용한다. 이로 인해 수백 수천개의 객체가 생성될 경우, 그에 상응한 수만큼 __dict__이 생성되어 시스템에 부담이 된다. # __slots__은 객체마다 생성되는 __dict__을 생성못하게 하여 메모리 효율성을 높이고, 객체의 속성(변수) 추가(생성)을 제한할 수 있다. class Point3D: __slots__ = ('x', 'y', 'z') # 속성(변수)를 x, y, z로 제한함 def __init__(self, x, y, z): self.x = x self.y = y self.z = z def __str__(self): return '3D 좌표 : (..