Professional Documents
Culture Documents
파이썬 (2) 강의노트 (조건문, 입출력, 클래스, 인스턴스, 메써드) (수정)
파이썬 (2) 강의노트 (조건문, 입출력, 클래스, 인스턴스, 메써드) (수정)
조건문(if)
2021-2 파이썬과머신러닝 이 대엽
2
if
If 조건문
조건
정의
콜론
if <expr>:
<statement>
들여쓰기
2021-2 파이썬과머신러닝 이 대엽
3
Python 조건문
예제
>>> x = 0
>>> y = 5
2021-2 파이썬과머신러닝 이 대엽
4
if
그룹화 문 : 들여 쓰기 및 블록
Python : 들여 쓰기에 관한 모든 것
Python은 영국의 컴퓨터 과학자 Peter J. Landin이 만든 용어인
off-side rule이라는 규칙을 따름
들여 쓰기는 복합 문이나 블록을 정의하는 데 사용
Python 프로그램에서 동일한 수준으로 들여 쓰기된 연속 문은
동일한 블록의 일부로 간주
2021-2 파이썬과머신러닝 이 대엽
5
if
If 조건문
복합 if 문
2021-2 파이썬과머신러닝 이 대엽
6
if
예제
# Does line execute? Yes No
# --- --
if 'foo' in ['foo', 'bar', 'baz']: # x
print('Outer condition is true') # x
if 10 > 20: # x
print('Inner condition 1') # x
if 10 < 20: # x
print('Inner condition 2') # x
2021-2 파이썬과머신러닝 이 대엽
7
if
else 및 elif 조항
경우에 따라 조건을 평가하고 참이면 하나의 경로를 사용하고 그렇지
않으면 대체 경로를 지정else 절로 수행
if <expr>:
<statement(s)>
else:
<statement(s)>
2021-2 파이썬과머신러닝 이 대엽
8
Python 조건문
예제
x = 20
if x < 50:
print('(first suite)')
print('x is small')
else:
print('(second suite)')
print('x is large') (first suite)
x is small
x = 120
if x < 50:
print('(first suite)')
print('x is small')
else:
print('(second suite)')
print('x is large')
(second suite)
x is large
2021-2 파이썬과머신러닝 이 대엽
9
if
분기 실행 구문
하나 이상의 elif (else if의 줄임말) 절을 사용
파이썬은 차례로 각 <expr>을 평가하고 참인 첫 번째에 해당하는
모음을 실행
어떤 식도 참이 아니고 else 절이 지정되어 있으면 그 모음을 실행
if <expr>:
<statement(s)>
elif <expr>:
<statement(s)>
elif <expr>:
<statement(s)> 임의의 수의 elif 절을 지정할 수 있음
...
else 절은 선택 사항
else:
존재하는 경우 하나만 있을 수 있으며
<statement(s)>
마지막에 지정해야 함
2021-2 파이썬과머신러닝 이 대엽
10
if
name = 'Joe'
if name == 'Fred':
print('Hello Fred')
elif name == 'Xander':
print('Hello Xander')
elif name == 'Joe':
print('Hello Joe')
elif name == 'Arnold':
print('Hello Arnold')
else:
print("I don't know who you are!") Hello Joe
2021-2 파이썬과머신러닝 이 대엽
11
if
names = {
'Fred': 'Hello Fred',
'Xander': 'Hello Xander',
'Joe': 'Hello Joe',
'Arnold': 'Hello Arnold'
}
print(names.get('Joe', "I don't know who you are!"))
Hello Joe
print(names.get('Rick', "I don't know who you are!"))
e!
I don't know who you are!
2021-2 파이썬과머신러닝 이 대엽
12
if
if 'a' in 'bar':
print('foo')
elif 1/0:
print("This won't happen")
elif var:
print("This won't either") foo
2021-2 파이썬과머신러닝 이 대엽
13
if
한 줄 if 문
한 줄에 <expr>을 쓰고 다음 줄에 <statement>를 들여 쓰면 다
음과 같이 쓰는 것이 일반적
if <expr>:
<statement>
한 줄에 전체 if 문을 작성하는 것을 허용
if <expr>: <statement>
2021-2 파이썬과머신러닝 이 대엽
14
if
두가지 해석이 가능 :
(1) <expr>이 true이면 <statement_1>을 실행
그런 다음 <expr>이 true인지 여부에 관계없이 <statement_2> ... -
<statement_n>을 무조건 실행
(2) <expr>이 true이면 모든 <statement_1> ... <statement_n>을 실행
그렇지 않으면 실행하지 않음
파이썬은 후자의 해석을 취함
<statements>를 구분하는 세미콜론은 <expr> 다음에 오는 콜론보
다 우선 순위가 높음
컴퓨터 용어에서 세미콜론은 콜론보다 더 단단히 묶인다고 간주
따라서 <statements>는 모음으로 처리되고 모두 실행되거나 모두
실행되지 않음
2021-2 파이썬과머신러닝 이 대엽
15
if
if 'f' in 'foo':
print('1')
print('2')
print('3')
1
...2
1
23
if 'z' in 'foo':
print('1')
print('2')
print('3')
2021-2 파이썬과머신러닝 이 대엽
16
if
x=3
if x == 1: 이 방식이 시각적으로 더 이해하기 쉬움
print('foo')
print('bar')
print('baz')
elif x == 2:
print('qux')
print('quux')
else:
print('corge')
print('grault')
corge
corge
grault
grault
2021-2 파이썬과머신러닝 이 대엽
18
Python 조건문
raining = False
print("Let's go to the", 'beach' if not raining else 'library')
raining = True
print("Let's go to the", 'beach' if not raining else 'library')
Let's go
Let's go to
to the
the library
library
age = 12
s = 'minor' if age < 21 else 'adult‘
s
'minor'
'minor'
2021-2 파이썬과머신러닝 이 대엽
20
if
if a > b:
m=a m = a if a > b else b
else:
m=b
조건식은 구문 상 표현식처럼 작동
x = y = 40
더 긴 표현의 일부로 사용 가능
2021-2 파이썬과머신러닝 이 대엽
21
if
x = y = 40
z = 1 + (x if x > y else y) + 2
z
43
2021-2 파이썬과머신러닝 이 대엽
22
if
2021-2 파이썬과머신러닝 이 대엽
23
입출력
(화면 입출력)
2021-2 파이썬과머신러닝 이 대엽
24
Print()
모니터 화면에 결과물을 출력 하기 위해서 print() 함수를 사용
2021-2 파이썬과머신러닝 이 대엽
25
Print()
예
문자열 속에 “ 기호가 있는 경우에는 ‘ ‘로(정정)
print('Inha "University"')
2021-2 파이썬과머신러닝 이 대엽
26
Print()
예
개행(줄바꿈), 공백, 특수기호(이스케이프 문자)를 포함하여
입력한 그대로 화면에 출력하기 위해서는 ‘’‘ ’‘’ 또는 “”“ ”“” 기호를 사용
print("""Inha
Univeristy""")
print('''Inha
University''')
a = 'Inha'
b = 'University‘
2021-2 파이썬과머신러닝 이 대엽
28
Print()
예문자열 객체의 메소드(함수)를 이용하여 출력 모양을 변경
print('Inha University'.center(20))
Inha University
print('Inha University'.ljust(20))
Inha University
print('Inha University'.zfill(20))
00000Inha University
print('Inha University'.upper())
INHA UNIVERSITY
2021-2 파이썬과머신러닝 이 대엽
29
입출력
(파일 입출력)
2021-2 파이썬과머신러닝 이 대엽
30
파이썬에서 파일 읽고 쓰기
학습목표
(1) 파일 생성하기
(2) 파일을 쓰기 모드로 열어 내용을 쓰기
(3) 프로그램의 외부에 저장된 파일을 읽는 여러 가지 방법
readline() 함수 이용하기
readlines 함수 사용하기
read 함수 사용하기
파일에 새로운 내용 추가하기
with문과 함께 사용하기
sys 모듈로 매개변수 전달
2021-2 파이썬과머신러닝 이 대엽
31
파이썬에서 파일 읽고 쓰기
파일 생성하기
test.txt 파일을 생성
파일 객체=open(파일 이름, 파일 열기 모드)
※ test0.txt와 test1.txt의 내용이 같은 것을 확인할 것
f = open("test1.txt", 'w')
f.close()
파일 열기 모드 설명
r 읽기 모드 – 파일을 읽기만 할 때 사용
W 쓰기 모드 _ 파일에 내용을 쓰 때 사용
a 추가 모드 – 내용을 추가할 때 사용
2021-2 파이썬과머신러닝 이 대엽
32
파이썬에서 파일 읽고 쓰기
f = open("test0.txt",'r') read_file.ipynb
while True:
line=f.readline()
if not line:break
print(line)
f.close()
2021-2 파이썬과머신러닝 이 대엽
33
파이썬에서 파일 읽고 쓰기
파일을 읽기 모드로 열어 내용을 쓰기
readlines 함수를 사용하는 방법
Read_lines_file.ipynb
f = open("c:/users/SPL/test0.txt",'r')
contents=f.readlines()
for line in contents:
print(line)
f.close() contents는 list
f = open("c:/users/SPL/test0.txt",'r') Read_line_file.ipynb
data = f.read()
print(data)
f.close()
Data는 파일 전체 내용
2021-2 파이썬과머신러닝 이 대엽
34
파이썬에서 파일 읽고 쓰기
파일에 새로운 내용 추가 하기
쓰기 모드(‘w’)로 파일을 열면 기존 내용을 사라짐
추가 모드(‘a’)로 열면 내용의 추가가 가능
f = open("c:/users/SPL/test0.txt", 'a') add_data.ipynb
for i in range(11,15):
data = "%d 번째 줄\n" % i
f.write(data)
f.close()
With 문과 함께 사용하기
f = open( ) 대신에 with를 사용하여 파일 사용
2021-2 파이썬과머신러닝 이 대엽
35
객체(object), 클래스(class)
인스턴스(instance), 메써드(method)
2021-2 파이썬과머신러닝 이 대엽
36
학습 목표
1. Class의 정의
2. Class를 만드는 방법
3. 메서드(method)의 정의
4. object instantiation
5. instance attribute을 만드는 방법
2021-2 파이썬과머신러닝 이 대엽
37
참고 - Circular definitions
파이썬은 객체
지향 언어이다
객체는 클래스를
이용하여 데이터 객체는 클래스를
를 인스턴스화 하 인스턴스화 한 것?
는 것이다.
지금까지는 파이썬
언어의 기초적인
내용을 공부
이제는 Object의
이해가 중요
2021-2 파이썬과머신러닝 이 대엽
38
Class의 정의
Python은 객체 지향 프로그래밍 언어
Python의 거의 모든 것은 속성과 메서드가 있는 객체
클래스는 객체를 만들기위한 코드 템플릿
객체에는 멤버 변수가 있으며 연관된 동작(메써드)이 있음
파이썬에서 클래스는 class 키워드로 생성
객체는 클래스의 생성자를 사용하여 생성
객체는 클래스의 ‘instance’로 호출 됨
인스턴스를 만드는 방법
Instance = class(arguments)
2021-2 파이썬과머신러닝 이 대엽
39
Class의 정의
Class
객체를 만들기 위한 코드 template(청사진, 틀, 금형)
2021-2 파이썬과머신러닝 이 대엽
40
Class의 정의
2021-2 파이썬과머신러닝 이 대엽
41
Python에서 객체(Object)
자동차 굴삭기 엔진
객체
(Object)
모양(shape) 출력(power)
속성 토크(torque)
색상(color) 색상(color)
(Attribute) 출력(power)
크기(size) 크기(size)
기능 이동(speed) 굴삭(dig)
(Function 회전(rotation)
/method) 정원(capacity) 적재(load)
객체(Object)=속성(Attribure)+기능(Fuction(Method))
속성(Attribure).기능(Fuction(Method)(실제 구현)
2021-2 파이썬과머신러닝 이 대엽
42
Python에서 객체(Object)
객체는 다음으로 구성
상태(state) : 객체의 속성(특성, property)으로 표현
행동(behavior) : 객체의 메써드(method)로 표현. 다른 객체와의 반
응을 나타냄
정체(identity) :
2021-2 파이썬과머신러닝 이 대엽
43
Python에서 객체(Object)
2021-2 파이썬과머신러닝 이 대엽
44
Python에서 객체(Object)
2021-2 파이썬과머신러닝 이 대엽
45
Object and Instance variable
2021-2 파이썬과머신러닝 이 대엽
46
Object and Instance variable
Object and Instance variable
객체와 인스턴스 변수를 다른 위치에 저장이 됨
Object
(0x48397a69
70)
name = Name()
Instance
Variable
(0x4839797a
60)
An Object is an
Instance of a Class.
2021-2 파이썬과머신러닝 이 대엽
47
속성(attribute)과 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
48
속성(attribute)과 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
49
클래스(Class)와 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
50
Class
Class
Sonnata와 Grandeur의 공통점은 car
Car를 운전하는 사람은 driver
이러한 관계를 class(클래스, 부류)라고 함
ex) apple은 클래스
내가 먹은 것이라고 지정을 하면 instance(실체)
ex)
2021-2 파이썬과머신러닝 이 대엽
51
Class 변수와 instance 변수
Class variable
클래스 정의에서 메서드 밖에 존재하는 변수를 클래스 변수(class variable)
이는 해당 클래스를 사용하는 모두에게 공용으로 사용되는 변수
클래스 변수는 클래스 내외부에서 "클래스명.변수명" 으로 엑세스 가능
Instance variable
메서드 안에서 사용되면서 "self.변수명"처럼 사용되는 변수
하나의 클래스로부터 여러 객체 인스턴스를 생성해서 사용할 수 있음
클래스 변수가 하나의 클래스에 하나만 존재하는 반면, 인스턴스 변수는 각
객체 인스턴스마다 별도로 존재
객체별로 서로 다른 값을 갖는 변수
클래스 내부에서는 self.width 과 같이 "self." 로 사용하여 엑세스하고, 클래스
밖에서는 "객체변수.인스턴스변수"와 같이 엑세스
2021-2 파이썬과머신러닝 이 대엽
52
속성(attribute)과 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
53
Class의 초기자(생성자)
Initializer(초기(생성)자)
클래스로부터 새 객체를 생성할 때마다 실행되는 특별한 메서드
__init__()
클래스로부터 객체를 만들 때, 인스턴스 변수를 초기화하거나 객체의 초기
상태를 만들기 위한 문장들을 실행하는 곳
예제(다음 페이지)를 보면, width와 height라는 입력 파라미터들을 각각
self.width와 self.height라는 인스턴스변수에 할당하여 객체 내에서 계속
사용할 수 있도록 준비
Class instance의 생성과 사용
클래스를 사용하기 위해서는 먼저 클래스로부터 인스턴스(객체)를 생성
인스턴스를 생성하기 위해서는 "객체변수명 = 클래스명()"과 같이 클래스
명을 함수 호출하는 것처럼 사용
입력 파라미터들이 지정되어 있다면, "클래스명(입력파라미터들)"과 같이
파라미터를 괄호 안에 전달
2021-2 파이썬과머신러닝 이 대엽
54
Class의 초기자(생성자)
2021-2 파이썬과머신러닝 이 대엽
55
객체 변수와 instance 변수
2021-2 파이썬과머신러닝 이 대엽
56
클래스(Class)와 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
57
클래스(Class)와 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
58
클래스(Class)와 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
59
클래스(Class)와 메써드(Method)
2021-2 파이썬과머신러닝 이 대엽
60
Class variable and Instance variable
def __init__(self,name,roll):
self.name = name # Instance Variable
self.roll = roll # Instance Variable
2021-2 파이썬과머신러닝 이 대엽
61
Class variable and Instance variable
Object
(instance)
Instance
Variable
a = Mech_Student('Lee', 101) 0x6ed3d05
748
b = Mech_Student('Kim', 102)
Object
(instance)
Instance
Variable
An Object is an 0x6ed3d05
Instance of a Class. 708
2021-2 파이썬과머신러닝 이 대엽
62
Class variable and Instance variable
mech 객체변수.클래스변수명
mech 객체변수.클래스변수명
Lee 객체변수.인스탄스변수명
Kim 객체변수.인스탄스변수명
101 객체변수.인스탄스변수명
102 객체변수.인스탄스변수명
mech 클래스명.클래스변수명
2021-2 파이썬과머신러닝 이 대엽
63
Class variable and Instance variable
# Class Variable
animal = 'dog'
인스턴스 변수는 각 인스턴스에 고
# The init method or constructor
def __init__(self, breed, color): 유 한 데이터를 위한 것
클래스 변수는 클래스의 모든 인스
# Instance Variable
self.breed = breed 턴스가 공유하는 속성 및 메서드를
self.color = color
위한 것
Rodger = Dog("Pug", "brown") 인스턴스 변수는 생성자 또는 메서
Buzo = Dog("Bulldog", "black")
드 내에 self가 있는 값이 변수
클래스 변수는 값이 클래스에 할당
된 변수
생성자를 사용하여 인스턴스 변수를
정의한 예
2021-2 파이썬과머신러닝 이 대엽
64
Class variable and Instance variable
print('\nBuzo details:')
print('Buzo is a', Rodger.animal)
print('Breed: ', Buzo.breed)
print('Color: ', Buzo.color)
Python에서 객체(Object)
절차 지향 프로그래밍과 객체 지향 프로그램 :
PROCEDURAL ORIENTED OBJECT ORIENTED
2021-2 파이썬과머신러닝 이 대엽
66
Python에서 객체(Object)
객체 지향 프로그래밍을 하는 이유
1. 코드의 재사용이 쉽다
기존에 사용한 틀(class)를 이용하면 속성과 기능만 변경해서 빠르고
쉽게 프로그램을 개발 할 수 있다.
2. 프로그램 관리(유지 보수)가 쉽다
프로그램의 수정, 삭제와 같은 유지 보수 발생시 코드 변경이
편리하다.
3. 프로그램을 모듈화할 수 있다.
프로그램을 모듈화할 수 있어 하드웨어 부품처럼 필요에 따라 다른
프로그램에 쉽게 이식할 수 있고 반대로 제거할 수도 있다(객체간의
결합도가 낮음)
4. 데이터의 추상화(abstraction), 상속(inheritance), 다형성(polymorphism),
캡슐화(capsulation)가 가능
2021-2 파이썬과머신러닝 이 대엽
67
참고 – 파이썬의 OOP 특성(1/2)
Access specifier(modifier)(액세스 지정자 또는 수정자)
상속 개념을 구현하는 동안 클래스 외부의 클래스 변수 및 클래스
메서드에 대한 액세스를 제한하는 데 사용
Public, Private 및 Protected 키워드로 달성
Overloading(오버라이딩)
연산자의 기본 동작을 변경할 수 있고 이것이 "연산자 오버로딩“
함수가 정의된 방식에 따라 0, 1, 2 또는 여러 매개변수를 사용하여
호출하는 것이 "함수 오버로딩“
Inheritance(상속)
부모 클래스에서 모든 기능을 가져오고 더 추가하여 클래스를 정의
하는 것
2021-2 파이썬과머신러닝 이 대엽
68
참고 – 파이썬의 OOP 특성(2/2)
Abstraction(추상화)
사용자에게 함수의 내부 기능을 숨기는 데 사용
복잡성을 줄이기 위해 관련 없는 데이터/클래스를 숨기는 데 사용
Capsulation(캡슐화)
클래스를 정의할 때 내부의 속성과 메서드를 묶어서 하나의 단위로
처리하는 것
변수와 메서드에 직접 액세스하는 것이 제한되고 우발적인 데이터
수정의 방지가 가능
Polymorphism(다형성)
다른 유형의 동일한 함수 이름을 사용할 수 있게 하는 기능
프로그래밍을 보다 직관적이고 쉽게 만들기위한 것
2021-2 파이썬과머신러닝 이 대엽
69
Python에서 객체(Object)
2021-2 파이썬과머신러닝 이 대엽
70
Python에서 객체(Object)
Object, Attribute, Fuction(Method)
먼저 틀(class)을 만들고 이를 이용하여 메모리에 원하는 만큼 객체를
만듬
Class
클래스는 데이타를 표현하는 속성(attribute)과 행위를 표현하는 메서드
(method)를 포함하는 논리적인 컨테이너
메서드(method), 프로퍼티(property), 클래스 변수(class variable), 인스
턴스 변수(instance variable), 초기자(initializer), 소멸자(destructor) 등
다양한 종류의 멤버들로 구분
클래스는 전통적으로 크게 속성(attribute)과 메서드(method)를 갖는 논
리적 단위이지만, 메서드를 특히 callable attribute로 볼 수도 있기 때문
에 속성과 메서드 모두를 그 클래스의 attribute 라고 생각할 수도 있음
새로운 attribute를 실행 중 동적(dynamic)으로 추가할 수 있음
2021-2 파이썬과머신러닝 이 대엽
71
객체 지향 프로그래밍(Object oriented programming)
Python은 객체 지향 프로그래밍 언어
절차 지향 프로그래밍은 함수에 중점
객체 지향 프로그래밍은 객체에 중점을 둠
객체는 단순히 데이터 (변수)와 해당 데이터에 대해 작동하는 메서
드 (함수)의 모음
클래스는 해당 객체의 청사진
클래스를 집의 스케치 (시제품)로 생각
여기에는 바닥, 문, 창문 등에 대한 모든 세부 정보가 포함
집의 청사진으로 많은 집을 만들 수 있기 때문에 클래스에서 많은
객체를 만들 수 있음
객체를 클래스의 인스턴스
객체를 만드는 프로세스를 인스턴스화 라고 합니다.
2021-2 파이썬과머신러닝 이 대엽
72
객체 지향 프로그래밍(Object oriented programming)
OOP 주요 용어
1. Class
클래스의 모든 객체를 특성화하는 속성 집합을 정의하는 객체에
대한 사용자 정의 프로토 타입
속성은 점(dot) 표기법을 통해 액세스되는 데이터 범버(클래스 변
수 및 인스턴스 변수) 및 메써드
2. 클래스 변수
클래스의 모든 인스턴스가 공유하는 변수
클래스 변수는 클래스 내에서 정의되지만 클래스의 메써드 외부에
서 정의
클래스 변수는 인스턴스 변수만큼 자주 사용되지 않음
2021-2 파이썬과머신러닝 이 대엽
73
객체 지향 프로그래밍(Object oriented programming)
OOP 주요 용어
3. Data member
클래스 및 그 객체와 관련된 데이터를 보유하는 클래스 변수 또는
인스턴스 변수
4. Function overloading
특정 기능에 둘 이상의 동작을 할당하는 것
수행되는 작업은 관련된 객체 또는 인수의 유형에 따라 다름
5. Instance variable
메써드 내부에서 정의되고 클래스의 현재 인스턴스에만
속하는 변수
6. 상속(Inheritance)
클래스에서 파생 된 다른 클래스에 클래스의 특성을 전송
2021-2 파이썬과머신러닝 이 대엽
74
OOP 주요 용어
7. Instance
클래스의 개별 객체
예를 들어 클래스 A에 속하는 객체 obj는 클래스 A의 인스
턴스
8. Instantiation
클래스의 인스턴스 생성
9. Method
클래스 정의로 정의 된 함수의 하나
2021-2 파이썬과머신러닝 이 대엽
75
객체 지향 프로그래밍(Object oriented programming)
OOP 주요 용어
10. Object
클래스에 의해 정의 된 데이터 구조의 고유 한 인스턴스
객체는 데이터 멤버 (클래스 변수 및 인스턴스 변수)와 메써드로 구
성
11. Operator overloading
사전 정의된 작동 의미를 넘어 확장된 의미를 부여하는 것
2021-2 파이썬과머신러닝 이 대엽
76
참고 - namespace
네임스페이스(namespace)
프로그래밍 언어에서 특정한 객체(Object)를 이름에 따라 구분할 수 있는 범
위를 의미
파이썬 내부의 모든것은 객체로 구성
이들 각각은 특정 이름과의 매핑 관계를 갖게 되는데 이 매핑을 포함하고 있
는 공간을 네임스페이스라고 함
전역 네임스페이스: 모듈별로 존재하며, 모듈 전체에서 통용될 수 있는
이름들이 소속
지역 네임스페이스: 함수 및 메써드 별로 존재하며, 함수 내의 지역 변수들의
이름들이 소속
빌트인 네임스페이스: 기본 내장 함수 및 기본 예외들의 이름들이 소속.
파이썬으로 작성된 모든 코드 범위가 포함
2021-2 파이썬과머신러닝 이 대엽
77
참고 - namespace
네임스페이스(namespace)
2021-2 파이썬과머신러닝 이 대엽
78
참고 - namespace
네임스페이스(namespace)
네임스페이스는 딕셔너리 형태로 구현
모든 이름 자체는 문자열로 되어있고 각각은 해당 네임스페이스의
범위에서 실제 객체를 가리킴
이름과 실제 객체 사이의 매핑은 가변적(Mutable)이므로 런타임동안
새로운 이름이 추가될 수 있음
다만, 빌트인 네임스페이스는 함부로 추가하거나 삭제할 수 없음
2021-2 파이썬과머신러닝 이 대엽
79
참고 - namespace
파이썬에서 name(변수명)의 의미
파이썬에서는 name 에 값을 줄 수 있고, function 과 같은 형태도
name 을 줄 수 있다. 동일한 name을 재사용할 수 있다.
namespace 와 module
namespace 는 name을 담을 수 있는 공간
파이썬에서 module 은 파이썬 코드를 담고 있는 파일
해당 파일에는 파이썬 클래스, 함수 또는 단순하게 name의 리스트가
들어있을 수 있다.
각 모듈은 자신만의 유일한 namespace 를 갖는다.
모듈의 namespace 이름은 보통 모듈의 파일이름과 같다.
따라서 동일한 모듈내에서 동일한 이름을 가지는 클래스나 함수를 정
의할 수 없다.
또한 모듈은 각각 완벽하게 독립적(namespace가 다르다)이기 때문에,
두 모듈은 동일한 이름을 갖는 클래스나 함수를 정의할 수 있다.
2021-2 파이썬과머신러닝 이 대엽
80
참고 - namespace
import 와 namespace 관계
module 을 import 하는 방법에 따라 namespace 가 달라진다.
1. import <module_name>
모듈을 import 하는 가장 일반적인 방법
이렇게 import 를 하면 module 의 name 을 접두사로 사용하여
모듈의 namespace 에 접근
(예제) 다음 예제에서 sys 는 모듈 이름이고, path 는 sys 모듈의
namespace 에 담겨있는 name
path 에 접근을 하기 위해서는 모듈 이름인 sys 를 접두사로 붙여서
sys 모듈의 namespace 에 접근하여 이용
import sys
sys.path
2021-2 파이썬과머신러닝 이 대엽
81
참고 - namespace
path
2021-2 파이썬과머신러닝 이 대엽
82
참고 - namespace
2021-2 파이썬과머신러닝 이 대엽
83
참고 - namespace
# test_name.py test_name.py
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
2021-2 파이썬과머신러닝 이 대엽
84
파이썬의 Class
2021-2 파이썬과머신러닝 이 대엽
85
파이썬의 Class
2021-2 파이썬과머신러닝 이 대엽
86
Python
2021-2 파이썬과머신러닝 이 대엽
87
Python
Class
명함 출력에 사용된 이름, 이메일, 주소 등을 효과적으로 관리하기 위해
보통 각 데이터에 대해 별도의 리스트 자료구조를 사용
첫 번째 회원에 대한 개인 정보를 얻기 위해서는 name_list[0],
email_list[0], address_list[0]과 같이 각 리스트별로 인덱싱을 수행
데이터와 데이터를 처리하는 함수가 분리돼 있고 함수를 순차적으로 호
출함으로써 데이터를 조작하는 것이 절차지향 프로그래밍
2021-2 파이썬과머신러닝 이 대엽
88
Python
2021-2 파이썬과머신러닝 이 대엽
89
Class
(일반적으로) 대문자로 시작
class CutomerCard:
def set_info(self, name, email, addr):
self.name = name
self.email = email
self.addr = addr
2021-2 파이썬과머신러닝 이 대엽
90
Class
“Lee Daeyup”
“dylee@inha.ac.kr”
“Incheon”
Binding(바인딩)
= 변수에 대입
2021-2 파이썬과머신러닝 이 대엽
91
Class
customer1
“Lee Daeyup”
“dylee@inha.ac.kr”
“Incheon”
customer2
“Chun Wonil”
“wjsdnjsdlf95@naver.com”
“Kyunggi”
2021-2 파이썬과머신러닝 이 대엽
92
Class methd
Method
클래스의 행위를 표현하는 것으로 클래스 내의 함수
인스턴스 메써드(instance method), 클래스 메서드(class method), 정적
메서드(static method)
인스턴스 메써드는 인스턴스 변수에 엑세스할 수 있도록 메써드의 첫
번째 파라미터에 항상 객체 자신을 의미하는 "self"를 파라미터로 함
class Rectangle:
count = 0 # 클래스 변수
# 메서드
def calcArea(self):
area = self.width * self.height
return area
2021-2 파이썬과머신러닝 이 대엽
93
Python
Class
클래스를 이용하여 데이터와 데이터를 조작하는 함수를 하나의 묶음으로
관리할 수 있어 복잡한 프로그램도 더욱 쉽게 작성
(예제) 고객 관리 자료 작성
고객 정보(이름, 이메일 주소, 근무지 주소)를 입력 및 저장
name = "Lee Daeyup"
email = "dylee@inha.ac.kr"
addr = "Incheon"
2021-2 파이썬과머신러닝 이 대엽
94
Python
2021-2 파이썬과머신러닝 이 대엽
95
Python
Class: 객체 지향 프로그래밍(Object oriented programming)
class CustomerCard: class CustomerCard:
def set_info(self, name, email, addr): def __init__(self, name, email, addr):
self.name = name self.name = name
self.email = email self.email = email
self.addr = addr self.addr = addr
def print_info(self): def print_info(self):
print("--------------------") print("--------------------")
print("Name: ", self.name) print("Name: ", self.name)
print("E-mail: ", self.email) print("E-mail: ", self.email)
print("Address: ", self.addr) print("Address: ", self.addr)
print("--------------------") print("--------------------")
2021-2 파이썬과머신러닝 이 대엽