📌 What Python?

Python은 네덜란드계 소프트웨어 엔지니어인 귀도 반 로썸(Guido van Rossum)이 발표한 고급 언어입니다.

Python은 다른 프로그램 언어들과 호환성이 뛰어나고, 다양한 라이브러리 사용이 가능합니다. 데이터 수집, 분석, 가공, 시각화 등에 용이하기 때문에 인공지능, 웹, 빅데이터 분석, 해킹 도구와 같은 분야에서 많이 사용되고 있습니다.


인터프리터(interpreter)

Python은 소스 코드를 통으로 다른 언어로 번역하고 실행하는 컴파일러 방식의 언어(ex. C, C++)와 달리 소스 코드를 한 줄 한 줄 실시간으로 실행하는 인터프리터 방식의 언어입니다.

  • 인터프리터(interpreter)

    정의 : 소스 코드를 바로 실행하는 컴퓨터 프로그램 / 환경 (실시간 번역)

    특징 : 소스 코드를 한 줄씩 직접 읽어 들이며 번역과 실행을 동시에 진행, 별도의 실행 파일이 존재하지 않습니다
    → 실행 속도가 느리다.(C와 Python 비교시 10~350배)

    대표적 언어 : Python, Javascript

  • 컴파일러(compiler)

    정의 : 소스 코드를 다른 언어로 번역하는 프로그램 (통번역)

    특징 : 소스 코드를 목적 코드(ex. 기계어)로 번역, 실행 가능한 프로그램을 생성합니다.
    → 실행 속도가 매우 빠르다.

    대표적 언어 : C, C++


인덴트(indent)

대부분의 코딩을 할 때는 가독성을 위해 들여 쓰기하고, {} 를 통해 영역을 지정합니다. 하지만 Python은 들여 쓰기를 통해 영역을 지정합니다. 또한 코드 블록을 구분할 때는 if, for, def등등 뒤에 : 을 쓰고 그다음 줄에서 들여 쓰기를 통해 코드 블록을 구성합니다. (cf. C, C++과 달리 문장의 끝에 ;(세미콜론)을 붙이지 않습니다.)

>>> ...
>>> if a==b :
>>>	print("a와 b는 같습니다.")
>>> ...





📌 출력 함수 Print() & 매개변수

사용 형태는 print([출력 데이터]) 형식으로, 출력 데이터 마지막에 줄바꿈(New line) 매개변수가 포함됩니다.

>>> print(10)
>>> print('ABC')
>>> print("ABC")
>>> print('A', 'B', 'C')
>>> print('A' + 'B' + 'C')

10
ABC
ABC
A B C
ABC
  • 문자열을 출력할 때는 ‘ ’ 또는 “ ” , ‘’’ ‘’’ , “”” “””로 감싸서 입력합니다.
  • 문자 / 숫자 여러 개를 이어서 출력할 때는, , 또는 + (문자열 덧셈)를 사용합니다.

특수문자 출력 & 개행 문자

>>> print('"Hello World"')
>>> print("'Hello World'")
>>> print('"hello Word\'')
>>> print('Python \n World')

"Hello World"
'Hello World'
"hello Word'
Python
 World
  • \n : 줄바꿈 (New line)
  • \t : 수평 탭(Tab)
  • \\ : \ (백슬래시)
  • \” : “ (큰 따옴표)
  • \’ : ‘ (작은 따옴표)

