1. Theory_1

Jina·2020년 3월 2일
0

<노마드코더 - 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']
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 ( 매개변수 )
       
    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
  • 만약 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

    ref) https://wikidocs.net/13#_16

  • 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

0개의 댓글