반응형




+  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

+ Recent posts