-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path0413.py
More file actions
184 lines (128 loc) · 3.91 KB
/
Copy path0413.py
File metadata and controls
184 lines (128 loc) · 3.91 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
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
part1. :
2 : numpy + pandas
# 전역변수 선언(global, v1 <<- 1 in r)
def f1() :
v1 = 1
print(v1)
def f2():
print(v1)
v1 = 10
f1() # 1 리턴, 함수 내부 선언앖이 더 우선순위
f2() # 10 리턴, v1이 전역변수 선언되어 있으므로
# 지역변수
def f1() :
v2 = 1
print(v2)
def f2():
print(v2)
f1() # 1
f2() # name 'v2' is not defined
# 전역변수 선언(global)
def f1() :
global v2 # 전역변수 선언
v2 = 1
print(v2)
def f2():
print(v2)
f1()
f2()
## 매개변수 전달 방식
#1) * : 가변형 인자 전달 방식, 내부 반복문 필요 (... in R)
def f1(*para) :
for i in para :
print(i)
f1(1,2,3,4)
#예제) 함수에 입력된 모든 값의 곱을 출력하는 함수 생성
def f2(*para) :
result = 1
for i in para:
result *= i
return result
f2(2,4,6,8)
#2) ** : key - vlaue 인자 전달 방식, 내부 반복문 필요 (... in R)
#para가 dict형식으로 전달된다.
d1 = {'a':1,'b':2,'c':3}
d1.get('a')
d1['a'] # 딕셔너리 key값으로만 구성된 오브젝트 형식
d1.keys() # 딕셔너리 key값으로만 구성된 오브젝트 형식, 딕셔너리 형태 유지
def f3 (**para):
for i in para.keys():
print(f'{i}의 값은 {para[i]}입니다.')
f3(a=1, b=2, c=3)
#3) zip : 동시에 변수를 묶어 전달시 필요
fsum(v1,v2)
def fsum(v1,v2):
result = []
for i,j in zip(v1,v2):
result.append(i+j)
return result
fsum([1,2,3],[10,20,30])
# 모듈의 생성
# - 모듈 : 함수의 묶음 (패키지 in R)
#정의된 여러개의 함수를 하나의 파이썬 파일(.py)에 저장하면 하나의 모듈 생성됨.
#(연습문제)
#두 수를 전달받아 두 수의 곱을 구하여 리스트에 저장하고
# 숫자가 큰 순서대로 정렬하는 사용자 정의함수 생성.
# 단, 사용자 정의함수에 두 수 이외의 reverse라는 키워드 인자를 입력받도록 하자
fprod(L1,L2,revserse = True)
L1 = [1,2,3,4]
L2 = [10,20,30,40]
def fprod(x,y,**para):
result = []
for i, j in zip(x,y):
result.append(i*j)
result.sort(reverse=para['reverse'])
return result
fprod(L1,L2,reverse = True)
def mul1 (v1,v2, reverse = True):
result = []
for i,j in zip(v1,v2):
result.append(i*j)
return (result)
mul1([1,2,3], [10,20,30])
# 외부파일 불러오기
1. open : 파일을 열어 메모리상으로 불러오는 작업
2. fetch : 선언된 cursor(임시메모리 공간)에 저장된 data를 한 건씩 불러오기
3. close : 객체 선언 완료 후 cursor에 할당된 메모리 영역 close
cursor 닫지 않으면 메모리 누수 현상이 발생할 수 있으므로 주의
c1 = open('read_test1.txt') # 커서 선언
v1 = c1.readline() # readline 한 줄씩 가져온다
print(v1)
v2 = c1.readline()
print(v2)
c1.close()
#--
c1 = open('read_test1.txt') # 커서 선언
while 1 :
v1=c1.readline()
if v1 =='':
break
print(v1, end = '')
c1.close()
#--
c1 = open('read_test1.txt') # 커서 선언
c1 = open('read_test1.txt','r') # 모드 설정 가능(r/w)
outlist = []
while 1 :
v1=c1.readline()
if v1 =='':
break
outlist.append(v1)
c1.close()
outlist
# readlines 전체 불러온다.
c1= open('read_test1.txt')
v1= c1.readlines()
c1.close()
v1
#[실습과제 : 아래와 같은 함수 생성]
f_read_txt(file,sep=' ', fmt = int)
[[1,2,3,4],[5,6,7,8]]
f_read_txt(file,sep=' ', fmt = str)
[['1','2','3','4'],['5','6','7','8']]
c1 = open('read_test1.txt') # 커서 선언, # 모드 설정 가능(r/w)
v1 = c1.readline() # fetch
c1.close # 메모리 정리(메모리 누수 방지)
#--
v1
'1 2 3 4\n'.strip().split(' ') # \n제거(strip)