반응형
+ if 조건문. if, else, if, elif, else
a=3
if a>1:
# 조건문이나 반복문에 영역을 : 으로 표시
print ("a is greater than 1")
# indentation을 반드시 맞춰야 한다.
pass ;
C에서 break와 같음.
if x<0:
x=0
elif x==0:
aaa
elif x==1:
aaa
bbb
else
ccc
...
-논리연산
and, or
((day2-day1)==(day1*0.3)) or ((day2-day1)>(day1*0.29))
False
cur_price >=4000 and cur_price<10000
True
#반복문 for, while
for a in [1,2,3]:
print a
i=0
while i<3:
i=i+1
if i%2==1: continue
print (i)
continue, break ; c/java 처럼 동일하게 지원한다.
pass ; 아무것도 안 함.
(sleep(0) 같은 거로 볼 수 있다..)
TIP!
; 리스트 내부의 원소 각각마다 작업하는 경우 보통은 리스트 변수 그대로 써서 작업하는데,
루프를 돌면서 리스트 자체가 변화될수 있는 경우... 루프에 영향을 줄 수 있다. 이를 방지하려면 리스트를 복사해서 루프를 돌아야 한다.
for w in words:
리스트 자체임. 리스트를 변화시키면 위험.
for w in words[:]:
복사본 words를 가지고 작업해서 안전
words.insert(0, w)
for i in range(0,11): # range 범위. 0~10까지.
print(i)
for obj in 리스트 또는 튜플. 딕셔너리!
튜플은 내용 자체의 변경이 불가. 더 빠름.
interest_stocks=(‘naver’,’daum’,’samsung’) # tuple
interest_stocks=[‘naver’,’daum’,’samsung’] # list
interest_stocks={‘naver’:10, ‘daum’:5, ‘samsung’:30}
for company, stock_num in interest_stocks:
print( ‘%s: buy %s’, %(company, stock_num) )
for company in interest_stocks.keys():
-range()함수를 for문에 이용할 수 있다. 숫자의 범위를 가지는 range객체
for i in range(10):
print(i)
0~9까지 출력.
#함수 Function
def sum(a,b):
return a+b
sum2 = sum
print( sum(3,4) )
print( sum2(5,6))
+ 복수개의 리턴 가능. 튜플이나 리스트를 리턴.
def calc_upper_lower(price):
offset=price*0.3
upper+= offet
lower-= offset
return (upper, lower)
(upper,lower) = calc_upper_lower(100)
+ 내장 함수
abs()
chr(i) ; ascii code character return. chr(65) -> A
enumerate() ; 시퀀스 자료형(리스트,튜플, 문자열)등을 입력받아 enumerate 객체로 변환. 인덱스값이 생성됨.
for i, stock in enumerate( [‘Naver’, ‘Daum’, ‘Samsung’]):
id(obj) ; 객체의 고유값 반환.
len(s) ; 원소 개수
list(s) ; 리스트로 변환. list(‘hello’) -> [‘h’,’e’,’l’,’l’,’o’]
list((1,2,3)) -> [1,2,3]
max(1,2,3), max([1,2,3]), min()
sorted() ; 정렬하여 리스트로 반환
int(s) ; 스트링을 수로 변환.
str(s) ; 수를 스트링으로 변환.
+namespace는 세 가지 영역이 존재. local, global, built-in.
이름 검사 규칙은 지역, 전역, 내장 순서로 한다. LGB 규칙.
n=10
def func(n):
n=n*10 # 여기서의 n은 로컬 n이다. 100이 기록된다. 그러나, global n과는 무관하다.
func(n) # n값이 global한 값 10이 들어간다.
print(n) # global n값인 10이 출력...
-> 함수내에서 글로벌 변수 access를 하려면???
def func():
global n # 글로벌변수 n을 사용하겠다. (값 변경시 global 선언 필요)
n=n*10
+가변인자
함수 정의시 파라미터앞에 *를 붙인다.
def func(*var1):
print("var1=", var1)
print("var2=", *var1)
print(*var1)
for i in var1:
print(i)
func(1)
var1=(1,)
var2= 1
1
func(1,2)
var1=(1,2)
var2=1 2
1 2
func(1,2,3,4)
var1=(1,2,3,4)
var2= 1 2 3 4
1 2 3 4
+ multiple key value argument
def myfunc(**kwargs):
for k, v in kwargs.iteritems(): ## 버전에 따라 iteritems()대신 items()사용(python3)
print(k,v)
myfunc(abc=123, efh=456)
+인자 기본값
def mul(a,b=10):
return a*b
- 주의 사항 ; 기본값 사용 인자가 나오면 뒤에 더 추가되는 인자들도 모두 기본값을 지정해 줘야 한다.
mul(3)
mul(4,5)
+++++++ 함수의 디폴트 값 변수 주의!!!
i=5
def f(arg=i):
print (arg)
i=6
f()
==> 5가 출력됨. 함수의 파라미터의 디폴트 값은 한 번만 초기화된다.
def f(a, L=[]):
L.append(a)
return L
f(1) => [1]
f(2) => [1, 2]
f(3) => [1,2,3]
==> 추가된다.??? L 객체가 mutable인 경우에는 위와 같이 유지된다. immutable 객체는 안됨.
=> 무조건 초기화 하려면????
def f(a, L=None):
if L is None :
L=[]
L.append(a)
return L
'Python' 카테고리의 다른 글
Python 강좌4 정규식 regular expression (0) | 2018.03.19 |
---|---|
Python 강좌3 자료형. 수/문자열 (1) | 2018.03.16 |
Python 강좌1. 산술연산, range (0) | 2018.03.14 |
Linear regression (0) | 2018.03.13 |
[python] 보간법 interpolate 사용하기 (0) | 2017.05.25 |