매개변수

  • sep : value(객체)와 value 사이에 삽입할 문자열(기본값 : 공백)

    string inserted between values, default a space.

  • end : 마지막 value 뒤에 붙는 문자열(기본값 : 줄바꿈)

    string appended after the last value, default a newline.

    >>> print('value1', 'value2', 'value3', sep='🌝', end='🌚')
    
    value1🌝value2🌝value3🌚
  • file : print value를 저장할 파일(기본값 : sys.stdut)

    a file-like object (stream); defaults to the current sys.stdout.

    >>> with open(r'C:\Users\dongjun\program\python\test.text', 'w') as f:
     >>>    print('Hello World', file=f)
    실행 결과 :
  • flush : value를 스트림 또는 파일에 즉시 기록할지 또는 버퍼링(buffering) 하고 나중에 출력할지의 여부를 결정하는 데 사용되는 방법입니다. 기본적으로 print() 함수는 value를 버퍼링 합니다. 즉, 출력하려는 값은 실제로 출력 스트림에 쓰기(출력) 전에 먼저 버퍼(buffer)에 저장됩니다. 이 버퍼링은 출력 스트림에 쓰는(출력되는) 것이 느려질 수 있기 때문에 많은 value가 기록되는 상황에서 성능을 저하시킬 수 있습니다. 때문에 버퍼가 가득 차지 않은 경우에도 출력 스트림에 즉시 작성되도록 할 수 있는데, 이때, flush 매개변수가 사용됩니다.

    print()를 호출할 때 flush=True를 설정하면 버퍼가 가득 차지 않더라도 value가 즉시 출력 스트림에 기록됩니다. 이는 실시간 로깅 또는 진행률 업데이트와 같이 value가 즉시 출력되도록 해야 하는 상황에서 유용하게 사용될 수 있습니다.

    whether to forcibly flush the stream.

    >>> import time
     >>>
     >>> for i in range(10):
     >>>     print(f"i : {i}/10")
     >>>     time.sleep(1)
    
     i : 0/10
     i : 1/10
     i : 2/10
     i : 3/10
     i : 4/10
     i : 5/10
     i : 6/10
     i : 7/10
     i : 8/10
     i : 9/10

    위 코드에서 print() 함수는 for() 가 실행될 때, i 값의 변화를 출력하는 데 사용됩니다. 기본적으로 출력은 버퍼링 되므로 i 값의 변화가 즉시 표시되지 않습니다. 그러나 다음과 같이 print() 문에 매개변수 flush=True를 추가하면

    >>> import time
     >>>
     >>> for i in range(10):
     >>>    print(f"i : {i}/10", flush=True)
     >>>    time.sleep(1)
     
     i : 0/10
     i : 1/10
     i : 2/10
     i : 3/10
     i : 4/10
     i : 5/10
     i : 6/10
     i : 7/10
     i : 8/10
     i : 9/10

    위와 같이 i 값의 변화가 버퍼링 되어 나중에 출력되지 않고 즉시 출력됩니다.






📌 변수(variable)

변수는 변하는 수, 특정한 형식을 갖는 값을 저장하는 공간입니다. (값을 저장하는 공간의 이름)

변수

  • 숫자 자료형(Number dada type)
    • int(정수형)
    • float(실수형)
    • complex(복소수형) (i → j)
  • bool 자료형(bool data type)
    True 또는 False 두 가지 형태를 갖는 자료형으로, 프로그램의 실행 흐름을 제어할 때 사용합니다.

    >>> num = True
     >>> if num :
     >>>     print("True")
     >>> else : 
     >>>     print('False')
    
     True

    참/거짓을 판단할 때, True0False = 0 으로 바꿔서 사용할 수 있습니다.

    >>> num1 = 10
     >>> if num1 :
     >>>     print("True")
     >>> else : 
     >>>     print('False')
     >>> print(type(num1))
     >>> 
     >>> num2 = 0
     >>> if num2 :
     >>>     print("True")
     >>> else : 
     >>>     print('False')
     >>> print(type(num2))
    
     True
     <class 'int'>
     False
     <class 'int'>

    cf) 자료형의 참/거짓

    True / False
    ‘hello’, “python”등의 문자열True
    “”False
    [1, 2, ,3]True
    [], (), {}False
    1True
    0, NoneFalse

변수 선언

변수 선언은 [변수명] = [값] 형식으로 작성하며, Python에서 자동으로 자료형을 추론합니다.

