[3ν/κΉκ·λ¦¬] 9μ£Όμ°¨ νμ΄μ¬ μ€ν°λ - λͺ¨λκ³Ό ν¨ν€μ§
#1. λͺ¨λκ³Ό ν¨ν€μ§μ μ΄ν΄
νμ΄μ¬μ λ§€μ° κ°κ²°ν νλ‘κ·Έλλ° μΈμ΄
κ·Έ κ°μ₯ ν° μ΄μ
- λ§μ μ¬λλ€μ΄ μ΄λ―Έ νμ΄μ¬μΌλ‘ νλ‘κ·Έλ¨μ μμ±ν΄λμκΈ° λλ¬Έ!
λͺ¨λ(module) → μ΄λ―Έ μμ±λ νλ‘κ·Έλ¨
ν¨ν€μ§ (packages)→ μ΄λ° νλ‘κ·Έλ¨μ, λͺ¨λμ λ¬Άμ
λͺ¨λμ κ°λ
- λ§μ μ νλ€μ μ¬λ¬ λΆνμΌλ‘ ꡬμ±λλ©°, λͺ¨λνλμ΄ νλ§€λκ³ μμ
- λνμ μΈ μ ; λ κ³ λΈλ‘
- νλλ§μΌλ‘λ μ ν but, λ€λ₯Έ λΈλ‘κ³Ό μ°κ²° λ° ν° λ°νμ 쑰립ν¨μΌλ‘μ¨ κ±°λν μνλ λ§λ€ μ μμ
- μ΄λ λ κ³ λΈλ‘ νλνλκ° λ°λ‘ λͺ¨λ
- μλμ°¨ λΆν, λ²½λ .. λ±
- λνμ μΈ μ ; λ κ³ λΈλ‘
ν¨ν€μ§μ κ°λ
- λͺ¨λμ λ¬Άμ
- λͺ¨λ νΈμΆ
- ‘from’ μ¬μ©
- λͺ¨λ νΈμΆνκΈ° μν΄ ν¨ν€μ§λΆν° νΈμΆνλ λͺ λ Ήμ΄
#2. λͺ¨λ λ§λ€κΈ°
λͺ¨λ λ§λ€κΈ° μ€μ΅
- in νμ΄μ¬ → .py νμΌ μμ²΄κ° λͺ¨λμ
- κ°μ₯ μ½κ² νμ΄μ¬ λͺ¨λ λ§λλ λ°©λ²
- λλ ν°λ¦¬μμ .pyνμΌ λ§λ€κ³
- κ·Έ νμΌμ νμν ν¨μ μ μ₯
- ⇒ λ€λ₯Έ νμΌμμ importλ¬Έ μ¬μ©νμ¬ ν΄λΉ λͺ¨λ ν¨μ λΆλ¬λΌ μ μμ
- κ°λ¨ν λͺ¨λ λ§λ€μ΄ 보기(1)→ .pyλ‘ μ μ₯ν΄μΌ ν¨
#νμΌ μ΄λ¦ : fah_converter.py
def convert_c_to_f(celcius_value):
return celcius_value * 9.0 / 5 + 32
→ .pyλ‘ μ μ₯ν΄μΌ ν¨
λͺ¨λ λΆλ¬μ μ¬μ©ν΄λ³΄κΈ°
#νμΌ μ΄λ¦ : module_ex.py
#1
import fah_converter
print("Enter a celsisus value:")
celsius = float(input())
fahrenheit = fah_converter.cover_c_to_f(celsius)
print("That's", fahrenheit, "degrees Fahrenheit.")
λ€μμ€νμ΄μ€(Namespace)
- λͺ¨λ νΈμΆμ λ²μ μ§μ νλ κ²
- νλμ λͺ¨λ μμ ν΄λμ€ & ν¨μ & λ³μ μ‘΄μ¬ → import μ¬μ©νμ¬ νΈμΆ κ°λ₯
- but, ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨ ν¨μ μ΄λ¦κ³Ό νΈμΆλ λͺ¨λ ν¨μ μ΄λ¦ κ°μ κ²½μ° μμ
- μ€μ λλ κΈ°μ‘΄ ν΄λμ€ μμλ°μ μ¬μ©νλ€κ° λ°μν μλ μμ
- ⇒ νΈμΆλ λͺ¨λμ μ¬μ© λ²μ λͺ νν μ§μ ν΄μΌ ν¨!
- λ€μμ€νμ΄μ€ λ§λ€κΈ°
- λͺ¨λ μ΄λ¦μ μ리μμ€(alias) μμ± → λͺ¨λ μμΌλ‘ μ½λ νΈμΆνλ λ°©λ²
- μ리μμ€ → μΌμ’
μ λ³μΉ, λͺ¨λμ μ΄λ¦ λ°κΏ λΆλ₯Ό λ μ¬μ©
- λͺ¨λμ μ΄λ¦μ΄ λ무 κΈΈκ±°λ λ€λ₯Έ μ½λμ ν·κ°λ¦¬λ μ΄λ¦μΌ λ
- as ν€μλ μ¬μ© → λͺ¨λ μ΄λ¦ κ°λ¨ν λ°κΏ μ¬μ©
- μ리μμ€ → μΌμ’
μ λ³μΉ, λͺ¨λμ μ΄λ¦ λ°κΏ λΆλ₯Ό λ μ¬μ©
- μμ
import fah_converter as fah print(fah.covert_c_to_f(41.6)) #106.88000000000001
- μ€λͺ
- fah_converter → fahλ‘ μ΄λ¦ λ³κ²½νμ¬ νΈμΆ
- ν΄λΉ λͺ¨λ μ ν¨μ ν΄λμ€ λ³μ νΈμΆνμ¬ μ¬μ©νκΈ°
- [λͺ¨λλͺ .ν¨μλͺ (λλ ν΄λμ€λͺ /λ³μλͺ )]
- from ꡬ문 μ¬μ© → λͺ¨λμμ νΉμ ν¨μ λ° ν΄λμ€λ§ νΈμΆνλ λ°©λ²
- μμ
from fah_converter import covert_c_to_f print(covert_c_to_f(41.6)) #106.88000000000001
- μ€λͺ
- ‘from λͺ¨λλͺ import λͺ¨λ μμ ν¨μλͺ ’
- μ΄κ²½μ°, λ³λμ λͺ¨λλͺ μ°μ§ μμλ λ¨λ μ¬μ© κ°λ₯
- μ£Όμν μ
- fromμ κΌ λͺ¨λ νΈμΆνκΈ° μν ν€μλκ° μλ
- ν¨ν€μ§ νΈμΆ λ° ν΄λΉ ν¨ν€μ§ μ λͺ¨λ νΈμΆν λλ μ¬μ©νκΈ°μ
- λ³ν(*) μ¬μ©
- ν΄λΉ λͺ¨λ μμ μλ λͺ¨λ ν¨μ, ν΄λμ€. λ³μ κ°μ Έμ΄
- μ¬μ© λ°©λ²
- ‘from λͺ¨λλͺ import *’
- μμ
from fah_converter import * print(convert_c_to_f(41.6)) #106.88000000000001
- λͺ¨λ μ΄λ¦μ μ리μμ€(alias) μμ± → λͺ¨λ μμΌλ‘ μ½λ νΈμΆνλ λ°©λ²
- μΈ κ°μ§ μ€ κ°μ₯ μ νΈνλ λ°©λ²?
- μΌλ°μ μΌλ‘ μ리μμ€ μμ±νμ¬ νΈμΆ
- κ°κ°μ ν¨μ λ° ν΄λμ€κ° μ΄λμ λμ€λμ§ λͺ νν νννλ κ²μ΄ μ’κΈ° λλ¬Έ!
- ⇒ κ°μ ν¨μλΌλ convert_c_to_fλ³΄λ€ fah.convert_c_to_fλΌκ³ νκΈ°
- μΌλ°μ μΌλ‘ μ리μμ€ μμ±νμ¬ νΈμΆ
λ΄μ₯λͺ¨λμ μ¬μ©
νμ΄μ¬ → νλ‘κ·Έλλ° κ°λ°μν΄ κΈ°λ³Έμ μ¬μ©ν΄μΌ νλ λ¬Έμ μ²λ¦¬, μΉ, μνκ³Ό κ΄λ ¨λ λ€μν λ΄μ₯ λͺ¨λ μ 곡/ λ³λ€λ₯Έ μ‘°μΉ μμ΄ importλ¬Έ ν μ€λ‘ μ¬μ© κ°λ₯
- random λͺ¨λ
- λμ μμ± λͺ¨λ
- λͺ¨λ ꡬμ±
- randint(); μ μ λͺ¨λ μμ±
- random(); μμ λμ μμ±
- μ¬μ© μμ
import random #0~100μ¬μ΄ μ μ λμ μμ± print(random.randint(0,100)) #7 print(random.random()) #0.056550421789531846
- time λͺ¨λ
- μκ°κ³Ό κ΄λ ¨
- μκ° λ³κ²½ λ° νμ¬ μκ° μλ €μ€
- λνμ μΌλ‘ νλ‘κ·Έλ¨ λμνλ νμ¬ μκ° μ μ μμ
- μ¬μ© μμ
#νμ¬ μκ° μΆλ ₯ import time print (time.localtime()) #time.struct_time(tm_year=2018, tm_mon=8, tm_mday=19, tm_hour=22, tm_min=9, tm_sec=21, tm_wday=6, tm_yday=231, tm_isdst=0)
- urllib λͺ¨λ
- μΉκ³Ό κ΄λ ¨λ¨
- λνμ μΌλ‘ request λͺ¨λμ μ¬μ©νλ©΄ νΉμ URLμ μ 보 λΆλ¬μ¬ μ μμ
- μ¬μ© μμ
import urllib.request response = urllib.request.urlopen("<http://theteamlab.io>") print(response.read())
- urllib.request.urlopen()
- κ΄νΈ μμ νΉμ μΉ μ£Όμ μ λ ₯νλ©΄ ν΄λΉ μ£Όμμ HTML μ 보 κ°μ Έμ΄
- μ΄μΈμ λ€μν νμ΄μ¬ λͺ¨λμ?
- κ°μ₯ μ’μ λ°©λ²μ ꡬκΈμ μμΉ!
- νΉν μμ΄λ‘..
- if νλ‘κ·Έλλ° μνμ κ±Έλ¦° μκ° μμλ΄λ λͺ¨λ μ°Ύκ³ μΆλ€λ©΄?
- λ€μκ³Ό κ°μ λ°©μμΌλ‘ κ²μμ΄ μ
λ ₯
- python time module run time
- λ λ€λ₯Έ λ°©λ²?
- νμ΄μ¬ μ½λ¦¬μμ λ¬Έμ
#3. ν¨ν€μ§ λ§λ€κΈ°
ν¨ν€μ§μ ꡬμ±
- νλμ λν νλ‘μ νΈλ₯Ό μννκΈ° μν λͺ¨λμ λ¬Άμ
- λͺ¨λμ ꡬμ±
- νλμ νμΌ
- ν¨ν€μ§ ꡬμ±
- νμΌμ΄ ν¬ν¨λ λλ ν°λ¦¬(ν΄λ)λ‘ κ΅¬μ±
- μ¦, μ¬λ¬ κ°μ .py νμΌ → νλμ λλ ν°λ¦¬μ λ€μ΄κ° μλ κ²
- λΌμ΄λΈλ¬λ¦¬
- λ€λ₯Έ μ¬λμ΄ λ§λ νλ‘κ·Έλ¨μ λΆλ¬μ μ¬μ©νλ κ²
- νμ΄μ¬ → ν¨ν€μ§κ° νλμ λΌμ΄λΈλ¬λ¦¬μ
- ν¨ν€μ§μ μμ½μ΄
ν¨ν€μ§ λ§λ€κΈ° μ€μ΅
- μΈν°λ·μμ μ£Όμ μ 보 κ°μ Έμ λ°μ΄ν°λ² μ΄μ€μ μ μ₯ + νμν μ 보 κ³μ° νλ‘κ·Έλ¨
1λ¨κ³: λλ ν°λ¦¬ ꡬμ±
- ν¨ν€μ§ μ΄λ¦
- ‘roboadvisor’
- λλΆλΆ μλ¬Έμ μ¬μ©
- κΈ°λ₯
- crawling(ν¬λ‘€λ§)
- μ£Όμ κ΄λ ¨ λ°μ΄ν°λ₯Ό μΈν°λ·μμ κ°μ Έμ€λ κΈ°λ₯
- database(λ°μ΄ν°λ² μ΄μ€)
- κ°μ Έμ¨ λ°μ΄ν°λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ κΈ°λ₯
- analysis(λΆμ)
- ν΄λΉ μ 보λ₯Ό λΆμνμ¬ μλ―Έ μλ κ°μ λ½μλ΄λ κΈ°λ₯
- crawling(ν¬λ‘€λ§)
- κ° ν¨ν€μ§ λ΄ → μΈλΆ ν¨ν€μ§μ λ§μΆ° λλ ν°λ¦¬ ꡬμ±νκΈ°
- cmd μ°½μ λ€μ λͺ λ Ή μ λ ₯ → λλ ν°λ¦¬ μμ±
mkdir roboadvisor cd roboadvisor mkdir crawling mkdir database mkdir analysis
- λλ ν°λ¦¬ ꡬμ±λ¨
- 2λ¨κ³: λλ ν°λ¦¬λ³λ‘ νμν λͺ¨λ λ§λ€κΈ°
- νλμ ν¨ν€μ§ μ€μ²©λ κ΅¬μ‘°λ‘ λ§λ€ μ μμΌλ―λ‘ ν¨ν€μ§ μμ λ νλμ ν¨ν€μ§ λ€μ΄κ° μ μμ
- but, κ° λλ ν°λ¦¬λ₯΄ νλμ ν¨ν€μ§λ‘ μ μΈνκΈ° μν΄μλ μμ½λ νμΌ λ§λ€μ΄μΌ ν¨
- ⇒ ‘init.py’
- ‘init.py’ ?
- κ° λλ ν°λ¦¬κ° ν¨ν€μ§μμ λνλ΄λ μμ½ νμΌ
- κΈ°λ³Έ .py λͺ¨λ νμΌ + κ° λλ ν°λ¦¬μ ‘init.py’ νμΌ μΆκ° → ν¨ν€μ§ κΈ°λ³Έ ꡬ쑰 λ§λ€μ΄μ§
- κ° λλ ν°λ¦¬ μμ .pyνμΌ λ§λ€μ΄ ꡬμ±!
- κ° νμ ν¨ν€μ§ ν¬ν¨λ λͺ¨λμ νμν κΈ°λ₯μ ꡬν
- analysis λλ ν°λ¦¬
def series_test(): print('series')
def statics_test(): print("statics")
- analysis λλ ν°λ¦¬
- μ€μ μ¬μ© → νμ΄μ¬ μ Έμ μ λ ₯
→ roboadvisorμ μμ λλ ν°λ¦¬μμ νμ΄μ¬ μ Έ μ€νν΄μΌ μ μμ μνfrom roboadvisor.analysis import series series.series_test() #series
- μ€λͺ
- ‘**pycache**’ μμ±
- ν΄λΉ νλ‘κ·Έλ¨ μλλ λ μ¬μ©νκΈ° μν λͺ¨λλ€μ μ»΄νμΌ κ²°κ³Ό μ μ₯
- μ΄ν κ·Έ μμ μμ ν΄λΉ λͺ¨λμ μγ μ ν΄λ κ²°κ³Όκ° λ°μλμ§ X
- μμ ν μ’ λ£λ ν μμ ν΄μΌ κ²°κ³Ό λ°μλ¨
- ‘**pycache**’ μμ±
- 3λ¨κ³: λλ ν°λ¦¬λ³λ‘ ‘init.py’ ꡬμ±νκΈ°
- 4λ¨κ³: ‘main.py’ νμΌ λ§λ€κΈ°
- ν¨ν€μ§λ₯Ό ν λ²μ μ¬μ©νκΈ° μν΄ roboadvisor λλ ν°λ¦¬μ main,py ν μΌμ λ§λ¦
- λ§λλ μ΄λ₯
- ν¨ν€μ§ μ체 μ€ν μν΄
- νμΌ κ΅¬μ±
- κΈ°λ³Έ νΈμΆν΄μΌ νλ μ¬λ¬ λͺ¨λ
- from & importλ‘ νΈμΆ → ‘if name == ‘ main ‘ μλμ μ€μ μ€νμ½λ μμ±
from analysis.series import series_test from crawling.parser import parser_test if name == ’ main series_test() parser_test()
- κΈ°λ³Έ νΈμΆν΄μΌ νλ μ¬λ¬ λͺ¨λ
- 5λ¨κ³: μ€ννκΈ° (ν¨ν€μ§ μ΄λ¦λ§ νΈμΆ)
- λͺ¨λ μ½λ μμ± ν ν΄λΉ ν¨ν€μ§ μ΅μμ λλ ν°λ¦¬μμ ‘python ν¨ν€μ§λͺ ’ μ λ ₯
python roboadvisor series parser
ν¨ν€μ§ λ€μμ€νμ΄μ€
- λͺ¨λ μλ‘ νΈμΆν λ μ¬μ©νλ ν¨ν€μ§ λ€μμ€νμ΄μ€μ λν΄ μμ보μ
- λͺ¨λκ³Ό λ¬λ¦¬ ν¨μ¬ λ λ§μ μ€κ° λ¨κ³λ₯Ό κ±°μ³ λ³΅μ‘ν¨
- μ’
λ₯
- μ λ μ°Έμ‘°
- μ 체 ν¨ν€μ§μ ꡬ쑰 μκ° → λͺ¨λμ κ²½λ‘ λͺ¨λ νΈμΆ
- μλ μ°Έμ‘°
- νΈμΆνλ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘ νΈμΆ
- μ λ μ°Έμ‘°
- μ λ μ°Έμ‘°
- μλ μ°Έμ‘°
#4. κ°μνκ²½ μ¬μ©νκΈ°
κ°μνκ²½μ κ°λ
- λ€λ₯Έ κ°λ°μκ° λ§λ ν¨ν€μ§λ₯Ό μ§μ μ¬μ©νλ λ°©λ²
- κ° νλ‘μ νΈμ λ§λ νλ‘κ·Έλλ° νκ²½μ μ€μ νλ κ²μ΄ μ’μ
- ex. λ°μ΄ν° λ€λ£¨λ νλ‘μ νΈ / μΉ λ€λ£¨λ νλ‘μ νΈ → μ±κ²©μ΄ λ§€μ° λ€λ¦
- νμ΄μ¬ → μ΄λ° κ²½μ° μ§μ μν΄ κ°μνκ²½μ΄λΌλ κ°λ μΌλ‘ ν¨ν€μ§ κ΄λ¦¬ λꡬ μ 곡
- μΌλ°μ μΌλ‘ νλ‘μ νΈ μνν λ
- μ½λ μνν κΈ°λ³Έ μΈν°ν리ν°
- νλ‘μ νΈλ³λ‘ νμν μΆκ° ν¨ν€μ§κΉμ§ μ€μΉ
- ⇒ μλ‘ λ€λ₯Έ νλ‘μ νΈ μν₯ μ£Όμ§ μλλ‘ λ 립μ μΈ νλ‘μ νΈ μν νκ²½μ γ ꡬμ±ν μ μλλ° μ΄λ₯Ό κ°μνκ²½μ΄λΌκ³ ν¨
- λνμ μΈ κ°μν©κ²½ λꡬ
- virtualenv
- νμ΄μ¬ κΈ°λ³Έ μ 곡 κ°μνκ²½ λꡬ
- pip μ΄μ©νμ¬ μλ‘μ΄ ν¨ν€μ§ μ€μΉ κ°λ₯
- conda
- minicondaμ μ μ© ν¨ν€μ§ κ΄λ¦¬ λꡬ
- κ°μνκ²½ κ΄λ¦¬ + ν¨ν€μ§ μ€μΉ
- virtualenv
κ°μνκ²½ μ€μ νκΈ°
- conda μ¬μ© → κ°μνκ²½ μ€μ λ°©λ² μμ보μ
- κ°μνκ²½ λ§λ€κΈ°
- cmd μ°½μ λ€μκ³Ό κ°μ λͺ λ Ήμ΄ μ λ ₯
conda create -n my_project python=3.4
- μ€λͺ
- conda
- μ€ν λͺ λ Ήμ΄
- create
- κ°μνκ²½ λ§λλ μΈμ(argument)
- -n
- name μ μ€μλ§
- my_project
- ꡬμ±ν κ°μνκ²½ μ΄λ¦
- python=3.4
- μ€μΉλλ νμ΄μ¬μ λ²μ
⇒ ‘my_projectλΌ λ μ΄λ¦μ κ°μνκ²½μ python 3.4 λ²μ μΌλ‘ λ§λ€μ΄λΌ.’
- λͺ
λ Ήμ΄ μ
λ ₯ν
- ‘Proceed ([y]/n)?’ → y μ λ ₯ → μ€μΉ μμ
- κ°μνκ²½ μ€ννκΈ°
- κ°μνλ©΄ λ§λ€λ©΄ λνλλ νλ©΄μμ μ€λͺ ν΄μ€
- ‘activate my_project’
- ν΄λΉ κ°μνκ²½μ νμ±ννλΌλ μλ―Έ
- νμ
- [activate κ°μνλ©΄ μ΄λ¦]
- μ΄μ λΆν° ν΄λΉ κ°μνκ²½μ μΈν°ν리ν°λ§ μ€νλ¨
- ‘where python’
- νμ¬ μ€νλλ νμ΄μ¬μ μμΉ μΆλ ₯
- ‘deactivate’
- κ°μνκ²½ μ’ λ£
- κ°μνκ²½ ν¨ν€μ§ μ€μΉνκΈ°
- ‘conda install matplotlib’
- νμ
- [conda install μ€μΉν ν¨ν€μ§ μ΄λ¦]
- matplotlib
- κ·Έλν κ΄λ¦¬ ν¨ν€μ§
- νμ
- ‘conda install matplotlib’
- κ°μνκ²½ ν¨ν€μ§ μ€μ΅νκΈ°
- matplotlib μ€μ΅
- μ½λ
import matplotlib.pyplot as pit pit.plot([1, 2, 3, 4]) #[<matplotlib.lines.Line2D object at 0x000001E8CC52C080>] plt.ylabel('some numbers') #Text(0, 0.5,'some numbers') plt.show()
- matplotlib μ€μ΅