πŸ“š μŠ€ν„°λ””/파이썬 μŠ€ν„°λ”” κ°•μ˜μžλ£Œ

[2νŒ€/κΉ€μ„Έμ—°] 9μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€

μ•Œ 수 μ—†λŠ” μ‚¬μš©μž 2023. 5. 24. 21:44

9μ°¨μ‹œ-λͺ¨λ“ˆκ³Ό_νŒ¨ν‚€μ§€_κ°•μ˜μ•ˆ.pdf
1.29MB
9μ°¨μ‹œ_λͺ¨λ“ˆκ³ΌνŒ¨ν‚€μ§€_과제.pdf
0.15MB

9μ£Όμ°¨-λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€

λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€μ˜ 이해

:νŒŒμ΄μ¬μ€ λ‹€λ₯Έ μ‚¬λžŒμ΄ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ„ ν˜ΈμΆœν•˜κ³ ,

μžλ°”λŠ” ν•˜λ‚˜μ˜ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜κΈ° μœ„ν•œ μ½”λ“œλŠ” κΉ€

νŒŒμ΄μ¬μ€ 맀우 κ°„κ²°ν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μž„

νŒŒμ΄μ¬μ—μ„œ 이미 μž‘μ„±λœ ν”„λ‘œκ·Έλž¨μ„ λͺ¨λ“ˆμ΄λΌκ³  ν•˜κ³ , 이 ν”„λ‘œκ·Έλž¨μ˜ λ¬ΆμŒμ€ νŒ¨ν‚€μ§€μž„.

 

λͺ¨λ“ˆ

ex) 레고 λΈ”λŸ­, ν•˜λ‚˜ν•˜λ‚˜κ°€ λͺ¨λ“ˆ ( μžλ™μ°¨ λΆ€ν’ˆ, 벽돌 λ“±)

ν”„λ‘œκ·Έλž˜λ°μ—μ„œ λͺ¨λ“ˆμ€? >μž‘μ€ ν”„λ‘œκ·Έλž¨ 쑰각

ν•˜λ‚˜ν•˜λ‚˜ μ—°κ²°ν•΄ μ–΄λ–€ λͺ©μ μ„ 가진 ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“€κΈ° μœ„ν•œ μž‘μ€ ν”„λ‘œκ·Έλž¨

각 λͺ¨λ“ˆμ€ 각각의 역할이 μžˆμ–΄ μ„œλ‘œ λ‹€λ₯Έ λͺ¨λ“ˆκ³Ό μΈν„°νŽ˜μ΄μŠ€λ§Œ μ—°κ²°λ˜λ©΄ μ‚¬μš©κ°€λŠ₯

(μΈν„°νŽ˜μ΄μŠ€: ν•¨μˆ˜μ—μ„œ λ§€κ°œλ³€μˆ˜λ₯Ό μž…λ ₯ν•˜λŠ” 약속, ν•΄λ‹Ή λͺ¨λ“ˆμ„ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λͺ¨λ“ˆκ°„μ˜ 연결을 μœ„ν•œ 약속)

λ‚΄μž₯ λͺ¨λ“ˆμ€ νŒŒμ΄μ¬μ—μ„œ 기본적으둜 μ œκ³΅ν•˜λŠ” λͺ¨λ“ˆ

random λͺ¨λ“ˆ

 

import random #random을 μ‚¬μš©ν•  수 μžˆλ„λ‘ ν˜ΈμΆœν•˜λŠ” λͺ…λ Ήμ–΄(=ν•΄λ‹Ή λͺ¨λ“ˆμ„ λ©”λͺ¨λ¦¬μ— 올렀라)
random.randint(l, 1000) # ν•΄λ‹Ή ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λ§€κ°œλ³€μˆ˜λ₯Ό μ•Œμ•„μ•Ό 함
198

νŒ¨ν‚€μ§€

