59doit
[Python] 함수 사용 활용 본문
반응형
가변함수
튜플확인
def test(*arg) :
print(type(arg))
test(1,2) #<class 'tuple'>
튜플형
def Func1 (name, *names) :
print(name)
print(*names)
Func1("가","나","다")
# <출력>
# 가
# 나다
튜플형 _ 한줄로 print
def Func1 (name, *names) :
print(name,end=' ')
print(*names)
Func1("가","나","다")
# <출력>
# 가 나 다
- end 뒤에 쌍따옴표 말고 ->('') 여야 한줄에 나옴 print는 기본적으로 한줄띄어서 출력된다
딕트형
def emp_func(name,age,**other) :
print(name)
print(age)
print(other)
emp_func("JAIN", 25 ,addr='la', height = 160, weight=50)
# <출력>
# JAIN
# 25
# {'addr': 'la', 'height': 160, 'weight': 50}
- name,age 차례대로 불러오고 other은 나머지 다 출력된다
통계량 구하는 함수
일반함수
def adder(x,y) :
add = x+y
return add
print('add=',adder(20,30))
# <출력> add= 50
람다함수
lambda x,y : x+y -> 람다함수
print("add=",(lambda x,y:x+y)(20,30))
# <출력> add= 50
스코프
지역변수
x=50
def local_fuc(x) :
x+=50
local_fuc(x)
print('x=',x)
# <출력> x= 50
전역변수
x=50
def global_fuc() :
global x
x+=50
global_fuc()
print('x=',x)
# <출력> x= 100
일급함수 & 외부함수
일급함수 ; 함수를 객체로 만들어서 사용
def a() : # 외부
print('a 함수')
def b(): #내부
print('b 함수')
return b # 내부함수의 b 값을 외부함수로 호출
b= a() # <출력> a 함수
b() # <출력> b 함수
b=a() : 외부함수 호출 ; 함수 a()를 호출하면 내부함수 b()가 호출된다
a() : 내부함수 호출
함수 클로저 ;
반환된 tot, avg 함수는 외부함수가 종료되어도 객체로 만들어지기 때문에 합계와 평균을 만들수있다
data = list(range(1,11))
def outer_func(data) :
dataset=data # data 값인 1~10까지의 list
def tot(): # 내부함수
tot_val = sum(dataset)
return sum(dataset)
def avg(tot_val) : # 구한 합계 tot_val 을 avg로 명칭
avg_val = tot_val / len(dataset) #전체합계를 dataset의 len로 나누면 평균값
return avg_val
return tot,avg # 내부반환
tot,avg = outer_func(data) # ★★★외부함수호출
tot_val=tot () # tot_val 은 내부함수 def tot() 에서 return sum(dataset) 한 값
avg_val=avg (tot_val) # avg_val 은 def avg(tot_val) 에서 return avg_val 한 값
print('tot=',tot_val)
print('avg=',avg_val)
# <출력>
# tot= 55
# avg= 5.5
산포도 중첩함수
from statistics import mean #import
from math import sqrt
data=[1,2,3.5,4.5,5,6,7]
def func1(data) :
dataset=data
def avg_func(): # 평균
avg_val = mean(dataset)
return avg_val
def var_func(avg): # 분산 (변량-평균)**2
diff=[(data-avg)**2 for data in dataset]
print(sum(diff))
var_val = sum(diff)/(len(dataset)-1)
return var_val
def sd_func(var): #표준편차 sd_func(var) () 안에 넣어줘야함
sd_val=sqrt(var)
return sd_val
return avg_func,var_func,sd_func #inner 변환
avg,var,sd = func1(data) # ★★외부함수호출
avg_val = avg()
var_val = var(avg_val)
sd_val = sd(var_val)
print('평균=',avg_val)
print('분산=',var_val)
print('표준편차=',sd_val)
# <출력>
# 27.357142857142858
# 평균= 4.142857142857143
# 분산= 4.559523809523809
# 표준편차= 2.1353041491843285
획득자 & 지정자 (getter & setter)
def m_func(n) :
n_val = n #내부함수에 영향을 미침
def getter() :
return n_val
def setter(val) : #setter(val) >> val 은 함수안의 새로운 결과값으로 정의
nonlocal n_val # nonlocal 은 항상 실행문 위에 먼저 내부함수마다 써줘야함
n_val =val
return getter,setter
getter, setter = m_func(100)
print('n=',getter()) # <출력> n=100
setter(200) # setter 200으로 수정 후 getter값도 바뀜
print('n=',getter()) # <출력> n=200
"getter(획득자) 값 setter(지정자) 공유 = nonlocal 함수"
래퍼함수
def wrap(func) :
def decorated() :
print('안녕하세요') # 시작
func() # @wrap def hello 으로 지정한 인수 넘어올 것
print('반갑습니다') # 종료
return decorated
@wrap
def hello() :
print('여러분')
hello() # 함수호출
# <출력>
# 안녕하세요
# 여러분
# 반갑습니다
반응형
'Programming > Python(파이썬)' 카테고리의 다른 글
[Python] 재귀함수 (0) | 2022.11.02 |
---|---|
[Python] inner_func (0) | 2022.11.02 |
[Python] 함수사용 (0) | 2022.11.01 |
[Python] 자료구조 (0) | 2022.11.01 |
[Python] 리스트내포 (0) | 2022.10.31 |
Comments