파이썬은 다른 언어와 달리 중괄호 대신 공백문자('\t')를 사용해서 코드를 구조화한다.
for x in array:
if x<pivot:
less.append(x)
else:
greater.append(x)
콜론은 코드 블록의 시작을 의미하며 블록이 끝날 때까지 블록 안에 있는 코드는 모두 같은 크기만큼 들여 써야한다.
a=1;b=2;c=3
파이썬의 문장은 세미콜론으로 끝낼 필요가 없다. 하지만 하나의 줄에서 여러 문장을 구분하기 위해서는 세미콜론을 사용한다.
파이썬 언어의 중요한 특징은 객체 모델의 일관성이다.
모든 숫자, 문자열, 자료구조, 함수, 클래스, 모듈 등은 파이썬 객체 안에 저장된다. 각 객체는 연관된 '자료형'과 '내부 데이터'를 가지고 있다. 이 특징은 함수마저도 하나의 객체로 간주함으로써 파이썬을 매우 유연한 언어로 만든다.
# 뒤에 오는 문자는 모두 파이썬 인터프리터에서 무시된다. 이를 이용해서 코드에 주석을 달 수 있다.
print("안녕")
#print("메롱")
이 경우 메롱은 출력되지 않는다.
함수는 괄호와 0개 이상의 인자를 전달해서 호출할 수 있다. 반환되는 값은 선택적으로 변수에 대입할 수 있다.
result=f(x,y,z) #함수의 결과값(반환값)을 변수에 대입하는 경우
g() # 그렇지 않은 경우
메서드는 다음 문법으로 호출할 수 있다.
obj.some_method(x,y,z)
함수와 메소드의 차이에 대해서 헷갈릴 수 있다. 그 차이점은 따로 설명해놓았다.
파이썬에서 변수에 값을 대입하면 대입 연산자 오른쪽에 있는 객체에 대한 '참조'를 생성하게 된다. 다음 예시를 보자
a=[1,2,3]
b=a
어떤 언어에서는 이렇게 대입하면 a가 가지는 데이터 [1,2,3]이 복사가 된다. 하지만, 파이썬에서는 a와b가 같은 객체를 가르키게 된다.
a.append(4)
print(b)
#b=[1,2,3,4]
파이썬에서 참조에 대한 의미와 언제, 어떻게, 왜 데이터가 복사되는지 이해하는 것은 대규모 데이터 셋을 다룰 때 특히 중요하다.
파이썬에서는 모듈은 파이썬 코드가 담긴 .py파일이다. 다음과 같은 모듈이 있다고 하자.
#some_module.py
pi=3.14159
def f(x):
return x+2
def g(a,b):
return(a+b)
some_module.py에 정의된 객체에 접근하려면 다음과 같이 작성한다.
import some_module
result=some_module.f(5)
pi=sime_module.pi
만약, 추가하고자 하는 모듈이 현재 작업 파일과 다른 경로에 위치한다면 아래 과정을 통해서 path를 추가해주어야 한다.
import sys
sys.path.append('/path/to/module') # 모듈이 있는 경로 추가
import some_module
as예약어를 사용하면 모듈을 다른 이름으로 임포트할 수 있다.
import numpy as np
np.arange(10)
파이썬에서 리스트, 사전, numpy 배열 등 대부분의 객체는 변경 가능하다(뮤터블).즉, 객체나 값의 내용을 바꿀 수 있다는 말이다.
a_list=['foo',2,[4,5]]
a_list[2]=[3,4]
print(a_list)
#['foo',2,[3,4]]
문자열이나 튜플은 변경 불가능하다(이뮤터블).
a_tuple=(3,4,5)
a_tuple[2]=6
#TypeError
숫자를 위한 파이썬의 주요 자료형은 int와 float이다.
문자열은 작은 따옴표나 큰따옴표로 둘러싸서 표현할 수 있다.
※파이썬의 문자열은 변경 불가능하다 (이뮤터블 객체).
string='hello'
string[2]='f'
#TypeError
문자열은 리스트나 튜플 같은 다른 순차적인 자료형(시퀀스)와 같이 취급된다.
list(string) #이전에 정의된 변수 string
#['h','e','l','l','o']
문자열 객체는 포맷에 따라 문자열을 대체하여 새로운 문자열을 반환하는 format 메서드를 가지고있다.
print("{0}:{1}".format(a,b))
포맷 메서드는 다양한 옵션과 메서드가 있으므로 더 알아보길 추천한다.
파이썬에서 불리언 값은 True, False다. 비교와 조건식은 True, False로 해석된다. 불리언 값은 and와 or 예약어로 조합하여 활용할 수 있다.
None은 파이썬에서 사용하는 널(null)값이다. 어떤 함수에서 명시적으로 값을 반환하지 않으면 묵시적으로 None을 반환한다. 또한, 함수 인자의 기본값으로 사용되기도 한다.
def add_and_maybe_multiply(a,b,c=None):
result=a+b
if c is not None:
result*=c
return result
파이썬은 다른 언어와 마찬가지로 조건절과 반복문 그리고 표준 흐름 제어를 위한 예약어를 가지고있다.
if문은 조건을 검사하여 그 조건이 True일 경우 if 블록 내의 코드를 수행한다.
부가적으로 하나 이상의 elif블록과 다른 모든 조건이 False인 경우에는 else 블록을 가진다.
if x<0:
print("it is negative")
elif x==0:
print("equal to zero")
else:
print("it is positive")
for문은 리스트나 튜플 같은 컬렉션이나 이터레이터(iterator)를 순회한다.
continue 예약어를 사용해서 남은 블록을 건너뛰고 다음 순회로 넘어갈 수 있고, break 예약어를 사용해서 빠져나갈 수 있다.
for i in range(4):
for j in rnage(4):
if j<i:
break
print((i,j))
#(0,0)
#(1,0)
#(1,1)
#(2,0)
.....
while 문은 조건을 명시하여 해당 조건이 False가 되거나 break를 사용해서 명시적으로 반복을 끝낼 때까지 블록 내의 코드를 수행한다.
x=256
total=0
while x>0:
if total>500:
break
total+=x
x=x//2
pass는 아무 것도 하지 않음을 나타낸다.이는 블록 내에서 어떤 작업도 실행하지 않을 때 사용한다.
if x<0:
print("음수")
elif x==0:
pass
else:
print("양수")
range 함수는 연속된 정수를 넘겨주는 이터레이터를 반환한다.
인자로 start,end,step을 지정해줄 수 있다.
list(range(0,5,1))
#[0,1,2,3,4]
해당 챕터에서는 간단하게 파이썬 언어의 사용법을 다루었고, 굳이 설명할 필요 없는 부분은 과감히 생략하였다.