-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsection06.py
More file actions
160 lines (113 loc) · 3.11 KB
/
Copy pathsection06.py
File metadata and controls
160 lines (113 loc) · 3.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
# Section06
# 파이썬 함수식 및 람다(lambda)
# 함수 정의 방법
# def 함수명(parameter):
# code
# 함수 호출
# 함수명(parameter)
# 함수 선언 위치 중요
# 예제1
def hello(world):
print("Hello", world)
hello("Python!")
hello(7777)
# 예제2
def hello_return(world):
val = "Hello " + str(world)
return val
str = hello_return("Python!!!!!")
print(str)
# 예제3(다중리턴)
def func_mul(x):
y1 = x * 100
y2 = x * 200
y3 = x * 300
return y1, y2, y3
val1, val2, val3 = func_mul(100)
print(val1, val2, val3)
print(type(val1), val2, val3)
# 예제3(데이터 타입 반환)
def func_mul2(x):
y1 = x * 100
y2 = x * 200
y3 = x * 300
return [y1, y2, y3]
lt = func_mul2(100)
print(lt, type(lt))
# 예제4
# args, kwargs
# *args
# 가변
# tuple 자료형으로 받는다.
# 매개변수의 수량을 정확하게 파악할수 없을때
# enumerate : index를 붙여준다.
def args_func(*args): # 매개변수명 자유롭게 변경 가능
for i, v in enumerate(args):
print(type(args),'{}'.format(i), v, end=' ')
args_func('Kim')
args_func('Kim', 'Park')
args_func('Kim', 'Park', 'Lee')
print()
# kwargs
# dictionaty 자료형으로 받는다.
# 가변
def kwargs_func(**kwargs): # 매개변수명 자유롭게 변경 가능
for v in kwargs.keys():
print(type(kwargs),'{}'.format(v), kwargs[v], end=' ')
kwargs_func(name1='Kim')
kwargs_func(name1='Kim', name2='Park')
kwargs_func(name1='Kim', name2='Park', name3='Lee')
print()
print()
# 전체 혼합
def example(arg_1, arg_2, *args, **kwargs):
print(arg_1, arg_2, args, kwargs)
example(10, 20, 'park', 'kim', 'lee', age1=33, age2=34, age3=44)
# 예제5
# 중첩 함수
def nested_func(num):
def func_in_func(num):
print('>>>>', num)
print("In func")
func_in_func(num + 100)
nested_func(1)
# python decorator 실습
import datetime
def datetime_decorator(func):
def decorated():
print (datetime.datetime.now())
func()
print (datetime.datetime.now())
return decorated
@datetime_decorator
def main_function():
print("Main function start")
main_function()
# 예제 6
# Hint
# x는 int형 반환은 list로 된다는 힌트
def func_mul3(x : int) -> list:
y1 = x * 100
y2 = x * 200
y3 = x * 300
return [y1, y2, y3]
print(func_mul3(5))
# 람다식 예제
# 메모리 절약, 가독성 향상, 코드 간결화
# 함수는 객체 생성 -> 리소스(메모리) 할당
# 람다는 즉시 실행(Heap 초기화) -> 메모리 초기화
# 일반적 함수 -> 변수 할당
def mul_10(num : int) -> int:
return num*10
var_func = mul_10
print(var_func)
print(type(var_func))
print(var_func(130))
# 람다식 전환
lambda_mul_10 = lambda num: num*10
print('>>>>',lambda_mul_10(10))
def func_final(x, y, func):
print(x * y * func(10))
func_final(10, 10, lambda_mul_10)
# 함수를 즉시 만들어서 실행 가능
print(func_final(10,10,lambda x: x*1000))