:νŒ¨ν‚€μ§€λŠ” λͺ¨λ“ˆμ˜ 묢음, from은 λͺ¨λ“ˆμ„ ν˜ΈμΆœν•˜κΈ° μœ„ν•΄ νŒ¨ν‚€μ§€λΆ€ν„° ν˜ΈμΆœν•˜λŠ” λͺ…λ Ήμ–΄

λͺ¨λ“ˆλ“€μ΄ μ„œλ‘œ 포함 관계λ₯Ό 가지며 κ±°λŒ€ν•œ νŒ¨ν‚€μ§€λ₯Ό λ§Œλ“¦

λͺ¨λ“ˆ λ§Œλ“€κΈ°

.py 파일 μžμ²΄κ°€ λͺ¨λ“ˆμž„

-κ°€μž₯ μ‰½κ²Œ λͺ¨λ“ˆμ„ λ§Œλ“œλŠ” 방법

.pyνŒŒμΌμ„ λ§Œλ“€κ³ , ν•΄λ‹Ή νŒŒμΌμ— ν•¨μˆ˜λ₯Ό μ €μž₯ν•˜λ©΄ 됨

λ‹€λ₯Έ 파이썬 νŒŒμΌμ—μ„œ importλ₯Ό μ‚¬μš©ν•΄ ν•΄λ‹Ή λͺ¨λ“ˆμ˜ ν•¨μˆ˜ λΆˆλŸ¬λƒ„


def covert_c_to_f(celcius_value):
    return celcius_value *9.0/5+3

ν•΄λ‹Ή λ‚΄μš©μ„ fah_converter의 파일λͺ…μœΌλ‘œ μ €μž₯함

import fah_converter # ν•΄λ‹Ή 파일의 μ΄λ¦„λ§Œ μž…λ ₯ν•˜λ©΄ 파일 λ‚΄μ˜ ν•¨μˆ˜λ₯Ό 뢀름

print("Enter a Celsius value:")
Celsius = float(input())
fahrenheit = fah_converter.covert_c_to_f(celsius) # μ‚¬μš©ν•¨
print("That’s", fahrenheit, "degrees Fahrenheit.")
Enter a Celsius value:
10
That's 50.0 degrees Fahrenheit.

-λ„€μž„μŠ€νŽ˜μ΄μŠ€

: λͺ¨λ“ˆ 호좜의 λ²”μœ„λ₯Ό μ§€μ •ν•˜λŠ” 것 / ν•¨μˆ˜ 이름과 호좜된 λͺ¨λ“ˆμ˜ ν•¨μˆ˜ 이름이 같은 경우

κΈ°μ‘΄ ν•¨μˆ˜ 이름과 호좜된 ν•¨μˆ˜μ˜ 이름이 같은 경우

 

1) λͺ¨λ“ˆ 이름에 μ•Œλ¦¬μ•„μŠ€(as)λ₯Ό μƒμ„±ν•˜μ—¬, λͺ¨λ“ˆ μ•ˆμœΌλ‘œ μ½”λ“œλ₯Ό 호좜

(μ•Œλ¦¬μ•„μŠ€λŠ” μΌμ’…μ˜ λ³„μΉ­μœΌλ‘œ, λͺ¨λ“ˆμ˜ 이름을 λ°”κΏ” λΆ€λ₯Ό λ•Œ μ‚¬μš©)

 

2) from ꡬ문을 μ‚¬μš©ν•˜μ—¬ λͺ¨λ“ˆμ—μ„œ νŠΉμ •ν•¨μŠ€, 클래슀만 호좜

from은 κΌ­ λͺ¨λ“ˆμ„ ν˜ΈμΆœν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œ X

νŒ¨ν‚€μ§€ 호좜, ν•΄λ‹Ή νŒ¨ν‚€μ§€ μ•ˆμ— μžˆλŠ” λͺ¨λ“ˆμ„ ν˜ΈμΆœν•  λ•Œλ„ from μ‚¬μš©

 

