Python Basics for Data Science - PART 4

Python Basics for Data Science - PART 4

( 파이낸스 데이터 사이언스를 위한 파이썬 언어 기초 )

함수, 모듈

2017 FinanceData http://fb.com/financedata

함수(function)

파이썬에서 함수는 def 키워드와 ()를 써서 표현한다.

def 함수이름( 인자1, 인자2 ):
    실행할 내용
    return 반환값
In [1]:
def f():
    print("간단한 함수 호출")
    
f()
간단한 함수 호출
In [2]:
def my_func(s):
    """
    전달된 값을 출력하는 간단한 함수 입니다. (help)
    """
    print("전달된 값은 '{}'이고, 길이는 {} 입니다.".format(s, len(s)))
In [3]:
help(my_func)
Help on function my_func in module __main__:

my_func(s)
    전달된 값을 출력하는 간단한 함수 입니다. (help)

In [4]:
my_func("임의의 문자열")
전달된 값은 '임의의 문자열'이고, 길이는 7 입니다.
In [5]:
# 튜플을 반환 (다수의 값을 반환)

def func01(x):
    return x **2, x ** 3, x ** 4

func01(3)
Out[5]:
(9, 27, 81)
In [6]:
def my_sum(a, b):
    s = a + b
    return s

s = my_sum( 10, 20 )
print (s)
30
In [7]:
import math

math.sqrt(25)
Out[7]:
5.0
In [8]:
# math 안에 뭐가 들어 있나?

print( dir(math) )
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']
In [9]:
# 내장함수

data = [10, 20, 30, 50, 110, 2, 90, 30, 5]
print(max(data))
print(min(data))
print(type(data))
110
2
<class 'list'>
In [10]:
def get_sign(x): 
    if x > 0: 
        return '양수' 
    elif x < 0: 
        return '음수' 
    else: 
        return '영' 

for x in [-1, 0, 1]: 
    print (get_sign(x))
음수
영
양수

디폴트 아규먼트

함수의 뒤쪽 파라미터(tailing)에 기본값(fault value)을 부여할 수 있다.

def f(인자1, 인자2, 인자3=기본값, 인자4=기본값):
    함수의 몸체

f(1, 2)
In [11]:
def f(x, y, z = 0):
    print (x, y, z)
    
f(10, 20, z=50)
f(10, 20)
10 20 50
10 20 0

모듈(module)

파이썬의 기능은 모듈로 나눠져 있다. 다양하고 방대한 기능들을 제공하고 있으며 운영체제, 파일 입출력, 문자열 처리, 네트워크 프로그래밍 등 다양한 기능을 제공한다.

특정한 기능을 제공하는 함수들을 묶어서 하나의 단위로 제공하는데 이를 모듈(module)이라고 한다. (실제로는 하나의 .py 파일이다) 파이썬의 모듈을 사용하려면 import 문을 사용한다.

예를 들어, math 모듈을 사용하려면

In [12]:
import math

math 모듈을 가져와(import) math에 속한 함수(math.pow) 혹은 상수값(math.pi)등을 사용할 수 있다.

반지름이 3이 인 원의 넓이는 $ 3.14 * 3^2 $ 이다. 이것을 파이썬 코드로 써보면,

In [19]:
import math

r = 3
area = math.pi * math.pow(r, 2)
area
Out[19]:
28.274333882308138

모듈 들여다 보기

dir 함수로 모듈이 가지고 있는 이름들을 나열해 볼 수 있다. 즉, 어떤 함수와 상수들을 가지고 있는지 확인할 수 있다.

In [14]:
import math

print(dir(math))
['__doc__', '__loader__', '__name__', '__package__', '__spec__', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atan2', 'atanh', 'ceil', 'copysign', 'cos', 'cosh', 'degrees', 'e', 'erf', 'erfc', 'exp', 'expm1', 'fabs', 'factorial', 'floor', 'fmod', 'frexp', 'fsum', 'gamma', 'gcd', 'hypot', 'inf', 'isclose', 'isfinite', 'isinf', 'isnan', 'ldexp', 'lgamma', 'log', 'log10', 'log1p', 'log2', 'modf', 'nan', 'pi', 'pow', 'radians', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc']

각 이름에 대한 사용법을 다음과 같이 얻을 수 있다.

In [16]:
help(math.pow)
Help on built-in function pow in module math:

pow(...)
    pow(x, y)
    
    Return x**y (x to the power of y).

어떤 이름이던 help()로 사용법 혹은 설명을 얻을 수 있다.

help(math)

'*'를 사용하여 math 모듈에 있는 모든 이름들을 가져오면(import)하면 직접 이름을 사용할 수 도 있다.

# math에 속한 pi, pow를 가져온다
from math import pi, pow 

# math에 속한 모든 이름을 가져온다
from math import *

이 표현을 다음과 같이 쓸 수 도있다. (하지만 추천하지 않는다)

In [17]:
from math import *

r = 3
area = pi * pow(r, 2)
area
Out[17]:
28.274333882308138

pi 나 pow() 함수를 직접사용하기 때문에 코드가 간결해 보이지만, pi, pow 란 이름이 충돌하는 것을 예방하기 위해 함수가 속한 모듈을 명시적으로 지정해서 사용하는 것이 더 좋다.

가장 많이 사용하는 형태는 다음과 같다

import 모듈이름
import 모듈이름 as 새모듈이름
from 패키지 import 모듈이름

실제로 많이 사용하는 사례를 들면 다음과 같다

In [18]:
# requests 모듈을 임포트
import requests 

# numpy 모듈을 임포트하여 np로 새이름 부여
import numpy as np 

# datetime 패키지에 있는 datetime 모듈을 임포트
from datetime import datetime 

댓글