<예제코드> my_list에 있는 값들을 하나씩 출력
my_list = ['a','b','c','d']
for i in my_list:
print("값 : ", i)
enumerate()
<예제코드> my_list에 있는 인덱스 번호와 값을 함께 출력
my_list = ['a','b','c','d']
for i, value in enumerate(my_list):
print("순번 : ", i, " , 값 : ", value)
이중 for문
<예제코드> 2개의 시퀀스 객체의 값으로 새로운 객체 만들기
my_list = ['a','b','c','d']
result_list = []
for i in range(2):
for j in my_list:
result_list.append((i, j))
print(result_list)
컴프리헨션(Comprehension)
<예제코드> 리스트, range를 조합해 새로운 요소의 리스트 만들기
my_list = ['a','b','c','d']
result_list = [(i, j) for i in range(2) for j in my_list]
print(result_list)
제너레이터(Generator)
my_list = ['a','b','c','d']
# 인자로 받은 리스트로부터 데이터를 하나씩 가져오는 제너레이터를 리턴하는 함수
def get_dataset_generator(my_list):
result_list = []
for i in range(2):
for j in my_list:
yield (i, j) # 이 줄이 이전의 append 코드를 대체했습니다
print('>> 1 data loaded..')
dataset_generator = get_dataset_generator(my_list)
for X, y in dataset_generator:
print(X, y)
Try : 실행코드
Except : 정상동작하지 않았을 때 보완코드 작성
프로그램이 에러 없이 끝나게 하기 위한 방법
a = 10
b = 0
try:
#실행 코드
print(a/b)
except:
print('에러가 발생했습니다.')
#에러가 발생했을 때 처리하는 코드
b = b+1
print("값 수정 : ", a/b)
Python은 인터프리터 언어
Multiprocessing
Multiprocessing패키지 Pool 클래스
<예제코드>
import multiprocessing
import time
num_list = ['p1','p2', 'p3', 'p4']
start = time.time()
def count(name):
for i in range(0, 100000000):
a = 1+2
print("finish:"+name+"\n")
if __name__ == '__main__':
pool = multiprocessing.Pool(processes = 4)
pool.map(count, num_list)
pool.close()
pool.join()
print("time :", time.time() - start)
list_data = [10, 20, 30, 40]
list_data2 = [20, 30, 40, 50]
def max_function(x):
length = len(x)
max_result = x[0]
for i in range(length):
if max_result < x[i]:
max_result = x[i]
return max_result
print("최댓값은 ", max_function(list_data))
print("최댓값은 ", max_function(list_data2))
pass
def empty_function():
pass
함수를 연달아 사용 가능
def say_something(txt):
return txt
def send(function, count):
for i in range(count):
print(function)
send(say_something("안녕!"), 2)
함수 안의 함수 & 2개 이상의 return
-함수1 안의 함수2
- 함수1 안에서는 호출 가능
- 함수1 밖에서는 호출 불가능
```python
list_data = [30, 20, 30, 40]
def minmax_function(x_list):
def inner_min_function(x):
length = len(x)
min_result = x[0]
for i in range(length):
if min_result > x[i]:
min_result = x[i]
return min_result
def inner_max_function(x):
length = len(x)
max_result = x[0]
for i in range(length):
if max_result < x[i]:
max_result = x[i]
return max_result
x_min = inner_min_function(x_list)
x_max = inner_max_function(x_list)
minmax_list = [x_min, x_max]
return minmax_list
print("최솟값, 최댓값은 : ", minmax_function(list_data))
print("최솟값은 : ", minmax_function(list_data)[0])
print("최댓값은 : ", minmax_function(list_data)[1])
```
여러 변수로 반환하기
list_data = [30, 20, 30, 40]
def minmax_function(x_list):
def inner_min_function(x):
length = len(x)
min_result = x[0]
for i in range(length):
if min_result > x[i]:
min_result = x[i]
return min_result
def inner_max_function(x):
length = len(x)
max_result = x[0]
for i in range(length):
if max_result < x[i]:
max_result = x[i]
return max_result
x_min = inner_min_function(x_list)
x_max = inner_max_function(x_list)
return x_min, x_max
min_value, max_value = minmax_function(list_data)
print("최솟값은 : ", min_value)
print("최댓값은 : ", max_value)
패러다임(Paradigm)
절차 지향 프로그래밍
객체 지향 프로그래밍
[파이썬 - OOP Part 1. 객체 지향 프로그래밍(OOP)은 무엇인가? 왜 사용하는가? - schoolofweb.net](http://schoolofweb.net/blog/posts/%ED%8C%8C%EC%9D%B4%EC%8D%AC-oop-part-1-%EA%B0%9D%EC%B2%B4-%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8Doop%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80-%EC%99%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80/)
함수형 프로그래밍
함수형 프로그래밍의 특징
디버깅과 테스트 용이성
Whitespace
y = a + a + a + a # 79자 이하
빈 줄 두 개
로 구분class a():
pass
# 빈 줄
# 빈 줄
class b():
pass
# 빈 줄
# 빈 줄
def c():
pass
# 빈 줄
# 빈 줄
class a():
def b():
pass
def c():
pass
y = 1
my_list = [1, 2, 3]
my_list[0] # 리스트 인덱스 호출
my_function(0) # 함수 호출
my_list = [1, 2, 3]; my_list[0:1]
if len(my_list) == 3: print my_list
주석
이름 규칙
_my_list = []
import_ = "not_import"
my_module.py
class MyClass():
pass
def my_function():
pass
MY_PI = 3.14 # 상수는 변하지 않는 변수입니다.