<노마드코더 - python으로 웹 스크래퍼 만들기>
다음 표의 연산들은 대부분의 가변(list)과 불변 시퀀스(tuple, range)에서 지원
표에서 s 와 t 는 같은 형의 시퀀스
n, i, j, k 는 정수
x 는 s 가 요구하는 형과 값 제한을 만족하는 임의의 객체
weekday=["Mon","Tue","Wed","Thur","Fri"]
print("Mon"in weekday) // True
print("Monday" in weekday) // False
weekday=["Mon","Tue","Wed","Thur","Fri"]
weekend=["Sat","Sun"]
print(weekday+weekend)
// ['Mon', 'Tue', 'Wed', 'Thur', 'Fri', 'Sat', 'Sun']
weekend=["Sat","Sun"]
print(weekend*3) // ['Sat', 'Sun', 'Sat', 'Sun', 'Sat', 'Sun']
print(3*weekend) // ['Sat', 'Sun', 'Sat', 'Sun', 'Sat', 'Sun']
weekday=["Mon","Tue","Wed","Thur","Fri"]
print(weekday[3]) // Thur
weekday=["Mon","Tue","Wed","Thur","Fri"]
print(weekday[1:4]) // ['Tue', 'Wed', 'Thur']
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]
num=[1,2,3,4,5,6,7,8,9]
print(len(num)) // 9
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
week=["Mon","Tue","Wed","Thur","Fri"]
print(week) // ['Mon', 'Tue', 'Wed', 'Thur', 'Fri']
week[3]="Thurs"
print(week) // ['Mon', 'Tue', 'Wed', 'Thurs', 'Fri']
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]
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']]
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
week={"Mon","Tue","Wed","Thur","Fri"}
jina = {"name":"Jina","korean":True,"coffee":"Ice_Americano"}
print(jina["name"]) // Jina
jina = {"name":"Jina","korean":True,"coffee":"Ice_Americano"}
jina["hungry"]=True
print(jina) // {'name': 'Jina', 'korean': True, 'coffee': 'Ice_Americano', 'hungry': True}
bool() 예시)
print(bool(4)) // True
print(bool(0)) // False
img ref) https://docs.python.org/ko/3/library/functions.html
def function():
<수행할 문장>
# parameter ( 매개변수 )
def plus(a, b):
return a + b
함수의 정의 부분에 나열되어 있는 변수
여기서는 plus 함수 정의시에 사용되는 a, b를 parameter
# 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
def hello(who):
print("Hello",who)
hello()
// TypeError: hello() missing 1 required positional argument: 'who'
위와 같이 Error 발생
def hello(who="python"):
print("Hello",who)
hello() // Hello python
위와 같이 default value를 주면 argument에 아무것도 없을 때 default value 출력
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
def r_add(a,b):
return a+b
print("더하기가 끝났습니다.")
print(r_add(2,3)) // 5
return아래의 print는 실행되지 않음
python : 하나의 결과를 return하면 그 function은 종료됨
예시 )
def sub(a,b):
return a-b
print(sub(2,3)) // -1
위 예시를 보면 두개의 인자는 순서에 의해서 구분됨 (a=2, b=3으로)
만약 인자의 순서를 신경쓰고 싶지 않은 경우에는 Keyword 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
" 문자열 ". 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
파이썬 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