본문 바로가기
  • Fearless

프로그래밍언어/python13

[파이썬문법] 16. class 상속 & class/static method 1. 상속 다 적어놨다. super(). 쓰면 B,C __init__ 따로 선언안해줘도된다. 대신에 순서가 __mro__에 의해 결정된다. getArea()는 pass 때려놓고 자식 클래스가 overwrite해서 사용한다. 2. Class method & static method PI는 class variable, 사용할 때는 Circle.PI로 사용한다. 모든 instance가 공용으로 사용한다는 뜻. 객체 생성한다음에 거기다가 classmethod 하면 error발생 cls.__PI를 받는 classmethod 선언한 경우다. 바로 Circle에다가 get_area, get_circum 쓰면 된다. class attribute와는 무관하게 밖에서 pi를 직접 인자로 전달해서 실행하는 classmeth.. 2022. 4. 22.
[파이썬문법] 16. class 변수 & property & decorator 1. class variable num_act = 0은 class 변수다. 특정 class 구조를 공유하는 모든 instance가 공유하는 변수다. 위와 같이 account instance가 생성될 때마다 num_act += 1이 되면, 3개 instance가 형성되었기에 Account.num_act=3이 된다. 이 때 핵심은 동일한 클래스 구조가 공유하는 것이기에 Account.num_act로 사용되어야만 한다! __del__(self)는 del instance_name 하면 해당 instance 삭제시켜준다. print 함수가 전역변수를 불러와서 클래스변수는 print되지 않는 것이다. 좋은 예제인듯. 함수 내에서 생성된 지역변수는 함수가 끝나면 소멸되기 때문에 del d가 자동으로 실행된다. 그에 .. 2022. 4. 22.
[파이썬문법] 15. yield(generator) & lambda func 1. yield 아 진짜 하기 싫다 이거.. 여튼 시작. recursive한 방법은 비효율적이다. 너무 비효율적이다 비슷한 top-down 방식의 fibo는 두 방향으로 갈리기 때문에 엄청나게 비효율적이다. 효율적이다. 뒤에서부터 맨 앞으로, 거꾸로 출력 return하면 첫 반환하고 함수가 죽어버린다. next가 없어서 그만뒀다. tuple을 iterable로 만들어버렸고, next의 끝은 항상 stopiteration list comprehension a는 generator라서 필요할 때 특정값을 딱 넘겨준다. ex) for loop을 도는거니까 print(i)하면 다시 a한테 가는데 이 때 a는 list가 아니고 그냥 그 때 특정 값만 넘겨주고 바로 다음값을 구해서 대기하고 있음. 뭔소리냐면 0 전달.. 2022. 4. 22.
[파이썬문법] 14. 전역/지역변수 & *args/**kwargs 1. local vs global variable 잘 살피면 calculate 함수를 실행했음에도 total이 0임을 확인할 수 있는데, 이는 해당 함수 내에서 total이 재정의 되었기 때문에 지역변수로 기능함에 기인한다. 1) 지역변수간의 바뀜 2) 함수 내에서 전역변수를 불러와서 바꿨음 3) 리스트 객체의 주소값을 전달해서 값을 변경했기 때문에 바뀜(c언어 포인터 느낌) 당연한 얘기 당연한 얘기2 이미 전역변수로 선언된 variable을 함수에서 수정할 수 없음. 충돌이 발생하기 때문. 그냥 들고와서 쓸수도 있고, 동일한 이름을 가진 지역변수를 생성할 수도 있지만 수정은 안된다. 이 경우 함수 내에서 조작하는 pi가 전역변수임을 선언해주면 된다. global pi를 선언해주면 지금 내가 다루고 있는.. 2022. 4. 22.
[파이썬문법] 13. 고급파이썬문법(1) 1. __name__ == '__main__' %%writefile hello_mge.py print("I LOVE YOU") def hello_message(): print("Hello World") print("서강대학교") if __name__ == '__main__': hello_message() else: print('bye') %run hello_mge.py​ 위 파일을 실행할 경우 위에서부터 실행된다. 1) I LOVE YOU 2) __name__ = '__main__'이 True이기에, Hello World와 서강대학교가 순차적으로 출력된다. import hello_mge hello_mge.py를 모듈로서 import하는 경우를 생각해보면 main파일이 hello_mge가 아니기 때문에 1.. 2022. 4. 18.
[파이썬] openpyxl & selenium 활용법 from selenium import webdriver from selenium.webdriver.chrome.service import Service from webdriver_manager.chrome import ChromeDriverManager from openpyxl import Workbook wb = Workbook() sheet = wb.active sheet.append(['date','region','normal','book']) def set_chrome_driver(): chrome_options = webdriver.ChromeOptions() driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), .. 2022. 2. 8.
[파이썬문법] 12. Threading(1) 필요할 때마다 야매로 배워서 써먹는중. 작성한 코드를 병렬적으로 실행시키기 위해선 Threading 모듈이 필요하다. import threading def sum(low, high): total = 0 for i in range(low, high): total += i print("Subthread", total) t = threading.Thread(target = sum, args(1,10000)) t.start() print("Main Thread") 가령 위 예시와 같이 최소, 최대의 인수를 넘겨받아 최소에서 최대까지의 합게를 반환하는 함수가 있다고 가정하자. 이 때 특정 thread를 통해 해당 함수를 실행하기 위해선 threading.Thread(target = 'method_name', ar.. 2022. 1. 21.
[파이썬문법] 11. Class(2) 4. 상속 상속은 기존에 존재하는 class로부터 코드와 데이터를 이어받고 필요한 기능을 추가하는 방법이다. 가령 Vehicle이란 부모클래스가 존재했으며 그 내부에 마력, 바퀴수 등의 공통된 field, method가 존재했다고 가정하자. 그런데 Car, Truck, Bus 등 세부화된 자식클래스에선 기존 부모클래스의 field, method를 고스란히 유지하면서 세부적 기능을 추가해야만 한다. 가령 Truck은 최대적재화물이라던가 Bus은 최대탑승인원 등이 있다. 이럴 경우 부모클래스로부터 기존 기능을 고스란히 이어받되, 새로운 기능을 추가하는 것이 바로 상속인 것이다. 따라서 상속은 객체지향 프로그램이의 "is-a" 관계를 구축함에 있어 핵심이다. class Vehicle: def __init__(.. 2022. 1. 16.
[파이썬문법] 11. Class(1) 1. Class object(객체)는 state(상태)와 behavior(동작, 기능)으로 구성된다. 이를 코드 상에서 구현하기 위한 방법은 크게 두 가지인데, 전자는 field의 형태로, 후자는 method function의 형태로 구현된다. 우리는 개별의 object를 다루기 위해 Class라는 개념을 도입한다. Class는 동일한 자료구조를 공유하는 특정 object type을 나타낸다. 가령 와플이라는 object가 존재할 때, 그 외형과 기능은 동일한 구조를 공유하나 개별 재료는 다르다. Class는 와플기계처럼 다른 개별 재료(input)을 효율적으로 다룰 수 있도록 도와주는 장치로 생각하면 쉽다. 이 때 Class를 통해 생성된 object는 instance라 부른다. class Counte.. 2022. 1. 15.
[파이썬문법] 9. 반복문 1. For loop 반복(iteration)은 다양한 데이터를 갖고 동일한 구조의 작업을 반복수행할 때 필요하다. 두가지 종류의 반복구조가 있는데 우선적으로 for loop을 확인해보려고 한다. iterable objec에는 list, tuple, set, dict 등 원소를 내포하는 객체들이 있는데, 이중 가장 흥미로운 것은 문자열이다. 문자열 또한 원소, 즉 개별 문자를 포함하는 배열로 인식하기 떄문에 iterable obj로 대입시 개별 문자가 변수로 쓰인다. name = "Albatross" cnt = 0 for i in name: if i in 'AEIOUaeiou": cnt += 1 print(i) print("모음의 개수", cnt) 위와 같이 문자열 내 특정 조건을 만족하는 개별문자를 조.. 2021. 12. 15.
[파이썬문법] 8. iterable variables 1. Tuple Tuple은 sequence형 자료구조를 담기에 적합하다. 원소간에 순서가 있다. 그러나 리스트처럼 데이터를 수정할 수 없다. 튜플을 생성하기 위해선 괄호 내에 데이터를 순서대로 적고 꼭 콤마를 적어줘야한다. 튜플은 수정, 추가, 삭제가 불가하기 때문에 리스트처럼 indexing하여 원소를 수정하려고 하면 error가 발생한다. tuple을 생성하여 변수할당하는 것이 packing, 할당된 원소를 다시 각 변수에 나눠주는 것을 unpacking이라 한다. 앞서 언급했듯이 list와 같이 indexing, slicing을 통해 원소를 추가, 수정, 삭제하는 것이 불가하기 때문에 method 함수 중 .index나 .count, .add 등을 사용한다. 2. Set 집합 또한 값을 바꿀수 없.. 2021. 12. 15.
[파이썬문법] 10. function 1. Fuctions 문제해결에 필요한 명령문을 그룹화하여 독립적으로 구현한 것이다. 이를 그룹화하여 명명할시 반복적으로 활용할 수 있다는 장점이 있으며, 인자를 변경하여 재활용할 수 있다. 파이썬에는 크게 3가지 종류의 함수가 존재한다. 1) built-in function: print(), input(), len() 등 python interpreter에 내장된 함수다. 2) library package: import modulename을 통해 불러온 module의 함수다. 3) user-defined: 위 두 함수를 적절히 조합하여 특정 기능의 구현할 수 있는 함수를 직접 정의한 것이다. 이 중 이번 게시글을 통해 user-defined function의 기본적인 구현방법을 확인해본다. 1) bui.. 2021. 12. 10.
반응형