ν•¨μˆ˜(function)

쀑볡 μ½”λ“œ 제거 
μž¬μ‚¬μš© 
νŠΉμ • κΈ°λŠ₯ 1개 μ •μ˜

λ§€κ°œλ³€μˆ˜(parameter)와 인수(arguments)
λ§€κ°œλ³€μˆ˜ : ν•¨μˆ˜μ— μž…λ ₯으둜 μ „λ‹¬λœ 값을 λ°›λŠ” λ³€μˆ˜
인수 : ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬ν•˜λŠ” μž…λ ₯κ°’


μœ ν˜• 
1) μ‚¬μš©μžμ •μ˜ν•¨μˆ˜ : μ‚¬μš©μžκ°€ λ§Œλ“  ν•¨μˆ˜ 
2) λͺ¨λ“ˆν•¨μˆ˜(*.py) : 파이썬 제곡 ν•¨μˆ˜

 

 

 

 

 

μ‚¬μš©μžμ •μ˜ν•¨μˆ˜

ν˜•μ‹)
def ν•¨μˆ˜λͺ…([λ§€κ°œλ³€μˆ˜]) :
    μ‹€ν–‰λ¬Έ 
    μ‹€ν–‰λ¬Έ
    [return κ°’]


2μ°¨ 방정식 예

def fx(x) : # x : λ§€κ°œλ³€μˆ˜(μž…λ ₯) 
    y = x**2 + 2*x + 3
    return y # ν•¨μˆ˜ λ°˜ν™˜κ°’(좜λ ₯)


ν•¨μˆ˜ 호좜 

fx(1) # μ‹€μΈμˆ˜ : 1 -> 6
fx(2) # μ‹€μΈμˆ˜ : 2 -> 11
fx(3) # μ‹€μΈμˆ˜ : 3 -> 18

 

1. μΈμˆ˜κ°€ μ—†λŠ” ν•¨μˆ˜ 

def userFunc1() :
    print('userFunc1')
    print('μΈμˆ˜κ°€ μ—†λŠ” ν•¨μˆ˜')


ν•¨μˆ˜ 호좜 

userFunc1()

 

 


2. μΈμˆ˜κ°€ μžˆλŠ” ν•¨μˆ˜ 

def userFunc2(x, y) :
    z = x + y
    print('z=', z)


ν•¨μˆ˜ 호좜 

userFunc2(10, 20)

 



3. λ°˜ν™˜κ°’ μžˆλŠ” ν•¨μˆ˜ 

def userFunc3(x, y) :
    add = x + y
    sub = x - y
    mul = x * y
    div = x / y
    return add, sub, mul, div


x,y ν‚€λ³΄λ“œ μž…λ ₯ 

x = int(input('x : '))
y = int(input('y : '))


ν•¨μˆ˜ 호좜1 : μ—¬λŸ¬ 개 λ³€μˆ˜ λ°›κΈ° 

a, s, m, d = userFunc3(x, y) # (20, 5)
print(a, s, m, d) # 25 15 100 4.0

 

ν•¨μˆ˜ ν˜ΈμΆœ2 : ν•œ κ°œ λ³€μˆ˜ λ°›κΈ°

re = userFunc3(x, y) 
print(re) # (25, 15, 100, 4.0) - tuple 

print('κ³±μ…ˆ =', re[2])

 

 

 

 

 

λͺ¨λ“ˆ(module) ν•¨μˆ˜ 

파이썬 제곡 ν•¨μˆ˜(라이브러리 ν•¨μˆ˜)


μœ ν˜•
1) built-in λͺ¨λ“ˆ : λ‚΄μž₯된 λͺ¨λ“ˆ(λ‚΄μž₯ν•¨μˆ˜) 
2) import λͺ¨λ“ˆ : κ°€μ Έμ˜€κΈ° λͺ¨λ“ˆ  

 



1. built-in λͺ¨λ“ˆ

import builtins
dir(builtins) # λ‚΄μž₯ν•¨μˆ˜ or 클래슀 

dataset = list(range(1, 6))
print(dataset) # [1, 2, 3, 4, 5]


