import warnings
warnings.filterwarnings('ignore')
import numpy as np
np.random.seed(12345)
np.set_printoptions(precision=4, suppress=True)
import matplotlib.pyplot as plt
# Matplotlib 한글 폰트 설정 (macOS용)
plt.rc('font', family='AppleGothic')
plt.rc('axes', unicode_minus=False)1 2장: 파이썬 언어 기본, IPython, Jupyter 노트북
이 장에서는 파이썬의 핵심 구문과 분석 환경을 익힙니다.
2 2장: 파이썬 언어 기본, IPython, Jupyter 노트북
이 장에서는 파이썬 프로그래밍의 기초와 IPython 및 Jupyter 노트북 환경을 사용하는 방법을 다룹니다.
2.1 환경 설정
기본적인 라이브러리를 임포트하고 출력 옵션을 설정합니다.
2.2 변수와 객체 참조
파이썬에서 변수는 객체 자체가 아니라 객체에 대한 이름(참조)입니다.
2.3 객체 지향 프로그래밍 기초
파이썬의 동적 타이핑과 객체 참조 방식을 살펴봅니다.
import numpy as np
data = [np.random.standard_normal() for i in range(7)]
data[-0.20470765948471295,
0.47894333805754824,
-0.5194387150567381,
-0.55573030434749,
1.9657805725027142,
1.3934058329729904,
0.09290787674371767]
a = [1, 2, 3]b = a
b[1, 2, 3]
a.append(4)
b[1, 2, 3, 4]
2.4 동적 타이핑
파이썬은 변수의 타입을 미리 선언할 필요가 없는 동적 타이핑 언어입니다.
2.5 함수와 모듈
코드의 재사용성을 높이는 함수 정의와 임포트 방법을 배웁니다.
def append_element(some_list, element):
some_list.append(element)data = [1, 2, 3]
append_element(data, 4)
data[1, 2, 3, 4]
2.6 내장 객체 타입
파이썬의 주요 내장 데이터 타입과 그 특성을 살펴봅니다.
2.7 데이터 타입
정수, 실수, 문자열 등 파이썬의 기본 자료형을 확인합니다.
a = 5
type(a)
a = "foo"
type(a)str
"5" + 5--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[9], line 1 ----> 1 "5" + 5 TypeError: can only concatenate str (not "int") to str
a = 4.5
b = 2
# 문자열 포매팅, 나중에 살펴봄
print(f"a is {type(a)}, b is {type(b)}")
a / ba is <class 'float'>, b is <class 'int'>
2.25
2.8 속성과 메서드
객체의 속성과 메서드를 확인하고 사용하는 방법을 다룹니다.
a = 5
isinstance(a, int)True
a = 5; b = 4.5
isinstance(a, (int, float))
isinstance(b, (int, float))True
2.9 연산자와 제어 흐름
기본적인 산술 연산, 비교 연산, 그리고 조건문과 반복문을 사용하는 방법을 학습합니다.
a = "foo"getattr(a, "split")<function str.split(sep=None, maxsplit=-1)>
def isiterable(obj):
try:
iter(obj)
return True
except TypeError: # 반복 가능한 객체가 아님
return Falseisiterable("문자열")
isiterable([1, 2, 3])
isiterable(5)False
5 - 7
12 + 21.5
5 <= 2False
a = [1, 2, 3]
b = a
c = list(a)
a is b
a is not cTrue
a == cTrue
a = None
a is NoneTrue
a_list = ["foo", 2, [4, 5]]
a_list[2] = (3, 4)
a_list['foo', 2, (3, 4)]
a_tuple = (3, 5, (4, 5))
a_tuple[1] = "four"--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[22], line 2 1 a_tuple = (3, 5, (4, 5)) ----> 2 a_tuple[1] = "four" TypeError: 'tuple' object does not support item assignment
ival = 17239871
ival ** 626254519291092456596965462913230729701102721
fval = 7.243
fval2 = 6.78e-53 / 21.5
3 // 21
c = """
This is a longer string that
spans multiple lines
"""c.count("\n")3
a = "this is 문자열"
a[10] = "f"--------------------------------------------------------------------------- TypeError Traceback (most recent call last) Cell In[29], line 2 1 a = "this is 문자열" ----> 2 a[10] = "f" TypeError: 'str' object does not support item assignment
b = a.replace("문자열", "더 긴 문자열")
b'this is 더 긴 문자열'
a'this is 문자열'
a = 5.6
s = str(a)
print(s)5.6
s = "python"
list(s)
s[:3]'pyt'
s = "12\\34"
print(s)12\34
s = r"this\has\no\special\characters"
s'this\\has\\no\\special\\characters'
a = "이것은 전반부 "
b = "그리고 이것은 후반부"
a + b'이것은 전반부 그리고 이것은 후반부'
template = "{0:.2f} {1:s} are worth US${2:d}"template.format(88.46, "아르헨티나 페소", 1)'88.46 아르헨티나 페소 are worth US$1'
amount = 10
rate = 88.46
currency = "페소"
result = f"{amount} {currency} 은(는) US$의 가치가 있습니다{amount / rate}"f"{amount} {currency} 은(는) US$의 가치가 있습니다{amount / rate:.2f}"'10 페소 은(는) US$의 가치가 있습니다0.11'
val = "español"
val'español'
val_utf8 = val.encode("utf-8")
val_utf8
type(val_utf8)bytes
val_utf8.decode("utf-8")'español'
2.10 날짜와 시간
datetime 모듈을 사용하여 날짜와 시간을 다루는 방법을 알아봅니다.
val.encode("latin1")
val.encode("utf-16")
val.encode("utf-16le")b'e\x00s\x00p\x00a\x00\xf1\x00o\x00l\x00'
True and True
False or TrueTrue
int(False)
int(True)1
a = True
b = False
not a
not bTrue
s = "3.14159"
fval = float(s)
type(fval)
int(fval)
bool(fval)
bool(0)False
a = None
a is None
b = 5
b is not NoneTrue
from datetime import datetime, date, time
dt = datetime(2011, 10, 29, 20, 30, 21)
dt.day
dt.minute30
dt.date()
dt.time()datetime.time(20, 30, 21)
dt.strftime("%Y-%m-%d %H:%M")'2011-10-29 20:30'
datetime.strptime("20091031", "%Y%m%d")datetime.datetime(2009, 10, 31, 0, 0)
dt_hour = dt.replace(minute=0, second=0)
dt_hourdatetime.datetime(2011, 10, 29, 20, 0)
dtdatetime.datetime(2011, 10, 29, 20, 30, 21)
dt2 = datetime(2011, 11, 15, 22, 30)
delta = dt2 - dt
delta
type(delta)datetime.timedelta
dt
dt + deltadatetime.datetime(2011, 11, 15, 22, 30)
a = 5; b = 7
c = 8; d = 4
if a < b or c > d:
print("성공")성공
4 > 3 > 2 > 1True
for i in range(4):
for j in range(4):
if j > i:
break
print((i, j))(0, 0)
(1, 0)
(1, 1)
(2, 0)
(2, 1)
(2, 2)
(3, 0)
(3, 1)
(3, 2)
(3, 3)
range(10)
list(range(10))[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
list(range(0, 20, 2))
list(range(5, 0, -1))[5, 4, 3, 2, 1]
seq = [1, 2, 3, 4]
for i in range(len(seq)):
print(f"element {i}: {seq[i]}")element 0: 1
element 1: 2
element 2: 3
element 3: 4
total = 0
for i in range(100_000):
# %는 나머지 연산자임
if i % 3 == 0 or i % 5 == 0:
total += i
print(total)2333316668