Python 102

함수 심화 (2)

- 개요return 예약어를 사용하여 값을 반환하는 함수에 대해서 알아본다 1) 값을 반환하는 함수def func(f_name, l_name): return f"Your name is {f_name.title()} {l_name.title()}"name = func("JoHN", "doE")print(name) return 예약어를 사용하여 매개변수로 받은 두개의 문장을 문자열에 포함하여 반환한다내부적으로 title 함수를 사용하여 인자로 받은 문자열을 보기 편하게 변경한다 실행 결과는 위와 같다 2) 함수를 매개변수로 사용하는 함수def func_arg(text): return text + textdef func_call(text): return text.title()output = ..

딕셔너리

- 개요파이썬에서 키와 값의 쌍으로 데이터를 저장하는 자료구조인 딕셔너리에 대해서 알아본다 1) 딕셔너리 정의 + 데이터 수정 + 딕셔너리 초기화dict = {1 : 'a', 2 : 'b', 3 : 'c'}print(dict)print(dict[2])dict[2] = 'B'print(dict[2])for key in dict: print(key, end='') # 딕셔너리의 key print(dict[key], end=' ') # 딕셔너리의 valueprint()dict = {}print(dict) 딕셔너리는 위와 같이 "{ , }(대괄호)"를 사용하여 정의할 수 있다이때 ":(콜론)"을 기준으로 왼쪽에는 Key를, 오른쪽에는 Value를 정의한다딕셔너리는 Key-Value 쌍으로 ..

함수 심화

- 개요이전에 알아본 파이썬의 함수에 대해서 더 자세하게 알아본다 1) 매개변수와 인자def func_with_params(name): print(f"Hello {name}")func_with_params("John") 위와 같이 입력값을 받아 입력값이 포함된 문장을 출력하는 함수를 생성하였다함수에서 사용하는 입력값은 다음과 같이 분류할 수 있디매개변수 : 함수를 정의할 때 선언한 변수 - 예시에서는 name인자 : 함수를 호출할 때 넘겨주는 실제 값 - 예시에서는 John 2) 위치 인자와 키워드 인자def func1(a, b, c): print(f"Do this with {a}") print(f"Then Do this with {b}") print(f"Finally Do this..

반복문과 함수 정의

- 개요파이썬에서 특정한 코드를 반복하여 수행하는 반복문을 다루는 방법에 대해서 알아본다또, 특정한 작업을 수행하는 코드의 묶음인 함수를 정의하는 방법을 알아본다 1) 반복문nums_list = [1, 2, 3, 4, 5, 6, 7]for num in nums_list: print(num, end=' ')print()# range(a, b)는 a부터 b-1까지의 범위를 순회for number in range(1, 10): print(number, end = ' ')print()# range(a, b, c)는 a부터 b-1까지의 범위에서 c만큼의 간격으로 순회for number in range(1, 10, 2): print(number, end = ' ')print()# 조건이 참인 경우 ..

파이썬의 랜덤 / 리스트

- 개요파이썬에서 랜덤한 동작을 위한 random 모듈을 사용하는 방법을 알아본다또 파이썬에서 배열 자료구조의 역할을 수행하는 리스트에 대해서도 알아본다 1) random 모듈# 테스트용 모듈import Lecture03_TestModule as TestModuleprint(TestModule.my_favorite_number)# 랜덤 기능을 사용하기 위한 random 모듈import randomrand_num = random.randint(1, 10) # 1과 10사이의 무작위 정수print(rand_num)rand_num2 = random.random() * 10 # 0과 10 사이의 실수 + 10을 포함하지 않음print(rand_num2)rand_num3 = random.uniform(0, 1) ..

흐름 제어 - 조건문 / 논리 연산자

