본문 바로가기
Python

Python Theory

by Adam92 2020. 5. 27.

Data Types

  • valiable 에 저장할 수 있는 타입

ex)

a_string = "like this" 
  a_number = 3 
  a_float = 3.13 
  a_boolean = False 
  a_none = None 
  • snake case : 변수 이름을 아주 길~게 지어야 할때 단어끼리 분리되길 원할때 쓰이는데, 단어마다 _를 붙여주고 모두 소문자여야 한다.

    Code

long_long_number = 3

List

리스트는 대괄호 '[ ]' 으로 데이터들을 감싸며 표현하며, 감싸인 데이터들을 요소(element)라고 한다.

element가 없는 비어있는 list(즉, empty_list)도 표현가능하다.
element의 type이 Integer인경우 그대로 표현하고,
string 일 경우 쌍따옴표("") 또는 홀따옴표('')로 감싸서 표현한다.
element는 integer나 string등 같이 표현해도 되고, list안에 list로 element를 표현할 수 있다.

List의 특징을 다음과 같다

  • '[ ]'으로 element를 둘러싼다.

  • element들의 순서가 있다 (순서들을 인덱스라고 한다)

  • element들의 생성, 삭제, 수정이 가능하다.

    Code

    days = ["Mon", "Tue", "wed", "Thur"]
    print(days)
    days.append("Fri")
    print(days)

    Output

    'Mon', 'Tue', 'wed', 'Thur'
    'Mon', 'Tue', 'wed', 'Thur', 'Fri'

1. Tuple

Tuple은 element들을 '()'로 감싸고 있어 List와 비슷한 역할을 하지만, 다른 특성을 가지고 있다.
Tuple은 List처럼 elemnet들의 순서가 있지만 element값을 변경할 수 없다.

Tuple의 특징을 다음과 같다

  • '( )'으로 element를 둘러싼다.

  • element들의 순서가 있다

  • element들의 생성, 삭제, 수정이 불가능하다.

    Code

    x = (1, 2, 3)

2. Dictionary

데이터가 다양해지고 속성과 값들의 표현들이 많아져 단순 List나 tuple로 데이터를 표현하기가 힘들다. 따라서 데이터들의 대응관계(속성과 값)를 잘 나타낼 수 있는 자료형이 딕셔너리(Dictionary)이다.
JS의 오브젝트와 비슷하다. Dictionary에서도 Key와 Value로 한 쌍을 이루어 element를 갖는다.

Code

adam = {
    "name" : "Adam",
    "age" : "29",
    "krean" : True,
    "fav_food" : ["Kimchi", "Sashimi"]
}

Dictionary에 항목 추가할때

adam["hansome"] = True

함수 (function)

일정한 작업을 수행하는 코드블럭이다.
수학의 함수와 동일하게, 인풋이 있으면 아웃풋이 있는 간단한 구조이다.
파이썬 함수에서는 인풋을 'parameter', 아웃풋은 'return' 값이라고 한다.

def 키워드를 사용하여 정의하며, 아래와 같은 문법을 갖는다.js와는 다르게 :를 붙여야되고, 들여쓰기를 하여 function의 body를 구분한다.

def say_hello():
    print("hello")
    print("bye")

function 에 기본 argument를 줄수도 있다.

def minus(a, b=0):
    print(a-b)
minus(3)

리스트는 대괄호'[]'으로 데이터들을 감싸며 표현하며, 감싸인 데이터들을 요소(element)라고 한다.

element가 없는 비어있는 list(즉, empty_list)도 표현가능하다.
element의 type이 Integer인경우 그대로 표현하고,
string 일 경우 쌍따옴표("") 또는 홀따옴표('')로 감싸서 표현한다.
element는 integer나 string등 같이 표현해도 되고, list안에 list로 element를 표현할 수 있다.

List의 특징을 다음과 같다

  • '[ ]'으로 element를 둘러싼다.

  • element들의 순서가 있다

  • element들의 생성, 삭제, 수정이 가능하다.

    Code

    days = ["Mon", "Tue", "wed", "Thur"]
    print(days)
    days.append("Fri")
    print(days)

    Output

    'Mon', 'Tue', 'wed', 'Thur'
    'Mon', 'Tue', 'wed', 'Thur', 'Fri'