built-in λͺ¨λ“ˆ 제곡 λ‚΄μž₯ν•¨μˆ˜ 

sum(dataset) # 15
max(dataset) # 5
min(dataset) # 1
len(dataset) # 5

help(len) # ν•¨μˆ˜ μ‚¬μš©λ²•, 좜처 λ“± 제곡

* Help on built-in function len in module builtins:

 


2. import λͺ¨λ“ˆ

import statistics # 톡계관련 ν•¨μˆ˜ 제곡 - 방법1
from statistics import mean, median, stdev, variance # 방법2(ꢌμž₯)

* source ν™•인 : Ctrl + ν΄λ¦­ 

dir(statistics) # ν•¨μˆ˜ λͺ©λ‘ 

statistics.mean(dataset) # 3 - 방법1
mean(dataset) # 3 - 방법2
median(dataset) # 3
stdev(dataset) #  1.5811388300841898
variance(dataset) # 2.5

 

 

 

 

 

ν•¨μˆ˜ μ‘μš© 

1. ν…μŠ€νŠΈ μ „μ²˜λ¦¬ ν•¨μˆ˜ 
2. 톡계 계산 ν•¨μˆ˜ 


1. ν…μŠ€νŠΈ μ „μ²˜λ¦¬ ν•¨μˆ˜

단계1 : μ†Œλ¬Έμž λ³€κ²½  

def clean_text(texts) :
texts_re = [st.lower()  for st in texts]

         
단계2 : 숫자 제거 

import re # re λͺ¨λ“ˆ κ°€μ Έμ˜€κΈ°     
texts_re2 = [re.sub('[0-9]', '', st)  for st in texts_re]


단계3 : λ¬Έμž₯λΆ€ν˜Έ 제거 

punc_str = '[,.?!:;]'
texts_re3 = [re.sub(punc_str, '', st)  for st in texts_re2]

     
단계4 : 특수문자 제거 

spec_str = '[@#$%^&*()]'
texts_re4 = [re.sub(spec_str, '', st)  for st in texts_re3]

      
단계5 : 영문 제거

texts_re5 = [re.sub('[a-z]', '', st)  for st in texts_re4]

     
단계6 : 곡백(white space) 제거   

texts_re6 = [' '.join(st.split()) for st in texts_re5]
    
return texts_re6
texts = [' μš°λ¦¬λ‚˜λΌ    λŒ€ν•œλ―Όκ΅­, μš°λ¦¬λ‚˜λΌ%$ λ§Œμ„Έ', 'λΉ„μ•„κ·Έ&라 500GRAM μ •λ ₯ 졜고!', 'λ‚˜λŠ” λŒ€ν•œλ―Όκ΅­ μ‚¬λžŒ', 'λ³΄ν—˜λ£Œ 15000원에 평생 보μž₯ 마감 μž„λ°•', 'λ‚˜λŠ” 홍길동']

print('μ „μ²˜λ¦¬ μ „')
print(texts)


ν•¨μˆ˜ 호좜 

texts_re = clean_text(texts)

print('μ „μ²˜λ¦¬ ν›„')
print(texts_re)

 



2. 톡계 계산 ν•¨μˆ˜ : ν‘œλ³Έμ˜ λΆ„μ‚°/ν‘œμ€€νŽΈμ°¨ 계산 ν•¨μˆ˜ 

dataset = [2, 4, 5, 6, 1, 8]
len(dataset) #  6

ν‘œλ³Έμ˜ λΆ„μ‚° = sum((xλ³€λŸ‰ - μ‚°μˆ ν‰κ· )**2) / n-1
ν‘œλ³Έμ˜ ν‘œμ€€νŽΈμ°¨ = sqrt(λΆ„μ‚°)

import statistics as sts # 별칭 

sts.mean(dataset) # 4.333333333333333
sts.variance(dataset) # 6.666666666666666
sts.stdev(dataset) #  2.581988897471611


μ‚°μˆ ν‰κ·  ν•¨μˆ˜ 

def avg(dataset) :
    return sum(dataset) / len(dataset)


