파이썬 시작하기
파이썬의 자료형에는 숫자 / 문자열 / 리스트 / 튜플 / 딕셔너리 / 집합 등이 있다. 자바에서 기본 자료형과 참조 자료형으로 여러 가지 자료형을 만들 수 있는 것과는 차이가 있다.
파이썬의 자료형은 자료형의 상태에 따라 참 / 거짓을 판단할 수 있도록 설계되었다.
자료형 | True / False |
비어있는 문자열 | False |
공백만 존재하는 문자열 | False |
값이 존재하는 문자열 | True |
비어있는 리스트 | False |
값이 존재하는 리스트 | True |
숫자 1 | True |
숫자 0 | False |
숫자 -1 | True |
비어있는 딕셔너리 | False |
값이 존재하는 딕셔너리 | True |
비어있는 튜플 | False |
값이 존재하는 튜플 | True |
위와 같이 자료형의 상태에 따라 참 / 거짓이 결정된다.
자바에서는 변수를 선언할 때 자료형을 함께 선언했어야 했는데, 파이썬은 변수에 저장된 값을 스스로 판단해서 자료형을 알아낸다.
좀 더 자세하게 들어가면, 파이썬에서 사용하는 변수는 객체를 가리킨다. 리스트형 객체, 정수형 객체, 문자열형 객체.. 파이썬에서 다루는 모든 데이터는 객체이다. list1 = [1,2,3,4] 라는 코드가 있으면 list1는 변수의 이름이고, [1,2,3,4]라는 리스트형 객체가 저장된 메모리의 위치를 가리키고 있다.
파이썬도 객체지향언어이기 때문에 자바에서 배운 객체지향개념을 생각하면 이해하기 쉬울 것 같다.
자바 언어와의 차이점을 비교하며 파이썬을 공부해보자.
0. 세미콜론
파이썬에서는 문장의 마지막에 세미콜론을 사용하지 않는다.
1. 인터프리터 언어
파이썬은 인터프리터 언어이다. 컴파일 언어인 자바와 달리 소스코드를 한줄 한줄 읽으며 바로 실행한다.
2. 나눗셈
자바에서 / 연산은 몫을 반환하고 % 연산은 나머지를 반환했는데, 파이썬에서는 반환 형식이 다르다.
/ 연산을 통해 소숫점을 포함한 몫을 반환하고 // 연산으로 몫을 반환한다. (%는 동일하게 나머지를 반환한다)
3. 중괄호
자바에서는 반복문, 조건문, 클래스 등에 중괄호를 사용해 범위를 구분했는데, 파이썬은 중괄호를 사용하지 않는다.
대신 : 문자와 들여쓰기(Tab)를 통해 범위를 구분한다. 자바에서는 들여쓰기를 코드의 가독성을 위해서 사용했다면, 파이썬에서는 코드의 정상적인 실행을 위해 들여쓰기를 사용한다.
4. 따옴표
파이썬에서는 문자열을 (큰 따옴표 / 작은 따옴표 / 따옴표 3개) 로 문장을 둘러싸서 표현한다.
따옴표를 문자열 내부에 포함시킬 때 사용할 수 있다. (백슬래시를 통한 방법도 가능하다)
따옴표 3개를 연속 사용은 예시를 통해 살펴보자.
multiline = '''
asdfasdf
asdfasaasf
asfqwer
'''
# 줄바꿈을 쉽게 구현할 수 있다.
5. 문자열
자바에서도 Concatenation이 가능하지만, 파이썬에서는 문자열에 대해 곱셈도 가능하다.
파이썬도 문자열을 문자들의 배열로 생각해 문자열을 인덱싱 할 수 있다.
(사실 파이썬에서 문자열은 immutable한 자료형이고, 요소값을 변경할 수 없다.)
파이썬에서는 직관적으로 문자열을 Slice 할 수 있다. 예시를 통해 살펴보자.
a = "abcdefg"
print(a[0:4])
#abcd
0번째 문자부터 3번째 문자까지 출력하라는 의미이다. 이 때 인덱스 값으로 음수를 가질 수 있다.
a = "abcdefg"
print(a[4:])
#efg
시작 번호의 문자부터 문자열의 끝까지 뽑아낸다. 반대로 사용할 수도 있다. (시작부터 인덱스 전까지 뽑아내는 방식)
파이썬에서는 문자열에 관련한 유용한 함수들을 많이 지원하니 필요할 때 찾아서 사용하자.
6. 리스트와 튜플
파이썬에는 리스트라는 자료형이 있다. 자바에서의 배열과 유사한 자료형인데..
배열보다 훨씬 간단하게 사용할 수 있다.
리스트를 선언할 때 크기를 선언하지 않아도 되고, 요소의 추가와 제거가 자유로우며 리스트 안에 다양한 자료형이 원소로 들어올 수 있다.
이 외에도 리스트 관련 여러 가지 유용한 함수들을 제공해 배열보다 훨씬 쉽게 다룰 수 있다.
튜플은 원소 값을 변화시킬 수 없다는 부분을 제외하면 리스트와 동일한 자료형이다.
7. 딕셔너리
키와 값으로 구성된 순서가 없는 자료형으로 자바의 해시테이블과 유사하다.
키 값으로 리스트는 쓸 수 없고 튜플은 쓸 수 있다.
8. 집합
set() 함수로 집합 자료형을 만들 수 있다. 매개변수로는 문자열이나 리스트를 사용할 수 있다.
집합 자료형은 자료의 중복을 허용하지 않고 순서가 없다.
9. 조건문
파이썬에서는 콜론과 들여쓰기를 사용해서 조건문을 구현한다.
if 1==2:
print(13)
else:
print(123)
들여쓰기를 할 때는 Tab이나 띄어쓰기를 사용하면 되는데, 둘 중 하나만 사용하는 편이 좋다.
조건절에서 사용하는 비교연산자는 자바와 동일하게 사용하지만, 논리연산자는 형태가 좀 다르다. ( && and / or || )
파이썬은 여러 가지 간편하게 사용할 수 있는 조건문들을 제공한다.
list1 = [1,2,3,4]
if(1 in list1):
print(1324)
elif(3 not in list):
print(131)
x in s / x not in s 처럼 직관적으로 코드를 작성할 수 있다.
자바에서의 else if가 파이썬에서는 elif로 쓰인다.
10. 반복문
while문은 들여쓰기와 콜론 말고는 자바와 별 차이가 없다.
for문에 대해 알아보자.
파이썬은 변수를 선언할 때 자료형을 함께 선언할 필요가 없어서 for문을 좀 더 유동적으로 사용할 수 있다.
list1 = [1,2,3,4,5]
list2 = ['a','b','c','d']
for i in list1:
print(i)
for k in list2:
print(k)
변수 i나 k에 리스트 요소를 하나씩 대입한 다음 문장을 실행한다.
이걸 리스트의 마지막 요소까지 반복한다.
numrange1 = range(10)
# 0 1 2 3 4 5 6 7 8 9 숫자가 들어간 range 객체를 생성
numrange2 = range(1,11)
# 1 2 3 4 5 6 7 8 9 10 숫자가 들어간 range 객체를 생성
# 시작 숫자는 포함되지만 끝 숫자는 포함되지 않는다
for i in range(1,10):
temp = int(i)
print("%d번째 숫자입니다." % temp)
sum = 0
for i in range(1,11):
sum = sum + i
print(sum)
파이썬에서 for문은 range함수와 함께 쓰이는 경우가 많다.
public class javafile {
public static void main(String[] args){
int[] arr = {1,2,3,4,5};
for(int i=0; i<arr.length; i++){
System.out.println(arr[i]);
}
}
}
list1 = [1,2,3,4,5]
for i in range(len(list1)):
print(list1[i])
자바와 파이썬으로 구현한 코드이다. 차이점을 생각해 보자.
for i in range(1,10):
print(i, end = " ")
파이썬에서 print를 작성하면 기본적으로 한 줄을 띄어서 출력한다.
이 때 입력 인수 end를 추가해 주면 출력 형식을 바꿀 수 있다.
a = [1,2,3,4]
result = [num*3 for num in a]
파이썬에서는 리스트 안에 for문을 작성해 코드를 간단하게 작성할 수 있다.
11. 함수
파이썬도 자바와 마찬가지로 반복되는 작업을 함수로 만들어서 코드를 효율적으로 작성한다.
def multiply(a,b):
return a*b
print(multiply(3,4))
자바에서는 메서드를 함수로 활용했는데, 파이썬에서는 def를 사용해서 함수를 정의한다.
def alladd(*element):
sum =0
for i in range(len(element)):
sum = sum + element[i]
return sum
print(alladd(1,2,3,4,5,6,7,8,9,10))
인자로 몇 개의 원소를 받을 지 모를 때 위와 같이 *를 사용할 수 있다.
받은 인자를 튜플로 변환해서 작업을 수행한다.
12. 입력
a = input()
print(a)
input()함수를 사용해 사용자로부터 입력을 받을 수 있다.
자바에서는 입력받을 때 미리 타입을 지정해 놓거나 줄 단위로 입력받지만, 파이썬에서는 입력되는 모든 요소를 문자열로 취급함에 주의하자.
f = open("asdf.txt",'w')
for i in range(1,11):
data = "%d 번째 줄입니다.\n" % i
f.write(data)
f.close()
자바에서는 입출력 스트림을 정의하고 입력과 출력을 처리했는데, 파이썬은 입출력을 보다 간단 하게 처리할 수 있다.
파일 객체 = open(파일 이름, 파일 열기 모드(r,w,a)) 형태로 코드를 작성한다.
13. 클래스
파이썬도 클래스를 사용한다.
class example:
pass
test = example()
위에서 example은 클래스이고, test는 example의 인스턴스이면서 test는 객체라고 표현할 수 있다.
class example:
def __init__(self,name):
self.name = name
test = example('ㅁㄴㅇㄹ')
클래스 내부에 __init__ 함수를 설정하면 __init__함수는 자바에서의 생성자 역할을 한다. (인스턴스를 만들 때 실행된다)
__init__ 함수가 추가됐기 때문에 인스턴스를 생성할 때 인자로 받는 요소를 추가해야 한다.
여기서 self는 객체의 인스턴스를 의미한다.
한 가지 클래스에 대해서 여러 가지 인스턴스를 만들 때 self로 구분한다.
14. 상속
class Parent:
pass
class Child(Parent):
pass
Child클래스는 Parent클래스를 상속받는다.
오버라이딩은 자바와 동일하게 구현하면 된다.
오버로딩은 자바와 좀 다르다.
파이썬에서는 오버로딩을 사용해 연산자를 객체끼리 사용할 수 있게 한다.
15. 모듈
C드라이브의 Python파일에 py파일을 옮겨놓으면 내가 작성하려는 py파일에 import를 수행할 수 있다.
import mod1
print(mod1.sum(1,2))
코드를 더 간단하게 하려면
from mod1 import sum
print(sum(1,2))
from을 사용할 수 있다.
16. 패키지
디렉토리와 파이썬 모듈로 구성된다.
디렉토리마다 __init__.py파일을 만드는데 해당 디렉토리가 패키지의 일부임을 알려주는 역할을 한다.
17. 예외처리
try:
a = 2 / 0
except:
print("error occured")
자바에서는 try - catch를 사용해 오류를 처리하고, 파이썬에서는 try - except를 사용해 오류를 처리한다.
except뒤에 오류의 종류를 입력할 수 있다.
try:
a = 2 / 2
except:
print("error occured")
else:
print("1234")
else를 추가해 오류가 발생하지 않았을 때 처리할 문장도 작성할 수 있다.
18. 내장 함수
- abs : 절댓값
- chr : 아스키코드
- enumerate : 순서가 있는 자료형을 입력받고 인덱스를 포함한 객체로 리턴
- filter : 조건에 따라 무언가를 걸러냄
- id : 객체의 고유 주소 리턴
- input : 입력
- int : 정수로
- isinstance : 자바의 instanceof
- len : 길이 리턴
- list : 리스트로 만듦
- max : 최댓값 리턴
- pow : 제곱
- sorted : 정렬 (문자열도 가능) sort함수는 리턴값이 없는데 sorted는 리턴값 있음
- str : 문자열로
- type : 자료형 알려줌
필요할 때 찾아서 사용하자.