<노마드코더 - python으로 웹 스크래퍼 만들기>
1.0 Data Types of Python
variable type
- number : int (정수)
- string : text 형식 / 큰 따옴표(" ") 또는 작은 따옴표(' ') 로 감싸야함
- boolean : True 혹은 False (첫문자 대문자)
- 0 = False
- 0을 제외한 모든 정수 = True
- float : 실수
- None : '존재하지 않음/ 값 없음'
- javascript의 null에 가까운 데이터 타입
- <class 'NoneType'>
- Sequence Types
- list, tuple, range
1.1 Lists in Python
- Mutable Sequence Types
- list = 많은 value들을 열거하는 것
- [ ] 로 감싸주고 ,를 사용하여 구분
Common Sequence Operations
다음 표의 연산들은 대부분의 가변(list)과 불변 시퀀스(tuple, range)에서 지원

표에서 s 와 t 는 같은 형의 시퀀스
n, i, j, k 는 정수
x 는 s 가 요구하는 형과 값 제한을 만족하는 임의의 객체
- x in s
weekday=["Mon","Tue","Wed","Thur","Fri"]
print ("Mon"in weekday) # True
print ("Monday" in weekday) # False
- s + t
weekday=["Mon","Tue","Wed","Thur","Fri"]
weekend=["Sat","Sun"]
print (weekday+weekend)
# ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
- s*n
weekend=["Sat","Sun"]
print (weekend*3) # ['Sat', 'Sun', 'Sat', 'Sun', 'Sat', 'Sun']
print (3*weekend) # ['Sat', 'Sun', 'Sat', 'Sun', 'Sat', 'Sun']
- s[i] : 0부터 시작
weekday=["Mon","Tue","Wed","Thur","Fri"]
print (weekday[3]) # Thur
- s[i:j] : i부터 j바로 전 까지
weekday=["Mon","Tue","Wed","Thur","Fri"]
print (weekday[1:4]) # ['Tue', 'Wed', 'Thur']
- s[i:j:k] : i부터 j바로 전 까지 k의 간격으로
num=[1,2,3,4,5,6,7,8,9]
print (num[2:8]) # [3, 4, 5, 6, 7, 8]
print (num[2:8:1]) # [3, 4, 5, 6, 7, 8]
print (num[2:8:2]) # [3, 5, 7]
print (num[2:8:3]) # [3, 6]
print (num[2:8:4]) # [3, 7]
- len(s)
num=[1,2,3,4,5,6,7,8,9]
print (len(num)) # 9
- min(s), max(s)
num=[1,2,3,4,5,6,7,8,9]
print (min(num)) # 1
print (max(num)) # 9
img ref) https://docs.python.org/ko/3/library/stdtypes.html#sequence-types-list-tuple-range
Mutable Sequence Types

- s[i]=x
week=["Mon","Tue","Wed","Thur","Fri"]
print (week) # ['Mon', 'Tue', 'Wed', 'Thur', 'Fri']
week[3]="Thurs"
print (week) # ['Mon', 'Tue', 'Wed', 'Thurs', 'Fri']
-
s[i:j]=t (t는 iterable)
- iterable > 반복 가능한 객체

num=[1,2,3,4,5,6,7,8,9]
num[3:8]=[100,200,300,400]
print (num) # [1, 2, 3, 100, 200, 300, 400, 9]
- s.append(x)
week=["Mon","Tue","Wed","Thur","Fri"]
print (week) # ['Mon', 'Tue', 'Wed', 'Thur', 'Fri']
week.append("Sat")
print (week) # ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat']
만약 두개를 추가한다면
1 )
week=["Mon","Tue","Wed","Thur","Fri"]
week.append("Sat","Sun")
print (week) # TypeError: append() takes exactly one argument
2 )
week=["Mon","Tue","Wed","Thur","Fri"]
week.append(["Sat","Sun"])
print (week) # ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', ['Sat', 'Sun']]
- s.reverse()
week=["Mon","Tue","Wed","Thur","Fri"] week.reverse() print (week) # ['Fri', 'Thur', 'Wed', 'Tue', 'Mon']
img ref) https://docs.python.org/ko/3/library/stdtypes.html#sequence-types-list-tuple-range
1.2 Tuples and Dicts
Tuples
- Immutable Sequence Types
- 많은 value들을 열거하는 것
- ( ) 로 감싸주고 ,를 사용하여 구분
week={"Mon","Tue","Wed","Thur","Fri"}
Dicts
- { } 사용
- key와 value 사이 : 이용해서 구분 (key:value)
- , 를 이용하여 쌍을 구분
jina = {"name":"Jina","korean":True,"coffee":"Ice_Americano"}
print (jina["name"]) # Jina
- dictionary에 내용 추가
jina = {"name":"Jina","korean":True,"coffee":"Ice_Americano"}
jina["hungry"]=True
print (jina) # {'name': 'Jina', 'korean': True, 'coffee': 'Ice_Americano', 'hungry': True}
1.3 Built-in Functions