Tuple


Tuple은 element들을 '()'로 감싸고 있어 List와 비슷한 역할을 하지만, 다른 특성을 가지고 있다.
Tuple은 List처럼 elemnet들의 순서가 있지만 element값을 변경할 수 없다.

Tuple의 특징을 다음과 같다

  • '( )'으로 element를 둘러싼다.

  • element들의 순서가 있다

  • element들의 생성, 삭제, 수정이 불가능하다.

    Code

    x = (1, 2, 3)

Dictionary

데이터가 다양해지고 속성과 값들의 표현들이 많아져 단순 List나 tuple로 데이터를 표현하기가 힘들다. 따라서 데이터들의 대응관계(속성과 값)를 잘 나타낼 수 있는 자료형이 딕셔너리(Dictionary)이다.
JS의 오브젝트와 비슷하다. Dictionary에서도 Key와 Value로 한 쌍을 이루어 element를 갖는다.

Code

adam = {
    "name" : "Adam",
    "age" : "29",
    "krean" : True,
    "fav_food" : ["Kimchi", "Sashimi"]
}

Dictionary에 항목 추가할때

adam["hansome"] = True

함수 (function)


일정한 작업을 수행하는 코드블럭이다.
수학의 함수와 동일하게, 인풋이 있으면 아웃풋이 있는 간단한 구조이다.
파이썬 함수에서는 인풋을 'parameter', 아웃풋은 'return' 값이라고 한다.

def 키워드를 사용하여 정의하며, 아래와 같은 문법을 갖는다.js와는 다르게 :를 붙여야되고, 들여쓰기를 하여 function의 body를 구분한다.

def say_hello():
    print("hello")
    print("bye")

 

▶ Positional arguments

 

  • 흔히 보는 일반적인 인자입니다.
  • 함수에서 정의한 위치대로 대입합니다.

 

 

 

 

 

 

 

 

 

Keyword Arguments

 

  • 순서 대신에 parameter 이름으로 맞추어서 값을 전해줄 수 있습니다. 이를 keyword argments 라고 합니다.
  • Keyword arguments 방식으로 parameter 값을 전해주면 실제 parameter 순서가 바뀌어도 괜찮습니다.

 

 

 

 

 

▶ Mixing positional arguments and keyword arguments

 

  • 순서를 맞추어서 parameter 값을 전해주는 positional arguments와 keyword arguments를 혼용하여 사용하는것도 가능합니다.

 

 

 

 

 

 

 

 

 

다만 여기서 중요한것은 keyword arguments 는 순서가 바뀌어도 상관 없지만 positional arguments 부분은 순서를 지켜줘야한다.

 

Parameter Default Value

 

º 함수의 parameter에 default 값을 정의해 줄 수 도 있습니다.

 

º  Default 값이 정의된 paramter는 함수가 호출될때 값이 넘겨지 않아도 괜찮습니다. 값이 넘겨지 않은 경우 default 값이 자동으로 넘겨지게 됩니다.

 

º 다만 조심해야 할점은 default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter 보다 먼저 위치해 있으면 안된다는 점입니다.

 

 

Code

def i_love_code(name="정우성", coding):
    print(f"{name} loves {coding}")

Result

SyntaxError: non-default argument follows default argument​

 - 자세한이유를 stack overflow에서 찾아보았다.

default argument

 


더자세한 인수들

위치 인수(positional arguments),

가변 인수(variable length arguments),

가변 키워드 인수 (variable length keyword arguments)에 대해서 다음장에서 다뤄보겠다.

'Python' 카테고리의 다른 글

Modules and Package (Feature)  (0) 2020.06.03
Modules and Package  (0) 2020.06.02
Class  (0) 2020.06.01
List : 추가 와 변경  (0) 2020.05.28
가변인수와 가변키워드인수  (0) 2020.05.27