3) λͺ¨λ“ˆ μ•ˆμ— μžˆλŠ” λͺ¨λ“  ν•¨μˆ˜,클래슀,λ³€μˆ˜λ₯Ό κ°€μ Έμ˜€λŠ” * μ‚¬μš©

from λͺ¨λ“ˆλͺ… import * > ν•΄λ‹Ή λͺ¨λ“ˆμ•ˆμ— μžˆλŠ” λͺ¨λ“  μ‚¬μš©κ°€λŠ₯ν•œλ¦¬μ†ŒμŠ€ 호좜

 

-λ‚΄μž₯ λͺ¨λ“ˆ μ‚¬μš©

random λͺ¨λ“ˆ

:λ‚œμˆ˜ 생선 λͺ¨λ“ˆλ‘œ μž„μ˜μ˜ λ‚œμˆ˜λ₯Ό μƒμ„±ν•˜λŠ” random()ν•¨μˆ˜

import random
print(random.randint (0, 100))# 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 λͺ¨λ“ˆ

:μ›Ήμ£Όμ†Œμ˜ 정보λ₯Ό 뢈러옴

import urllib.request
response = urllib.request.urlopen("http://theteamlab.io")
#ν•΄λ‹Ή μ£Όμ†Œμ˜ HTML 정보λ₯Ό κ°€μ Έμ˜΄
print(response.read())

 

νŒ¨ν‚€μ§€ λ§Œλ“€κΈ°

ν•˜λ‚˜μ˜ λŒ€ν˜• ν”„λ‘œμ νŠΈλ₯Ό μˆ˜ν–‰ν•˜κΈ° μœ„ν•œ λͺ¨λ“ˆμ˜ 묢음

λͺ¨λ“ˆμ€ ν•˜λ‚˜μ˜ 파일둜 이루어지고, νŒ¨ν‚€μ§€λŠ” 파일이 ν¬ν•¨λœ λ””λ ‰ν† λ¦¬λ‘œ ꡬ성

μ—¬λŸ¬ 개의 .py파일이 ν•˜λ‚˜μ˜ 디렉토리에 λ“€μ–΄κ°€ μžˆλŠ” 것이 νŒ¨ν‚€μ§€

λ‹€λ₯Έ μ‚¬λžŒμ΄ λ§Œλ“  ν”„λ‘œκ·Έλž¨μ„ μ‚¬μš©ν•˜λŠ” 것을 라이브러리리고 ν•˜λŠ”λ° νŒŒμ΄μ¬μ€ νŒ¨ν‚€μ§€λ₯Ό ν•˜λ‚˜μ˜ 라이브러리둜 μ΄ν•΄ν•˜λ©΄ 됨

-νŒ¨ν‚€μ§€ λ§Œλ“€κΈ°

1) 디렉터리(폴더) κ΅¬μ„±ν•˜κΈ° / νŒ¨ν‚€μ§€ 이름 μ •ν•˜κΈ°( λŒ€λΆ€λΆ„ μ†Œλ¬Έμž 이용)

각 νŒ¨ν‚€μ§€ λ‚΄μ—μ„œ λ‹€μ‹œ μ„ΈλΆ€ νŒ¨ν‚€μ§€μ— 맞좰 디렉터리λ₯Ό ꡬ성

 

2) λ””λ ‰ν„°λ¦¬λ³„λ‘œ ν•„μš”ν•œ λͺ¨λ“ˆ λ§Œλ“€κΈ°

ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€λŠ” μ€‘μ²­λœ ꡬ쑰둜 λ§Œλ“€ 수 μžˆμ§€λ§Œ, 각각의 디렉터리λ₯Ό ν•˜λ‚˜μ˜ νŒ¨ν‚€μ§€λ‘œ μ„ μ–Έν•˜κΈ° μœ„ν•΄μ„œλŠ” μ˜ˆμ•½λœ νŒŒμΌμ„ λ§Œλ“€μ–΄μ•Ό 함 > init.py

