๐ถ ํ์ต ๋ฒ์
- ๊ฐ์ข: ์ธ๊ณต์ง๋ฅ์ ์ํ ํ์ด์ฌ (3์ฃผ์ฐจ ~ 4์ฃผ์ฐจ)
- 4.* ํ์ผ๋ค๋ฃจ๊ธฐ, ์ด๋๋ ์ดํฐ, ์ ๋๋ ์ดํฐ, ๋ฐ์ฝ๋ ์ดํฐ
- ์ฝ๋ฉ์ฌ์ดํธ ๋ฌธ์ ํ์ด (ํ๋ก๊ทธ๋๋จธ์ค)
- ๋น์ ๊ณต์๋ ์ดํดํ ์ ์๋ AI ์ง์ 1์ฑํฐ
๐ถ ๊ณต๋ถ๋ด์ฉ
โจ ํ์ผ
๐ฉ ์์ฝ
- ํ์ผ ์ด๊ธฐ/๋ซ๊ธฐ, ์ฝ๊ธฐ/์ฐ๊ธฐ ๋ฑ..
๐ฉ ๋ด์ฉ
1. ํ์ผ ์ด๊ธฐ
- open()
- ํ์ผ ์ด๋ฆ๊ณผ ๋ชจ๋๋ฅผ ์ธ์๋ก ๋ฐ์ # ex. f = open("sparta.txt", "r")
- ๋ชจ๋
> r: ์ฝ๊ธฐ ๋ชจ๋ (๊ธฐ๋ณธ๊ฐ)
> w: ์ฐ๊ธฐ ๋ชจ๋ (ํ์ผ์ด ์กด์ฌํ๋ฉด ๋ด์ฉ์ ๋ฎ์ด์ฐ๊ณ , ํ์ผ์ด ์์ผ๋ฉด ํ์ผ์ ์์ฑํจ)
> a: ์ถ๊ฐ ๋ชจ๋ (ํ์ผ์ ๋์ ์๋ก์ด ๋ด์ฉ ์ถ๊ฐ)
> b: ๋ฐ์ด๋๋ฆฌ ๋ชจ๋ (์ด์ง ํ์ผ์ ์ฝ๊ฑฐ๋ ์ธ ๋ ์ฌ์ฉ)
- read()
> ํ์ผ ๊ฐ์ฒด์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๋ฐ ์ฌ์ฉ
> ์ธ์๊ฐ์ด ์กด์ฌํ ๊ฒฝ์ฐ : ํ์ผ์์ ์ง์ ๋ ์์ ๋ฐ์ดํธ๋ฅผ ์ฝ์ด ๋ฌธ์์ด๋ก ๋ฐํ
> ์ธ์๊ฐ์ด ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ : ํ์ผ์ ์ ์ฒด ๋ด์ฉ์ ์ฝ์ด ๋ฌธ์์ด๋ก ๋ฐํ
2. ํ์ผ ์ฐ๊ธฐ (w: ๊ธฐ์กด ๋ด์ฉ ์ญ์ => ๋ฎ์ด์ฐ๊ธฐ, a: ๊ธฐ์กด ๋ด์ฉ ์ ์ง => ์๋ก์ด ๋ด์ฉ ์ถ๊ฐ)
- write()
> ๋ฌธ์์ด์ ์ธ์๋ก ๋ฐ๊ณ , ์ค์ ๋ก ํ์ผ์ ์ฐ์ธ ๋ฌธ์์ ๊ฐ์๋ฅผ ๋ฐํ
> ํ์ผ ์ด๊ธฐ ๋ชจ๋์ ํ์ผ์ ์ธ์ฝ๋ฉ์ ์ ์ ํ ์ค์ ํ์
# with open('example.txt', 'w', encoding='utf-8') as file:
- writelines()
> ๋ฌธ์์ด์ ๋ฆฌ์คํธ๋ฅผ ์ธ์๋ก ๋ฐ๊ณ , ๋จ์ํ ํ์ผ์ ๋ฌธ์์ด์ ์ (๋ฌธ์์ ๊ฐ์ ๋ฐํ ์ํจ)
- seek()
> ํ์ผ ๋ด์์ ์ปค์์ ์์น๋ฅผ ๋ณ๊ฒฝํ๋ ๋ฐ ์ฌ์ฉ
> ํ์ผ์ ํน์ ์์น๋ก ์ปค์๋ฅผ ์ด๋์์ผ ๋ฐ์ดํฐ ์ฝ๊ธฐ๋ ์ฐ๊ธฐ๋ฅผ ์์
> ๋์ฉ๋ ํ์ผ์ ์ฒ๋ฆฌํ ๋๋ ํ์ผ์ ํน์ ๋ถ๋ถ๋ง์ ์ฝ๊ณ ์ถ์ ๋ ๋งค์ฐ ํธ๋ฆฌ
3. ํ์ผ ๋ซ๊ธฐ
- with ๋ฌธ
> ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ ๋ ์ ์ ํ ๊ด๋ฆฌ๋ฅผ ๋ณด์ฅํ๋ ์ปจํ
์คํธ ๋งค๋์ ๋ก ์ฌ์ฉ
> ํ์ผ ์์
, ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๊ฒฐ, ์ธ์
๊ด๋ฆฌ ๋ฑ ์์์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌ ๊ฐ๋ฅ
> ํ์ผ์ด๋ ์ธ์
๊ฐ์ ๋ฆฌ์์ค์ ๊ฐ๋ฐฉ๊ณผ ํ์๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌ
> ๋ฆฌ์์ค ๋์๋ฅผ ๋ฐฉ์งํ๊ณ ์ฝ๋๋ฅผ ๋ ๊น๋ํ๊ฒ ์ ์ง
- close()
> ํ์ผ์ด๋ ๋คํธ์ํฌ ์ฐ๊ฒฐ๊ณผ ๊ฐ์ ๋ฆฌ์์ค๋ฅผ ๋ซ์์ผ ํ ๋ ์ฌ์ฉ
> with ๋ฌธ์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋ช
์์ ์ผ๋ก ํธ์ถํ์ง ์์๋ ๋จ (with ๋ฌธ์ด ์๋์ผ๋ก ์ฒ๋ฆฌ)
๐ฉ ์ฌ์ฉ๋ฒ
1. ํ์ผ ์ด๊ธฐ (์ฝ๊ธฐ: r)
with open('sparta.txt', 'r') as file:
content = file.read()
print(content)
# ํ์ผ์ ๋ด์ฉ์ ์ค ๋จ์๋ก ์ฝ๊ธฐ : readline() or readlines()
with open('sparta.txt', 'r') as file:
lines = file.readlines()
for line in lines:
print(line.strip()) # strip() ์ผ๋ก ์ค๋ฐ๊ฟ ๋ฌธ์ ์ ๊ฑฐ
2. ํ์ผ ์ฐ๊ธฐ (w or a)
# write()
with open('sparta.txt', 'w') as file:
file.write("Hello, Sparta!")
# writelines() : ๋ฆฌ์คํธ์ ๊ฐ ๋ฌธ์์ด์ ํ์ผ์ ์ฐ๊ธฐ
lines = ["Hello, World!\n", "Welcome to Python.\n", "Enjoy coding!"]
with open('example.txt', 'w') as file:
file.writelines(lines)
3. ํ์ผ ๋ซ๊ธฐ
file = open('sparta.txt', 'r')
content = file.read()
print(content)
file.close()
# ํ์ผ close ์ฌ๋ถ ํ์ธ
print(file.closed) # True๊ฐ ์ถ๋ ฅ๋๋ฉด ์ ์ close
โจ ์ด๋๋ ์ดํฐ ( iterator)
๐ฉ ๋ด์ฉ
1. ๋ฐ์ดํฐ์ ์์๋ค์ ์์ฐจ์ ์ผ๋ก ์ ๊ทผํ ์ ์๋ ๊ฐ์ฒด
2. ์ด๋๋ ์ดํฐ๋ __iter__() ๋ฉ์๋๋ฅผ ๊ตฌํ
3. __next__() ๋ฉ์๋๋ฅผ ํตํด ๋ฐ์ดํฐ์ ๋ค์ ์์๋ฅผ ๋ฐํ
4. ๋ฐ์ดํฐ๊ฐ ๋ ์ด์ ์์ ๋๋ StopIteration ์์ธ๋ฅผ ๋ฐ์
5. ํ์ด์ฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์ค์ํ ๋ฉ์ปค๋์ฆ
โป ๋ฆฌ์คํธ๋ ํํ๊ณผ ๊ฐ์ ์ปฌ๋ ์
์ ์ด๋๋ ์ดํฐ๋ฅผ ์ง์
๐ฉ ์ฌ์ฉ๋ฒ
1. ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฉํ ์ด๋๋ ์ดํฐ ํ์ฉ
my_list = [1, 2, 3]
iterator = iter(my_list) # ์ด๋๋ ์ดํฐ ์์ฑ
print(next(iterator)) # 1
print(next(iterator)) # 2
print(next(iterator)) # 3
# ๋ค์ ๋ฐ์ดํฐ๊ฐ ์์ผ๋ฉด StopIteration ์์ธ ๋ฐ์
try:
print(next(iterator))
except StopIteration:
print("๋ค์ ์ฉ์ฌ๊ฐ ์์ต๋๋ค.")
2. ์ฌ์ฉ์ ํด๋์ค์์ ์ด๋๋ ์ดํฐ๋ฅผ ์ง์ ๊ตฌํ
class CountDown:
def __init__(self, start):
self.current = start
def __iter__(self):
return self # ์ด๋๋ ์ดํฐ ์ธ์คํด์ค ๋ฐํ
def __next__(self):
if self.current > 0:
num = self.current
self.current -= 1
return num
raise StopIteration # ๋ ์ด์ ๋ฐํํ ์ซ์๊ฐ ์์ ๋ ์์ธ ๋ฐ์
# ์ฌ์ฉ ์
countdown = CountDown(3)
for number in countdown:
print(number) # 3, 2, 1
โจ ์ ๋๋ ์ดํฐ ( generator )
๐ฉ ๋ด์ฉ
1. ์ดํฐ๋ ์ดํฐ๋ฅผ ์์ฑํ๊ธฐ ์ํ ๋ฐฉ๋ฒ
2. ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ง ์์ => ๊ฐ์ ๋์ ์ผ๋ก ์์ฑ
3. ์ผ๋ฐ ํจ์์ ๋น์ทํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ๋ฐํํ ๋ return ๋์ yield ํค์๋๋ฅผ ์ฌ์ฉ
4. ๋๋ฆฐ ๊ณ์ฐ (๊ณ์ฐ ์ง์ฐ)
- yield๋ฅผ ์ฌ์ฉํ๋ฉด ํจ์์ ์ํ๊ฐ ๊ทธ ์์น์์ ์ผ์ ์ค์ง
- ๋ค์ ๊ฐ์ด ์์ฒญ๋ ๋๊น์ง ํจ์์ ์คํ ์ํ๊ฐ ๋ณด์กด
- ํ์ํ ๋๋ง๋ค ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ์์ฑ => ํฐ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ฐ์
5. ํ์ด์ฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ทผํ๋ ์ค์ํ ๋ฉ์ปค๋์ฆ
โป ๋ฆฌ์คํธ๋ ํํ๊ณผ ๊ฐ์ ์ปฌ๋ ์
์ ์ด๋๋ ์ดํฐ๋ฅผ ์ง์
๐ฉ ์ฌ์ฉ๋ฒ
def count_down(start):
n = start
while n > 0:
yield n
n -= 1
# ์ ๋๋ ์ดํฐ ์ฌ์ฉ
for number in count_down(3):
print(number) # 3, 2, 1 ์ถ๋ ฅ
โจ ๋ฐ์ฝ๋ ์ดํฐ ( decorator )
๐ฉ ๋ด์ฉ
1. ํจ์๋ ๋ฉ์๋์ ๋์์ ์์ ํ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํจ์
2. ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ํน์ ๊ธฐ๋ฅ์ ํ์ฅ/์์ => ์ฝ๋์ ์ฌ์ฌ์ฉ์ฑ/๊ฐ๋
์ฑ ํฅ์
3. ๋ด๋ถ์์๋ ์ธ์๋ก ๋ฐ์ ํจ์๋ฅผ ๊ฐ์ธ๋ (wrapper)์๋ก์ด ํจ์๋ฅผ ์ ์
4. ๊ฐ์ธ์ง ํจ์๋ ์๋ณธ ํจ์๋ฅผ ํธ์ถํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ถ๊ฐ์ ์ธ ์ฝ๋๋ฅผ ์คํ
5. ํจ์์ ์คํ์ ๋ก๊น
ํ ๋ ์ ์ฉ (ํจ์๊ฐ ํธ์ถ๋ ๋๋ง๋ค ๋ก๊ทธ ๊ธฐ๋ก)
6. ํจ์์ ๋ํ ์ก์ธ์ค ์ ์ด ๊ฐ๋ฅ => ex. ํน์ ์ฌ์ฉ์๊ฐ ์คํ ๊ถํ์ด ์๋์ง ํ์ธ
7. ํจ์์ ์คํ ์๊ฐ์ ์ธก์ ํ์ฌ ์ฑ๋ฅ ์ต์ ํ์ ํ์ฉ
๐ฉ ์ฌ์ฉ๋ฒ
# 1. say_hello() => decorator ๊ตฌํ (=my_decorator())
# 2. say_hello() ํธ์ถ => wrapper()๊ฐ ์คํ (๊ทธ ๋ด๋ถ์์ say_hello() ์คํ)
def my_decorator(func):
def wrapper():
print("Something is happening before the function is called.")
func()
print("Something is happening after the function is called.")
return wrapper
@my_decorator
def say_hello():
print("Sparta!")
say_hello()
----------------------------------------------------------------------
# ์ธ์๋ฅผ ๋ฐ๋ ๋ฐ์ฝ๋ ์ดํฐ
# ๋ฐ์ฝ๋ ์ดํฐ ์์ฒด์ ์ธ์๋ฅผ ์ ๋ฌ
# - ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์์ฑํ๋ ํจ์๋ฅผ ์ถ๊ฐ ์์ฑ
# - ์ด๋ฌํ ํํ์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ "๋ฐ์ฝ๋ ์ดํฐ ํฉํ ๋ฆฌ" ๋ผ๊ณ ๋ถ๋ฆ
# 1. ์ธ์๋ฅผ ๋ฐ๋ ๋ฐ์ฝ๋ ์ดํฐ ์์ฑ (repeat)
# 2. greet() ํจ์๊ฐ 3๋ฒ ํธ์ถ๋๋๋ก ๊ตฌํ
def repeat(num_times):
def decorator_repeat(func):
def wrapper(*args, **kwargs):
for _ in range(num_times):
result = func(*args, **kwargs)
return result
return wrapper
return decorator_repeat
@repeat(num_times=3)
def greet(name):
print(f"Hello {name}")
greet("Sparta")
๐ถ ๋๋์
1. ๋น์ ๊ณต์๋ ์ดํดํ ์ ์๋ AI ์ง์ ๋ด์ฉ์ด ์๊ฐ๋ณด๋ค ํฅ๋ฏธ์ง์งํ๋ค.
2. ๊ฐ์ธ์ ์ผ๋ก ์ฝ๋ฉ ๋ฌธ์ ํ๋ฉด์, ์ ๋ฆฌํ๋ ๊ฒ๋ค์ด ์ค์ ๊ฐ์์ ๊ฝค ๋์์ด ๋ง์ด ๋์๋ค.
3. 12์๊ฐ ๊ฝค๋ ๋์์ด๋ ๋จธ๋ฆฌ ์ํ๋ค..