>>> a = 10
>>> b = 10.5
>>> c = 10 + 5j
>>> d = True
>>> print(type(a))  # type([변수명]) : 변수의 데이터 타입 확인 함수
>>> print(type(b))
>>> print(type(c)) 
>>> print(type(d))

<class 'int'>
<class 'float'>
<class 'complex'>
<class 'bool'>

또한 여러 개의 변수를 , 를 통해 한 문장으로 초기화할 수 있습니다.

>>> a, b, c = 10, 10.1, 10j
>>> print(type(a))
>>> print(type(b))
>>> print(type(c))
>>> print(a, b, c)

<class 'int'>
<class 'float'>
<class 'complex'>
10 10.1 10j





📌 연산자

산술 연산자

연산자의미
+덧셈
-뺄셈
*곱셈
**지수(제곱)
/나눗셈 (int형을 int형으로 나누면 → float)
//
%나머지

복합 대입 연산자

연산자의미
+=A += B → A = A + B
-=A -= B → A = A - B
*=A = B → A = A B
**=A = B → A = A B
/=A /= B → A = A / B
//=A //= B → A = A // B
%=A %= B → A = A % B
&=A &= B → A와 B를 AND 비트 연산 후 A에 대입
|=A |= B → A와 B를 OR 비트 연산 후 A에 대입
^=A ^= B → A와 B를 XOR 비트 연산 후 A에 대입
<<=A <<= B → A를 B만큼 왼쪽으로 시프트 연산 후 A에 대입
>>=A >>= B → A를 B만큼 오른쪽으로 시프트 연산 후 A에 대입

else

연산자의미
=A = B → A에 B를 대입
~A = ~A → A를 NOT 비트 연산 후 A에 대입

관계 연산자

연산자의미반환값
>>True / False
<<True / False
>=True / False
<=True / False
=== (같은지 비교)True / False
!=!=True / False

논리 연산자

논리식을 결합하거나 부정할 때 사용됩니다.

  • and 연산자
    두 논리식이 모두 True인 경우에만 True를 반환하고 그렇지 않으면 False를 반환합니다.

    >>> print(True and True)
    >>> print(True and False)
    >>> print(False and False)
    >>> print(10 > 100 and 1 == 1)
    >>> print(10 < 100 and 1 == 1)
    	
    True
    False
    False
    False
    True
  • or 연산자
    두 논리식 중 하나라도 True 이면 True를 반환하고 그렇지 않으면 False를 반환합니다.

    >>> print(True or True)
    >>> print(True or False)
    >>> print(False or False)
    >>> print(10 > 100 or 1 == 1)
    >>> print(10 < 100 or 1 == 1)
    
    True
    True
    False
    True
    True
  • not 연산자
    뒤에 오는 논리식의 결과를 부정합니다.

    >>> print(not True)
    >>> print(not False)
    >>> print(not (10 > 100 or 1 == 1))
    >>> print(not (10 < 100))
    
    False
    True
    False
    False
  • XOR 연산자
    ^ 기호로 표시되며 두 논리식의 결과가 다르면 True , 같으면 False 를 반환합니다.

    >>> print(True ^ True)
    >>> print(True ^ False)
    >>> print(False ^ False)
    >>> print(10 > 100 ^ 1 == 1)
    >>> print(10 < 100 ^ 1 > 2)
    
    False
    True
    False
    False
    True





📌 입력 함수 input()

사용자로부터 입력을 받는데 사용되는 함수로, 기본 형식은 input() 입니다. 입력을 받을 때, 안내 문구를 합께 출력하려면 input([안내 문구]) 형식으로 작성합니다.

>>> num1 = input()
>>> num2 = input('입력하세요 : ')
>>> print(num1, num2, 'num1과 num2의 출력값입니다.')

Hello
입력하세요 : World
Hello World num1과 num2의 출력값입니다.