- Type 바꾸는 함수
- bool( )
- int( )
- float( )
- str( )
bool() 예시)
print (bool(4)) # True
print (bool(0)) # False
img ref) https://docs.python.org/ko/3/library/functions.html
1.4 Creating a Your First Python Function
- python : Function define
- 들여쓰기로 function의 시작과 끝 구분
(javascript의 { } 가 하는 일을 : 와 들여쓰기가 대신함)
def function():
<수행할 문장>
1.5 Function Arguments
-
Parameter와 Argument를 크게 구분하지는 않음
-
매개변수는 변수(variable)로, 전달인자는 값(value)으로 보는 것이 일반적
parameter
# parameter ( 매개변수 )
def plus(a, b):
return a + b
# 함수의 정의 부분에 나열되어 있는 변수
# 여기서는 plus 함수 정의시에 사용되는 a, b를 parameter
argument
# argument ( 전달인자 )
result = plus(1, 2)
# 함수를 호출할때 전달 되는 실제 값
# 여기서는 plus 라는 함수에 넣어주는 값 1, 2를 argument
ref) https://wayhome25.github.io/etc/2017/12/31/parameter-argument/
def function(Parameter):
<수행할 문장>
def hello(who):
print ("Hello",who)
hello("jina") # Hello jina
hello("world") # Hello world
- 만약 argument에 아무것도 없을 때
def hello(who):
print ("Hello",who)
hello()
# TypeError: hello() missing 1 required positional argument: 'who'
위와 같이 Error 발생
- parameter에 default value주기
def hello(who="python"):
print ("Hello",who)
hello() # Hello python
위와 같이 default value를 주면 argument에 아무것도 없을 때 default value 출력
1.6 Returns
function을 호출할 때 function의 결과 주의
예시) 함수의 결과가 print & return 인 경우
def p_add(a,b):
print(a+b) # 함수의 결과 print
def r_add(a,b):
return a+b # 함수의 결과 return
p_result=p_add(2,3) # 5
r_result=r_add(2,4)
print (p_result) # None
print (r_result) # 6
함수는 한 개의 return만 가질 수 있음
def r_add(a,b):
return a+b
print ("더하기가 끝났습니다.")
print (r_add(2,3)) # 5
return아래의 print는 실행되지 않음
python : 하나의 결과를 return하면 그 function은 종료됨
1.7 Keyworded Arguments
Positional Argument
- 위치에 의존적인 인자
예시 )
def sub(a,b):
return a-b
print (sub(2,3)) # -1
위 예시를 보면 두개의 인자는 순서에 의해서 구분됨 (a=2, b=3으로)
만약 인자의 순서를 신경쓰고 싶지 않은 경우에는 Keyword argument 사용
Keyword Argument
- 위치에 따라서 정해지는 것이 아니라 argument의 이름으로 쌍을 지어주는 것
예시 )
def sub(a,b):
return a-b
result=sub(b=100,a=300)
print (result) # 200
print (sub(b=20,a=30)) # 10
위와 같이 인자에 값을 지정해주면 순서와 상관없이 인자 구분 가능
def say_hello(name, lang):
return "Hello i am " + name+ ". I am studying " + lang
hello_1 = say_hello ("jina", "python")
hello_2 = say_hello (lang="python", name="jina")
print (hello_1) # Hello i am jina. I am studying python
print (hello_2) # Hello i am jina. I am studying python
hello_1 : positional argument
hello_2 : keyword argument
format ( )
" 문자열 ". formtat( ) 형식 사용
-
문자열 대입
apple = "I eat { } apples".format("five") print (apple) # I eat five apples
-
숫자열 대입
apple = "I eat { } apples".format(5) print (apple) # I eat 5 apples
-
format()을 function에 적용
def say_hello(name, lang):
return "Hello i am { }. I am studying { } ".format(name,lang)
hello=say_hello("jina","python")
print (hello) # Hello i am jina. I am studying python
{ } 에 숫자를 넣어서 순서 지정 가능 / 숫자는 0부터 시작
def say_hello(name, lang):
return "Hello i am {0}. I am studying {1} ".format(name,lang)
hello=say_hello("jina","python")
print (hello) # Hello i am jina. I am studying python
def say_hello(name, lang):
return "Hello i am {1}. I am studying {0} ".format(name,lang)
hello=say_hello("jina","python")
print (hello) # Hello i am python. I am studying jina
- format() + keyword argument
def say_hello(name, lang):
return "Hello i am { }. I am studying { } ".format(name,lang)
hello_1=say_hello(name="jina", lang="python")
hello_2=say_hello(lang="jina", name="python")
print (hello_1) # Hello i am jina. I am studying python
print (hello_2) # Hello i am python. I am studying jina
f 문자열 포매팅
파이썬 3.6 버전부터 사용할 수 있는 기능
다음과 같이 문자열 앞에 f 접두사를 붙이면 f 문자열 포매팅 기능 사용 가능
-
f 문자열 포매팅은 아래와 같이 변수 값을 생성한 후에 그 값을 참조할 수 있음
name = '홍길동' age = 30 ex=f'나의 이름은 {name}입니다. 나이는 {age}입니다.' print (ex) # 나의 이름은 홍길동입니다. 나이는 30입니다.
-
f 문자열 포매팅은 표현식을 지원
표현식 : 문자열 안에서 변수와 +, -와 같은 수식을 함께 사용하는 것age = 30 ex=f'나는 내년이면 {age+1}살이 된다.' print (ex) # 나는 내년이면 31살이 된다.
ref ) https://wikidocs.net/13#_16
-
f 문자열 포매팅을 function에 적용
def say_hello(name, lang):
return f"Hello i am {name}. I am studying {lang} "
hello=say_hello("jina","python")
print (hello) # Hello i am jina. I am studying python
- f 문자열 포매팅 + keyword argument
def say_hello(name, lang):
return f"Hello i am {name}. I am studying {lang} "
hello=say_hello(lang="python", name="jina")
print (hello) # Hello i am jina. I am studying python
'python > Python으로 웹 스크래퍼 만들기' 카테고리의 다른 글
2. Building a Job Scrapper_4 (0) | 2020.03.25 |
---|---|
2. Building a Job Scrapper_3 (0) | 2020.03.25 |
2. Building a Job Scrapper_2 (0) | 2020.03.24 |
2. Building a Job Scrapper_1 (0) | 2020.03.24 |
1. Theory_2 (0) | 2020.03.24 |
댓글