init.py : 각 디렉터리가 νŒ¨ν‚€μ§€μž„μ„ λ‚˜νƒ€λ‚΄λŠ” μ˜ˆμ•½ 파일

 

3) λ””λ ‰ν„°λ¦¬λ³„λ‘œ init.py κ΅¬μ„±ν•˜κΈ°

__init__은 ν•΄λ‹Ή 디렉터리가 파이썬 νŒ¨ν‚€μ§€λΌκ³  μ„ μ–Έν•˜λŠ” μ΄ˆκΈ°ν™” μŠ€ν¬λ¦½νŠΈμž„

보톡 ν•΄λ‹Ή 파일 μ•ˆμ—λŠ” ν•΄λ‹Ή νŒ¨ν‚€μ§€κ°€ ν¬ν•¨λœ λͺ¨λ“ˆμ— λŒ€ν•œ 정보가 있음

 

4) __main.py파일 λ§Œλ“€κΈ°

νŒ¨ν‚€μ§€λ₯Ό ν•œ λ²ˆμ— μ‚¬μš©ν•˜κΈ° μœ„ν•΄ roboadvisor 디렉터리에 __**main.**py 파 일을 λ§Œλ“¦

main.py νŒŒμΌμ„ λ§Œλ“œλŠ” μ΄μœ λŠ” νŒ¨ν‚€μ§€ 자체λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•¨

 

5) μ‹€ν–‰ν•˜κΈ°

λͺ¨λ“  μ½”λ“œλ₯Ό μž‘μ„±ν•œ ν›„ ν•΄λ‹Ή νŒ¨ν‚€μ§€μ˜ μ΅œμƒμœ„ λ””λ ‰ν„°λ¦¬οΌˆμ˜ˆμ‹œμ—μ„œλŠ” roboadvisor의 μƒμœ„ λ””λ ‰ν„°λ¦¬οΌ‰μ—μ„œ ‘python νŒ¨ν‚€μ§€λͺ…'을 μž…λ ₯ν•˜μ—¬ 싀행함

 

-νŒ¨ν‚€μ§€ λ„€μž„μŠ€νŽ˜μ΄μŠ€

:νŒ¨ν‚€μ§€ λ‚΄μ—μ„œ λͺ¨λ“ˆμ„ μ„œλ‘œ ν˜ΈμΆœν•  λ•Œ μ‚¬μš©ν•˜λŠ” νŒ¨ν‚€μ§€ / λͺ¨λ“ˆκ³Ό 달리 νŒ¨ν‚€μ§€μ—μ„œμ˜ λ„€μž„μŠ€νŽ˜μ΄μŠ€λŠ” 훨씬 더 λ§Žμ€ 쀑간 단계가 μžˆμ–΄ λ³΅μž‘ν•¨

μ ˆλŒ€μ°Έμ‘° : 전체 νŒ¨ν‚€μ§€μ˜ ꡬ쑰λ₯Ό 생각해 λͺ¨λ“ˆμ˜ 경둜λ₯Ό λͺ¨λ‘ 호좜

__all__= οΌ»'analysis', 'crawling', 'database'οΌ½

from roboadvisor import analysis
from roboadvisor import crawling
from roboadvisor import database

 

νŒ¨ν‚€μ§€ 이름뢀터 μ‹œμž‘ν•΄μ„œ seriesκΉŒμ§€ λͺ¨λ“  경둜λ₯Ό μž…λ ₯

from 전체 νŒ¨ν‚€μ§€,μ„œλΈŒ νŒ¨ν‚€μ§€import λͺ¨λ“ˆ

μƒλŒ€μ°Έμ‘°: ν˜ΈμΆœν•˜λŠ” 디렉터리λ₯Ό κΈ°μ€€μœΌλ‘œ 호좜

from .series import series_test
from ..crawling.parser import parser_test