- 개요위에서 아래로 순차적으로 실행되는 코드 흐름을 제어하는 방법 중에서조건에 따라 코드를 실횅하는 조건문에 대해 알아본다또, 여러 가지 조건을 조합하여 최종적으로 True인지 False인지 판단하는 논리 연산자를 알아본다 1) 흐름 제어 - 조건문age = int(input("How old are you? "))if(age >= 20): print("You are not Teenager!!!")elif age == 19: print("You are almost not Teenager!!!")else: print("You are Teenager!!!") 파이썬의 조건문은 위와 같이 3개로 구성되어 있다if 조건문 : 다른 언어의 if 조건문 + "만약 ~라면"의 코드 흐름 + 제일 우선..

파이썬의 자료형 / 산술 연산

- 개요파이썬을 구성하는 자료형과 각각의 자료형의 특징을 알아본다또, 파이썬의 숫자 데이터를 사용한 산술 연산을 알아본다 1) 파이썬의 자료형1 - 1) 문자열print("Hello World")# Subscripting : 문자열에서 인덱스를 사용하여 특정 문자를 추출하는 행위print("Hello"[4]) # 또는 print("Hello"[-1])# Concatenation : + 연산을 이용한 문자열간의 연산print("123"+"456") # "123456" 파이썬의 문자열 데이터는 ""(큰따옴표)를 감싸서 정의한다문자열은 인덱스를 통해 접근할 수 있고 이를 통해 특정 문자를 추출하는 Subscripting 연산이 가능하다또 + 연산자를 사용하여 문자열과 문자열을 연결하는 것도 가능하다 코드의..

AsyncIO 라이브러리

- 개요병렬 처리 관점에서 I/O 작업은 I/O 작업 중에서 다른 작업을 할 수 있는지 여부에 따라 다음과 같이 구분할 수 있다Blocking I/O : I/O 작업이 완료될 때까지 스레드의 실행을 멈추고 대기 Non - Blocking I/O : I/O 작업 완료 여부와 관계없이 즉시 제어권을 반환하여 다른 작업을 계속 수행 파이썬의 AsyncIO 라이브러리에서는 내부적으로 async / await 구문을 사용하여 동시성 코드를 작성할 수 있다또, BeautifulSoup 라이브러리를 사용하면 XML이나 HTML 파일 안의 데이터를 손쉽게 파싱할 수 있다따라서 2개의 라이브러리를 사용하여 Non-Blocking I/O 예제를 작성한다 - 전역 변수...# 실행 시작 시간start = timeit.def..

Futures 모듈 (2)

- 개요이전에 여러 작업을 수행하기 위해 사용한 map 함수는 입력한 순서대로 작업을 반환한다그러나 상황에 따라서 유동적으로 작업을 수행해야 하는 경우가 존재한다이를 위해 Futures 모듈에서 2개의 함수를 사용할 수 있다map 함수 : 입력한 순서대로 작업을 반환작업의 처리 순서 보장이 필요한 경우에 사용wait 함수 : 완료된 작업의 집합과 완료되지 않은 작업의 집합을 반환작업의 상태 관리, 제어 필요한 경우에 사용as_completed 함수 : 완료되는 순서대로 작업을 반환빠른 결과부터 처리하는 경우에 사용 - 공통 요소from concurrent.futures import ThreadPoolExecutor, wait, as_completedimport timeJOBS = [100000, 1000..

Futures 모듈 (1)

- 개요concurrent.futures 모듈에서 동시성과 병렬성을 구현하는 방법은 다음과 같다ThreadPoolExecutor : 여러개의 스레드를 사용여러개의 스레드를 전환하며 작업을 진행하므로 동시성(Concurrency)을 구현함스레드들은 GIL에 의해 영향을 받아 병렬처리가 불가능파일 작업이나 네트워크 작업과 같은 I/O 작업에서는 GIL이 해제되므로 유리함 ProcessPoolExecutor : 여러개의 프로세스를 사용여러개의 프로세스를 생성하여 작업을 진행하므로 병렬성(Parallelism)을 구현함프로세스들은 자신만의 GIL을 가지므로 영향을 받지 않아 병렬처리가 가능인공지능이나 빅데이터와 같은 대규모 데이터 처리를 진행하는 CPU 바운드 작업에서 유리함 - 예제 import timefr..