9μ£Όμ°¨ κ°μ μ£Όμ λ νμ΄μ¬ νλ‘μ νΈμ κΈ°λ³Έμ΄λΌκ³ ν μ μλ λͺ¨λκ³Ό ν¨ν€μ§ μ λλ€.
1. λͺ¨λκ³Ό ν¨ν€μ§μ μ΄ν΄
1) λͺ¨λμ κ°λ
λͺ¨λ(module)μ νλ‘κ·Έλλ° μΈμ΄μμλ§ λμ€λ κ°λ μ μλλ€. μλμ°¨ λΆνμ΄λ λ²½λ λ±λ νλμ λͺ¨λ κ°λ μΌλ‘ μ μλλ―μ΄ λͺ¨λμ μ΄λ―Έ νλ‘κ·Έλλ° μΈμ΄ μΈμλ λ§€μ° λ€μνκ² μ¬μ©λκ³ μλ€.
- λͺ¨λ module : μμ νλ‘κ·Έλ¨ μ‘°κ°μ λ»νλ©°, νλνλ μ°κ²°ν΄ μ΄λ€ λͺ©μ μ κ°μ§ νλ‘κ·Έλ¨μ λ§λ€κΈ° μν μμ νλ‘κ·Έλ¨ κ° λͺ¨λ μμ μ λ§λ€μ μν μ΄ μμ΄ μλ‘ λ€λ₯Έ λͺ¨λκ³Ό μΈν°νμ΄μ€(interface)λ§ μ°κ²°λλ©΄ μ¬μ©ν μ μλ€.
- μΈν°νμ΄μ€ : ν¨μμμ 맀κ°λ³μλ₯Ό μ λ ₯νλ μ½μμΌλ‘, ν΄λΉ λͺ¨λμ μ¬μ©νκΈ° μν΄μλ λͺ¨λ κ°μ μ°κ²°μ μν μ½μμ΄ νμνλ°, μ΄λ₯Ό μΈν°νμ΄μ€λΌκ³ νλ€.
νμ΄μ¬μμλ μ΄λ―Έ μ¬λ¬ λ² λͺ¨λμ μ¬μ©νμλ€. λ΄μ₯ λͺ¨λμ νμ΄μ¬μμ κΈ°λ³Έμ μΌλ‘ μ 곡νλ λͺ¨λμΈλ°, λνμ μΌλ‘ random λͺ¨λμ΄ μλ€. random λͺ¨λμ λμλ₯Ό μ½κ² μμ±μμΌ μ£Όλ λͺ¨λμ΄λ€.
- import random : import ꡬ문μ λ€μ μλ λͺ¨λμΈ randomμ μ¬μ©ν μ μλλ‘ νΈμΆνλΌλ λͺ λ Ήμ΄ randint( ) ν¨μ : λͺ¨λ μμ μλ ν¨μ
2) ν¨ν€μ§μ κ°λ
- ν¨ν€μ§(packages) : λͺ¨λμ λ¬Άμ
fromμ΄λΌλ ν€μλλ₯Ό μ¬μ©ν΄ λͺ¨λμ νΈμΆν κ²½μ°κ° μλλ°, μ΄λ λͺ¨λμ νΈμΆνκΈ° μν΄ ν¨ν€μ§λΆν° νΈμΆνλ λͺ λ Ήμ΄μ΄λ€.
λ€μ κ·Έλ¦Όκ³Ό κ°μ΄ νλμ ν¨ν€μ§ μμ μ¬λ¬ κ°μ λͺ¨λμ΄ μλλ°, μ΄ λͺ¨λλ€μ΄ μλ‘ ν¬ν¨ κ΄κ³λ₯Ό κ°μ§λ©° κ±°λν ν¨ν€μ§λ₯Ό λ§λ λ€.
2. λͺ¨λ λ§λ€κΈ°
1) λͺ¨λ λ§λ€κΈ° μ€μ΅
λͺ¨λμ λ§λλ λ°©λ²μ λν΄ μμ보μ. νμ΄μ¬μμλ .py νμΌ μμ²΄κ° λͺ¨λμ΄λ€. κ°μ₯ μ½κ² νμ΄μ¬ λͺ¨λμ λ§λλ λ°©λ²μ νμ¬ μ€μ΅ μ€μΈ λλ ν°λ¦¬μμ .py νμΌμ νλ λ§λ€κ³ , κ·Έ νμΌμ νμν ν¨μλ₯Ό μ μ₯νλ©΄ λλ€. κ·Έλ¬λ©΄ λ€λ₯Έ νμ΄μ¬ νμΌμ΄λ νμ΄μ¬ μ Έμμ importλ¬Έμ μ¬μ©νμ¬ ν΄λΉ λͺ¨λμ ν¨μλ₯Ό μ½κ² λΆλ¬λΌ μ μλ€.
- fah_converter.py : λͺ¨λμ λ§λ€μ΄ μ μ₯νκΈ°
- module_ex.py : ν΄λΌμ΄μΈνΈ μ½λ μμ±νμ¬ μ μ₯νκΈ°
κΈ°μ‘΄μ λ§λ μ½λ νμΌμ μ΄λ¦λ§ μ λ ₯νμ¬ νμΌ λ΄μ ν¨μλ₯Ό λΆλ¬ μ¬μ©ν μ μλ€. μ¦, .py μμ²΄κ° νλμ λͺ¨λμ΄ λλ€.
νΈμΆλ°λ λͺ¨λκ³Ό νΈμΆνμ¬ μ¬μ©νλ ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μ΄ κ°μ λλ ν°λ¦¬ μμ μμ΄μΌ νλ€.
2) λ€μμ€νμ΄μ€
- λ€μμ€νμ΄μ€(namespace) : λͺ¨λ νΈμΆμ λ²μλ₯Ό μ§μ νλ κ²
ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μ ν¨μ μ΄λ¦κ³Ό νΈμΆλ λͺ¨λμ ν¨μ μ΄λ¦μ΄ κ°μ κ²½μ°κ° λ°μν μλ μλλ°, μ΄ κ²½μ° νΈμΆλ λͺ¨λμ μ¬μ© λ²μλ₯Ό λͺ νν μ§μ ν΄μΌ νλ€. μ΄λ μ¬μ©νλ κ°λ μ΄ λ€μμ€νμ΄μ€μ΄λ€.
λ€μμ€νμ΄μ€λ₯Ό λ§λλ λ°©λ²μ λν΄ μμ보μ.
- λͺ¨λ μ΄λ¦μ alias λ₯Ό μμ±νμ¬ λͺ¨λ μμΌλ‘ μ½λλ₯Ό νΈμΆνλ λ°©λ²
μ리μμ€λ μΌμ’ μ λ³μΉμΌλ‘ λͺ¨λμ μ΄λ¦μ λ°κΏ λΆλ₯Ό λ μ¬μ©νλ€.
as ν€μλλ₯Ό μ¬μ©νμ¬ λͺ¨λμ μ΄λ¦μ κ°λ¨νκ² λ°κΏ μ¬μ©νλ©΄ λλ€.
νμ¬ μ¬μ©νλ ν΄λΌμ΄μΈνΈ νλ‘κ·Έλ¨μ κ°μ μ΄λ¦μ μ½λκ° μλλΌλ λͺ¨λ λ΄μμλ§ νμ νμ¬ νΈμΆν΄μΌ ν¨
- from ꡬ문μ μ¬μ©νμ¬ λͺ¨λμμ νΉμ ν¨μ λλ ν΄λμ€λ§ νΈμΆνλ λ°©λ²
‘from λͺ¨λλͺ import λͺ¨λ μμ μλ ν¨μλͺ ’μ ννλ‘ μμ±νλ©΄ ν΄λΉ λͺ¨λ μμ μλ ν¨μλ₯Ό κ°μ Έλ€ μ¬μ©ν μ μλ€. μ£Όμν μ μ fromμ κΌ λͺ¨λμ νΈμΆνκΈ° μν ν€μλκ° μλλΌλ κ²μ΄λ€.
- ν¨ν€μ§λ₯Ό νΈμΆνκ±°λ ν΄λΉ ν¨ν€μ§ μμ μλ λͺ¨λμ νΈμΆν λλ μ¬μ©ν μ μμ. fromμ μν μ ν¨ν€μ§μ ν¨ν€μ§, ν¨ν€μ§μ λͺ¨λ κ°μ μ€μ²© ꡬ쑰λ₯Ό νΈμΆνλ κ²μ.
- ν΄λΉ λͺ¨λ μμ μλ λͺ¨λ ν¨μ, ν΄λμ€, λ³μλ₯Ό κ°μ Έμ€λ λ³ν( * )λ₯Ό μ¬μ©νλ κ²
‘from λͺ¨λλͺ import *’μ ν΄λΉ λͺ¨λ μμ μλ λͺ¨λ μ¬μ© κ°λ₯ν 리μμ€λ₯Ό νΈμΆνλ€λ λ»
μ리μμ€λ₯Ό μμ±νμ¬ νΈμΆνλ λ°©λ²μ κ°μ₯ μ νΈν¨. κ°κ°μ ν¨μλ ν΄λμ€κ° μ΄λμ λμ€λμ§ λͺ νν νννλ κ²μ΄ μ’κΈ° λλ¬Έ.
3) λ΄μ₯ λͺ¨λμ μ¬μ©
**λ΄μ₯ λͺ¨λ(built-in module)**μ λν΄ μμ보μ. νμ΄μ¬μ νλ‘κ·Έλλ°μ μν΄ κΈ°λ³Έμ μΌλ‘ μ¬μ©ν΄μΌ νλ λ¬Έμμ²λ¦¬, μΉ, μν κ΄λ ¨ λ€μν λ΄μ₯ λͺ¨λμ μ 곡νλ©°, λ³λ€λ₯Έ μ‘°μΉ μμ΄ importλ¬Έ ν μ€λ‘ μ¬μ©μ΄ κ°λ₯νλ€.
- random λͺ¨λ
λμ μμ± λͺ¨λλ‘, μ μ λͺ¨λμ μμ±νλ randint( ), μμμ λμλ₯Ό μμ±νλ **random( )**μ΄ μμ
import random
print(random.randint (0, 100))
print(random.random())
- time λͺ¨λ
μκ°κ³Ό κ΄λ ¨λ λͺ¨λλ‘, μΌλ°μ μΌλ‘ μκ°μ λ³κ²½νκ±°λ νμ¬ μκ°μ μλ €μ€.
import time
print(time.localtime())
- urlib λͺ¨λ
μΉ κ΄λ ¨ λͺ¨λλ‘, μΉ μ£Όμμ μ 보λ₯Ό λΆλ¬μ΄.
λνμ μΈ request λͺ¨λμ μ¬μ©νλ©΄ νΉμ URL μ 보λ₯Ό λΆλ¬μ¬ μ μμ
import urlib.request
response = urlib.request.urlopen("<http://theteamlab.io>")
print(response.read())
3. ν¨ν€μ§ λ§λ€κΈ°
1) ν¨ν€μ§μ ꡬμ±
ν¨ν€μ§λ νλμ λν νλ‘μ νΈλ₯Ό μννκΈ° μν λͺ¨λμ λ¬Άμμ΄λ€. λͺ¨λμ νλμ νμΌλ‘ μ΄λ£¨μ΄μ Έ μκ³ , ν¨ν€μ§λ νμΌμ΄ ν¬ν¨λ λλ ν°λ¦¬(ν΄λ)λ‘ κ΅¬μ±λλ€. μ¦, ν¨ν€μ§λ μ¬λ¬ κ°μ .py νμΌμ΄ νλμ λλ ν°λ¦¬μ λ€μ΄κ° μλ κ²μ λ§νλ€.
νμ΄μ¬μ ν¨ν€μ§μλ μμ½μ΄κ° μλ€. μ£Όμν μ μ νμΌλͺ μμ²΄κ° μμ½μ΄λ₯Ό λ°λμ μ§μΌμΌλ§ μ€νλλ κ²½μ°κ° μλ€.
2) ν¨ν€μ§ λ§λ€κΈ° μ€μ΅
μΈν°λ·μμ μ£Όμ μ 보λ₯Ό λ°μμ λ°μ΄ν°λ² μ΄μ€μ μ μ₯νκ³ , νμν μ 보λ₯Ό κ³μ°νλ νλ‘κ·Έλ¨μ ν¨ν€μ§λ₯Ό λ§λ€μ΄λ³΄μ.
- λλ ν°λ¦¬ ꡬμ±νκΈ°
κ° ν¨ν€μ§ λ΄μμ λ€μ μΈλΆ ν¨ν€μ§μ λ§μΆ° λλ ν°λ¦¬λ₯Ό ꡬμ±νλ κ²μ λ§ν¨
ν¨ν€μ§ μ΄λ¦μ ‘roboadvisor’μ΄λ€. μ΄ ν¨ν€μ§μ κΈ°λ₯μ ν¬λ‘€λ§, λ°μ΄ν°λ² μ΄μ€, λΆμμ΄λΌκ³ νμ.
- crawling(ν¬λ‘€λ§) : μ£Όμ κ΄λ ¨ λ°μ΄ν°λ₯Ό μΈν°λ·μμ κ°μ Έμ€λ κΈ°λ₯
- database(λ°μ΄ν°λ² μ΄μ€) : κ°μ Έμ¨ λ°μ΄ν°λ₯Ό λ°μ΄ν°λ² μ΄μ€μ μ μ₯νλ κΈ°λ₯
- analysis(λΆμ) : ν΄λΉ μ 보λ₯Ό λΆμνμ¬ μλ―Έ μλ κ°μ λ½μλ΄λ κΈ°λ₯
λλ ν°λ¦¬ ꡬμ±μ μν΄ cmd μ°½μ λ€μ λͺ λ Ήμ μ λ ₯νμ¬ λλ ν°λ¦¬λ₯Ό μμ±νλ€.
mkdir roboadvisor
cd roboadvisor
mkdir crawling
mkdir database
mkdir analysis
- λλ ν°λ¦¬λ³λ‘ νμν λͺ¨λ λ§λ€κΈ°
λ§λ€μ΄μ§ λλ ν°λ¦¬μ νμν λͺ¨λμ λ§λ λ€. κ°κ°μ λλ ν°λ¦¬λ₯Ό νλμ ν¨ν€μ§λ‘ μ μΈνκΈ° μν΄μλ μμ½λ νμΌμ λ§λ€μ΄μΌ νλ€. λ°λ‘ __ init __.pyμ΄λ€.
- __ init __.py : κ° λλ ν°λ¦¬κ° ν¨ν€μ§μμ λνλ΄λ μμ½ νμΌ, νμΌμ μΆκ°νλ©΄ ν¨ν€μ§μ κΈ°λ³Έ κ΅¬μ‘°κ° λ§λ€μ΄μ§λ€.
κ° νμ ν¨ν€μ§μ ν¬ν¨λ λͺ¨λμ νμν κΈ°λ₯μ ꡬννκΈ° μν΄ μ½λλ₯Ό μμ±νλ€.
- **series.py, statics.py** : analysis λλ ν°λ¦¬μ μλ νμΌμ λ€μ΄κ° μ½λ. μ€ν μ¬λΆλ§ νμΈνκΈ° μν κ°λ¨ν μ½λμ΄λ€.
μμ±ν λͺ¨λμ μ€μ λ‘ μ¬μ©νκΈ° μν΄ νμ΄μ¬ μ Έμ λ€μκ³Ό κ°μ΄ μ λ ₯νλ€. μ΄λ roboadvisorμ μμ λλ ν°λ¦¬μμ νμ΄μ¬ μ Έμ μ€νν΄μΌ μ μμ μΌλ‘ μνλλ€.
from roboadvisor.analysis import series
print(series.series_test())
# series μΆλ ₯
roboadvisor λλ ν°λ¦¬ μμ ‘__ pycache __’ λΌλ λλ ν°λ¦¬κ° μμ±λλ€. μ΄ λλ ν°λ¦¬μλ ν΄λΉ νλ‘κ·Έλ¨μ΄ μλλ λ μ¬μ©νκΈ° μν λͺ¨λλ€μ μ»΄νμΌ κ²°κ³Όλ₯Ό μ μ₯νλ€. μ΄λ κ² λλ ν°λ¦¬κ° νλ² μμ±λλ©΄ κ·Έ μμ μμ ν΄λΉ λͺ¨λμ μμ ν΄λ κ²°κ³Όκ° λ°μλμ§ μλλ€. ν΄λΉ νλ‘κ·Έλ¨ λλ νμ΄μ¬ μ Έμ΄ μμ ν μ’ λ£ν ν μμ ν΄μΌ ν΄λΉ λͺ¨λμ κ²°κ³Όκ° λ°μλλ€. μΈν°νλ¦¬ν° μΈμ΄μ΄μ§λ§ λ΄λΆμ μΌλ‘ μ»΄νμΌ κ³Όμ λ κ±°μΉκ³ , ν¨μ¨μ μΌλ‘ μ¬μ©νκΈ° μν μ¬λ¬ κ°μ§ κ³Όμ μ κ±°μΉλ€λ κ²μ κΈ°μ΅νμ.
- λλ ν°λ¦¬ λ³λ‘ __ init __.py ꡬμ±νκΈ°
__ init __.py μ ν΄λΉ λλ ν°λ¦¬κ° νμ΄μ¬μ ν¨ν€μ§λΌκ³ μ μΈνλ μ΄κΈ°ν μ€ν¬λ¦½νΈλ‘, νμ΄μ¬μ κ±°μ λͺ¨λ λΌμ΄λΈλ¬λ¦¬μ μλ€.
import analysis
import crawling
import database
__all__ = ['analysis', 'crawling', 'database']
roboadvisor λλ ν°λ¦¬μ μλ νμΌ, νμ ν¨ν€μ§ μ΄λ¦μ μ λ ₯νμ¬ λ¦¬μ€νΈνμ λ³μλ₯Ό λ§λ ν κ°κ° importλ¬ΈμΌλ‘ νΈμΆν¨.
from . import series
from . import statics
__all__ = ['series', 'statics']
- __ main __.py νμΌ λ§λ€κΈ°
ν¨ν€μ§ μ체λ₯Ό μ€ννκΈ° μν΄ λ§λ¦. νΈμΆν΄μΌ νλ μ¬λ¬ λͺ¨λμ from, importλ¬ΈμΌλ‘ νΈμΆν ν, if ꡬ문 μλμ μ€μ μ€ν μ½λλ₯Ό μμ±ν¨.
- __ main__.py μ°Έκ³ νκΈ°
- μ€ννκΈ° (ν¨ν€μ§ μ΄λ¦λ§ νΈμΆ)
λͺ¨λ μ½λλ₯Ό μμ±ν ν ν΄λΉ ν¨ν€μ§μ μ·¨μμ λλ ν°λ¦¬μμ ‘python ν¨ν€μ§λͺ ’μ μ λ ₯νμ¬ μ€ννλ€.
python roboadvisor
series
parser
3) ν¨ν€μ§ λ€μμ€νμ΄μ€
ν¨ν€μ§ λ΄μμ λͺ¨λμ μλ‘ νΈμΆν λ μ¬μ©νλ ν¨ν€μ§ λ€μμ€νμ΄μ€(packages namespace)μ λν΄ μμ보μ.
ν¨ν€μ§ λ€μμ€νμ΄μ€λ ν¬κ² μ λ μ°Έμ‘°μ μλ μ°Έμ‘°λ‘ λλλ€. μ λ μ°Έμ‘°λ μ 체 ν¨ν€μ§μ ꡬ쑰λ₯Ό μκ°ν΄ λͺ¨λμ κ²½λ‘(path)λ₯Ό λͺ¨λ νΈμΆνλ κ²μ΄κ³ , μλ μ°Έμ‘°λ νΈμΆνλ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘ νΈμΆνλ κ²μ΄λ€.
- μ λ μ°Έμ‘°
from roboadvisor.analysis improt series
- reference1.py : λ€λ₯Έ μλΈ λͺ¨λμμ λͺ¨λμ μ½κ² νΈμΆν μ μμ
- from μ 체 ν¨ν€μ§.μλΈ ν¨ν€μ§ import λͺ¨λ
- μλ μ°Έμ‘°
- μλ μ°Έμ‘°μ ν΅μ¬μ νμ¬μ λλ ν°λ¦¬λ₯Ό κΈ°μ€μΌλ‘ λͺ¨λμ νΈμΆνλ κ²μ΄λ€.
- reference2.py
4. κ°μνκ²½ μ¬μ©νκΈ°
1) κ°μνκ²½μ κ°λ
νμ΄μ¬μμλ κ°μνκ²½μ΄λΌλ κ°λ μΌλ‘ νλ‘μ νΈ ν¨ν€μ§λ₯Ό κ΄λ¦¬νλ λꡬλ₯Ό μ 곡νλ€.
μΌλ°μ μΌλ‘ μ΄λ€ νλ‘μ νΈλ₯Ό μνν λλ νμ΄μ¬ μ½λλ₯Ό μνν κΈ°λ³Έ μΈν°ν리ν°λΏλ§ μλλΌ νλ‘μ νΈλ³λ‘ νμν μΆκ° ν¨ν€μ§κΉμ§ μ€μΉν΄μΌ νλ€. μ΄λ¬ν ν¨ν€μ§λ₯Ό μ€μΉν λ μλ‘ λ€λ₯Έ νλ‘μ νΈκ° μν₯μ μ£Όμ§ μλλ‘ λ 립μ μΈ νλ‘μ νΈ μν νκ²½μ ꡬμ±ν μ μλλ°, μ΄λ₯Ό ‘κ°μνκ²½’μ΄λΌκ³ νλ€. μ΄ κ°μνκ²½μ ꡬμΆνκΈ° μν΄ ν¨ν€μ§ κ΄λ¦¬ λꡬλ₯Ό μ¬μ©νλ€.
- virtualenv : νμ΄μ¬μμ κΈ°λ³Έμ μΌλ‘ μ 곡νλ κ°μνκ²½ λꡬ, pipλ‘ μλ‘μ΄ ν¨ν€μ§ μ€μΉ κ°λ₯
- conda : miniconda μ μ© ν¨ν€μ§ κ΄λ¦¬ λκ΅¬λ‘ κ°μνκ²½ κ΄λ¦¬μ ν¨ν€μ§ μ€μΉλ₯Ό κ°μ΄ν μ μμ
2) κ°μνκ²½ μ€μ νκΈ°
- κ°μνκ²½ λ§λ€κΈ°
conda create -n my_project python=3.4
- conda : μ€ν λͺ λ Ήμ΄, create : κ°μνκ²½μ λ§λλ μΈμ -n : nameμ μ€μλ§, my_project : ꡬμ±ν κ°μνκ²½ μ΄λ¦ python=3.9 : μ€μΉλλ νμ΄μ¬μ λ²μ
- κ°μνκ²½ μ€ννκΈ°
activate my_project
my_project κ°μνκ²½ νμ±ννλΌλ μ½λμ΄λ€. μ΄μ λΆν°λ ν΄λΉ κ°μνκ²½μ μΈν°ν리ν°λ§ μ€νλλ€.
- where python : μ€νλλ νμ΄μ¬ μμΉ μΆλ ₯
- deactivate : κ°μνκ²½ μ’ λ£
- κ°μνκ²½ ν¨ν€μ§ μ€μΉνκΈ°
conda install matplotlib
- matplotlib : λνμ μΈ κ·Έλν κ΄λ¦¬ ν¨ν€μ§
- κ°μνκ²½ ν¨ν€μ§ μ€μ΅νκΈ°
- matplotlib νμ©νμ¬ κ·Έλν μΆλ ₯ μ°μ΅νκΈ°
improt matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.ylabel('some numbers')
plt.show()