input() 함수는 입력된 값을 문자열(str)로 저장합니다. 다른 자료형으로 저장하려면 int(), float() 등의 형 변환 함수를 통해 [변수] = [자료형](input()) 형식으로 작성합니다.

>>> num1 = input('입력1 : ')
>>> num2 = int(input('입력2 : '))
>>> num3 = float(input('입력3 : '))
>>> print(type(num1))
>>> print(type(num2))
>>> print(type(num3))

입력1 : 123
입력2 : 123
입력3 : 123
<class 'str'>
<class 'int'>
<class 'float'>

split() 함수

문자열을 구분자를 기준으로 분할하여 리스트(list)로 반환해 주는 함수입니다. 기본 형식은 [문자열].split([구분자]) 이며, 기본 구분자는 ‘띄어쓰기(space)’입니다. 문자열의 분할 횟수를 지정하려면 [문자열].split([구분자], [분할 횟수]) 형식으로 작성합니다.

>>> string = 'a a a a a bbb,c,c,c,c'
>>> print(string.split())
>>> print(string.split(' '))
>>> print(string.split(','))
>>> print(string.split(' ', 3))
>>> print(type(string.split()))

['a', 'a', 'a', 'a', 'a', 'bbb,c,c,c,c']
['a', 'a', 'a', 'a', 'a', 'bbb,c,c,c,c']
['a a a a a bbb', 'c', 'c', 'c', 'c']
['a', 'a', 'a', 'a a bbb,c,c,c,c']
<class 'list'>

input() 함수를 통해 여러 개의 값을 입력받고자 할 때, split() 함수를 사용할 수 있습니다.

>>> print()
>>> num = input().split()
>>> print('num =', num)
>>> print(type(num))

sunrin internet high school
num = ['sunrin', 'internet', 'high', 'school']
<class 'list'>
>>> num_a, num_b, num_c = input().split()
>>> print('num_a =', num_a, ', num_b =', num_b, ', num_c =', num_c)
>>> print(type(num_a), type(num_b), type(num_c))

aaa bbb ccc
num_a = aaa , num_b = bbb , num_c = ccc
<class 'str'> <class 'str'> <class 'str'>

위와 같이 서로 다른 n개의 값을 입력받아 n개의 변수에 할당하는 상황에서는 입력받은 값을 언패킹(unpacking)하여 각각의 변수에 할당합니다.


map() 함수

iterable(반복 가능한 자료형) 객체의 모든 요소를 지정된 함수로 처리하여 새로운 iterator(값을 차례로 꺼낼 수 있는 자료형) 객체를 반환하는 함수입니다. 사용 형식은 map([함수명], [iterable]) 입니다.

>>> number = [1, 2, 3, 4, 5, 6]
>>> Number_of_squares_1 = map(lambda x : x**2, number)
>>> print(Number_of_squares_1)
>>> print(list(Number_of_squares_1))
>>>
>>> Number_of_squares_2 = map(lambda x : x**2, [1, 2, 3, 4, 5, 6])
>>> print(list(Number_of_squares_2))

<map object at 0x00000158ED3BB790>
[1, 4, 9, 16, 25, 36]
[1, 4, 9, 16, 25, 36]

위에서 확인할 수 있듯이 map()함수는 기본적으로 map 객체(map object) 형태이기 때문에 list와 같은 형태로 변환해야 원하는 값을 확인할 수 있습니다.

input() 함수를 통해 특정 자료형으로 여러 개의 값을 입력받고자 할 때, map() 함수를 사용할 수 있습니다.

>>> a, b, c = map(int, input().split())
>>> print('a =', a, type(a), 'b =', b, type(b), 'c =', c, type(c))

11 22 33
a = 11 <class 'int'> b = 22 <class 'int'> c = 33 <class 'int'>

사진 출처(컴파일러, 인터프리터) : 장철원(Cheolwon Jang) / 로스카츠의 AI 머신러닝

profile
sunrin 117th

0개의 댓글