ν•¨μˆ˜ 호좜 

avg(dataset) # 4.333333333333333


ν‘œλ³Έμ˜ λΆ„μ‚°/ν‘œμ€€νŽΈμ°¨ ν•¨μˆ˜ 

def var_sd(dataset) :
    a = avg(dataset) # ν•¨μˆ˜ 호좜


list 내포 

diff = [ (data - a)**2  for data in dataset]
#print('diff =', diff)
    
var = sum(diff) / (len(dataset) - 1) # n-1    
sd = sts.sqrt(var)    
    
return a, var, sd # λ°˜ν™˜κ°’


ν•¨μˆ˜ 호좜 

avg, var, sd = var_sd(dataset)
print('μ‚°μˆ ν‰κ·  = ', avg)
print('ν‘œλ³Έ λΆ„μ‚° =', var)
print('ν‘œλ³Έ ν‘œμ€€νŽΈμ°¨ =', sd)

μ‚°μˆ ν‰κ·  =  4.333333333333333
ν‘œλ³Έ λΆ„μ‚° = 6.666666666666666
ν‘œλ³Έ ν‘œμ€€νŽΈμ°¨ = 2.581988897471611

 

 

 

 

 

ν•¨μˆ˜μ˜ κ°€λ³€μΈμˆ˜ 

ν•œ 개 κ°€μΈμˆ˜λ‘œ μ—¬λŸ¬ 개의 μ‹€μΈμˆ˜λ₯Ό λ°›λŠ” 인수 

볡수의 일반 인자λ₯Ό μ‚¬μš©μžμ—κ²Œ μž…λ ₯λ°›μ•„μ„œ μ‚¬μš©ν•  λ•Œ 쓰인닀 (μ •ν•΄μ§€μ§€ μ•Šμ€ 수의 일반 인자)
μ—¬λŸ¬κ°œμ˜ 인자λ₯Ό 받은 경우, ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλŠ” νŠœν”Œλ‘œ 받은 κ²ƒμ²˜λŸΌ μΈμ‹ν•œλ‹€.


ν˜•μ‹1) def ν•¨μˆ˜λͺ…(인수1, *인수2)
ν˜•μ‹2) def ν•¨μˆ˜λͺ…(인수1, **인수2)

 

 

1. κ°€λ³€μΈμˆ˜ 예 : tuple

def Func1(name, *names) :
    print(name) # 홍길동
    print(names) # ('μ΄μˆœμ‹ ', 'μœ κ΄€μˆœ', '강감찬') : tuple
    print(type(names)) # <class 'tuple'>


ν•¨μˆ˜ 호좜 

Func1("홍길동", "μ΄μˆœμ‹ ", "μœ κ΄€μˆœ", "강감찬")

 

 


2. κ°€λ³€μΈμˆ˜ 예 : dict(key:value)

def Func2(w, h, **other) :
    print('λͺΈλ¬΄κ²Œ :', w) # λͺΈλ¬΄κ²Œ : 65
    print('ν‚€ : ', h) # ν‚€ :  175
    print('기타 : ', other) # 기타 :  {'name': '홍길동', 'addr': 'μ„œμšΈμ‹œ'}


ν•¨μˆ˜ 호좜 

Func2(65, 175, name='홍길동', addr ='μ„œμšΈμ‹œ')



   
3. ν•¨μˆ˜λ₯Ό 인수둜 λ„˜κΉ€ 

def square(x) :
    return x**2 # x^2
    
def myFunc(func, datas) : # (ν•¨μˆ˜, 데이터셋)
    # list + for 
    result = [] # 계산 κ²°κ³Ό 
    
    for x in datas :         
        result.append(func(x)) # x**2


list 내포     

result2 = [func(x) for x in datas]     
return result, result2


ν•¨μˆ˜ 호좜 

datas = [2,4,6]
result, result2 = myFunc(square, datas) # μ‹€μΈμˆ˜ : ν•¨μˆ˜λͺ…     
print(result) # [4, 16, 36]
print(result2) # [4, 16, 36]



+ Recent posts