3. 자료형 - None
3
널(null)
- 아무것도 없음을 나타냄.
> none = None
> type(none)
> <type 'NoneType'>
> a1
! 에러
- 다른 언어와 다르게 선언한다고 null 혹은 0 으로 초기화 되지 않음.
- 어떤 값이라도 할당(assign)이 되어야 한다.
5. 자료형 - 숫자형
5
정수 >>> a = 123
>>> a = -178
>>> a = 0
>>> a = 1.2
>>> a = -3.45
>>> a = 4.24E10
>>> a = 4.24e-10
>>> a = 0o177
>>> a = 0x8ff
>>> b = 0xABC
>>> a = 1+2j
>>> b = 3-4J
실수
8진수
16진수
복소수
지수표현법 사용
0o 또는 0O
(숫자 0 + 알파벳 o 또는 대문자 O)으로 시작
0X로 시작
6. 자료형 - 숫자형 연산
6
다른 언어와 거의 다 비슷
특이한 것들.
- i++ 의 증감연산자는 되지 않는다.
- 끝수 버리는 나머지 : //
예) 10/3.0 = 3.3333
10//3.0 = 3.0
- 승에 대한 표현 : a**n
예) 2**3 = 8, 10**3 = 1000
a = 10
print divmod(10, 3.0)
기타 함수들
- abs
- pow
- divmod : 몫과 나머지를 반환
> (3, 1)
7. 자료형 - 문자열
7
"Hello World"
'Python is fun'
"""Life is too short, You need python"""
'''Life is too short, You need python'''
문자열을 만드는 4가지 방법
"ash84's World"
'ash84"s World'
'ash84"s World'
"""Life is too short,
You need python"""
'''Life is too short,
You need python'''
따옴표, 쌍따옴표 포함
긴 문자열
8. 시퀀스(문자열, 리스트, 튜플) 공통 연산
8
연산 설명
a + b 연결, 이어붙이기
a * n n 개의 복사본 만들기
a[i] 인덱스
a[i:j] 분할
e in a, e not in a 멤버 포함여부 검사
for e in a 반복문
all(a) a 의 모든 항목이 True 이면 True
any(a) a 의 항목중 하나라고 True 이면, True
len(a) a의 길이 반환
min(a) a 중에서 가장 작은 항목 반환
max(a) a 중에서 가장 큰 항목 반환
15. 자료형 - list
15
- C# 의 ArrayList 와 유사
- [] 으로 표시
- nested 형태로 가능
> a = [] , a = list()
> b = [1, 2, 3]
> c = ['Life', 'is', 'too', 'short']
> d = [1, 2, 'Life', 'is']
> e = [1, 2, ['Life', 'is']]
26. 자료형 - dict
26
- {} 으로 표시
- 순서열이 아닌, key : value 형태로 데이터 저장
{Key1:Value1, Key2:Value2, Key3:Value3 ...}
> d = {}
> d = dict()
> d = { “name” : “ash84”, “age” : 11}
31. 변수
31
레퍼런스 카운트?
- 몇 개의 변수가 메모리 공간를 가리키는지?
- 가비지 컬렉션이 동작하는 단위,
- 해당 메모리공간을 가리키는 레퍼런스 카운트가 0이면 메모리 회수
- 2 이 있는 메모리공간(객체)을 가리키는 레퍼런스 카운트는 2개이다.
- 3 이 있는 메모리공간(객체)을 가리키는 레퍼런스 카운트는 1개이다.
2a
b
c 3
42. 함수 - yield
42
생성기(generator)를 만든다.
next()를 호출때마다 함수 실행
next() 호출시,
yield 문 까지 실행하고 멈춘다.
다시 호출하면
한번도 돌고, yield 문에서 멈춘다.
None을 반환, 혹은 StopIteration 예
외 발생시 종료
50. 내장함수
50
map(함수, 반복가능한 자료형) 함수를 각각의 요소에 대입하고 리스트로 출력
input 사용자 입력 받는 함수 eval 실행가능한 문자열을 받아서 실행하고 결과를 보여준다.
51. 내장함수
51
open 파일읽기, 지정한 읽기 방법에 따라서 입력을 받아서 파일객체 리턴
mode 설명
w 쓰기 모드로 파일 열기
r 읽기 모드로 파일 열기
a 추가 모드로 파일 열기
b 바이너리 모드로 파일 열기
별 다른 라이브러리 없이, 바로 사용가능.
52. 내장함수
52
sorted 시퀀스 자료형을 정렬하는 역할,
.sort 는 호출한것 자체를 정렬하고 반영한다. 반환하지 않는다.
zip 동일한 개수의 자료형을 묶어주는 역할
53. 함수안의 함수
53
1급 함수(First Class Function)
- 함수를 다른 함수에 인수로 전달
- 반환값으로 전달
- 변수나 자료구조에 저장 할수 있는 함수
54. 함수 클로저
54
- 함수가 참조할수 있는 비지연변수나 일반변수를 저장한 참조환경이 함수와 함께 제공, 뭔애기?
- 쉽게 말하면, 반환시점의 함수객체가 내부의 지역변수, 비지역변수의 값을 유지한다.
abc1
abc1
abc23
dan1
dan11
dan23
55. 함수 클로저
55
a, b, c = ‘a’, ‘b’, ‘c’
cache[‘abc1’]
a, b, c = ‘a’, ‘b’, ‘c’
cache[‘abc1’]
f1 f2
- 각각의 함수객체가 독립적인 이름공간을 갖는다.
- 각각의 공간은 함수객체(f1, f2)가 삭제될 때 까지 유지.
- 함수인데,
마치 클래스의 별도의 인스턴스를 만들어서 동작하는것처럼 사용.
- 내부 함수의 환경을 기록.
- 기존 함수에 추가기능을 넣어서 함수를 포장하려고 할때, 유용하다.
56. 함수 클로저
56
a, b, c = ‘a’, ‘b’, ‘c’
cache[‘abc1’]
a, b, c = ‘a’, ‘b’, ‘c’
cache[‘abc1’]
f1 f2
(<cell at 0x01DB4ED0: str object at 0x01D84DE8>,
<cell at 0x01DBF5F0: str object at 0x01D84E00>,
<cell at 0x02501650: str object at 0x01E0E068>,
<cell at 0x02501670: dict object at 0x01DB2AE0>)
(<cell at 0x02501690: str object at 0x01D84458>,
<cell at 0x025016B0: str object at 0x01D84DE8>,
<cell at 0x025016D0: str object at 0x01D844D0>,
<cell at 0x025016F0: dict object at 0x025055D0>)
57. for
57
기본 스타일
for i in range(0, 10):
print i
for(int i=0; i<10; i++)
{ … }
@C#
@Python
58. for
58
list, tuple, 문자열
foreach (int element in arrayList)
{ … }
for e in elements:
pass
for c in "string":
print c
@C#
@Python
59. while
59
while 조건문:
명령문
# -*- coding:utf-8 -*-
treeHit = 0
while treeHit < 10:
treeHit = treeHit +1
print("나무를 %d번 찍었습니다." % treeHit)
if treeHit == 10:
print(“나무가 넘어갑니다.”)
61. continue
61
그 자리에서 반복문으로 돌아가라 는 의미
a = 0
while a < 10:
a = a+1
if a % 2 == 0:
continue
if a % 5 == 0:
break
print(a)
> 1
3
2의 배수인 경우,
다음 문을 진행하지 않고 되돌아감.
63. True vs. False
63
자료형 참 거짓
숫자 3 0
문자열 "abc" ""
list [1,2,3] []
tuple (1,2,3) ()
dict {"a":"b"} {}
거짓을 기억하자!
64. True vs. False
64
tag = get_tags()
if len(tag) > 0:
print "go tag"
else:
print "no tag"
tag = get_tags()
if tag:
print "go tag"
else:
print "no tag"
name = get_name()
if len(str) > 0:
print “name”
else:
print “input name”
name = get_name()
if str:
print “name”
else:
print “input name”
좀더 간결하게 쓸 수 있다. 근데 더 큰 문제가 있다면?
65. True vs. False
65
tag = get_tags()
if len(tag) > 0:
print "go tag"
else:
print "no tag"
name = get_name()
if len(str) > 0:
print “name”
else:
print “input name”
None 이 넘어온다면?
Traceback (most recent call last):
File "C:workspacetest.py", line 3, in <module>
if len(name) >0:
TypeError: object of type 'NoneType' has no len()
66. True vs. False
66
문제 없음.
None 인경우도 false 이기 때문에, 모두 커버
tag = get_tags()
if tag:
print "go tag"
else:
print "no tag"
name = get_name()
if str:
print “name”
else:
print “input name”
None 이 넘어온다면?
68. and, or
68
&&, || 는 없습니다.
대신 and/or를 사용하시면 됩니다.
name = 'a'
if len(name) > 0 && name =='a':
print name
name = 'a'
if len(name) > 0 and name =='a':
print name
69. not
69
~가 아니면 의 의미
name = 'a'
if not name=='b':
print name
not 이 앞에 온다는 것에 주의
70. in
70
그 안에 있냐? 라는 의미
person = {'name':'ash84', 'age':21}
if 'name' in person:
print person['name'
person = ['name', 'age']
if 'name' in person:
print person
그 안에 없냐? not in
person = "ash84"
if 'ash' in person:
print person
dict 안에서 key가 있는지 확인
list 안에 해당 값이 있는지 확인
문자열 안에 해당 값이 포함되어 있는지 확인
75. 정리
75
변수는 할당(=)을 해야 생성된다.
전역변수는 global
list, dict 만 기억하자. tuple은 변하지 않는것들.
클로저는 관련된 것들을 묶는다 라고 생각하자.
lambda 와 리스트 내포는 코드를 줄여준다.
if 문에서 False 의 경우를 기억하고 활용하자.
예외처리는 try-except-finally 쓰고 시작하자.