[include(틀:상위 문서, top1=Python)] [include(틀:문자 입력시 주의, c1=\\0, c2=\\\\0)] [include(틀:프로그래밍 언어 문법)] [목차] == 개요 == [[Python]]의 문법을 설명한다. 기준은 3.x대이다. == 편집 지침 == 소스 코드로 예시를 들 때 ||\{{{#!syntax python (소스코드) }}}|| 문법을 활용하여 소스코드를 써 주시기 바랍니다. 예시: {{{#!syntax python print("Hello, Python!") }}} == 자료형 == 파이썬은 변수를 선언할 때 따로 자료형을 지정하지 않는다.[* 자료형이 없는 게 아니라 인터프리터가 알아서 지정한다] 하지만 변수 간 형변환을 할 때에는 필요하다. * {{{str()}}} - {{{float}}}형이나 {{{int}}}형을 변환할 때 사용한다. 제일 기본적으로 쓰인다. * {{{int()}}} - 정수형이다. {{{float}}}형은 반올림한다.[* 정확히 말하자면 뱅커스 라운딩을 사용하기 때문에 상황에 따라 다르다. 원하는 대로 반올림이나 내림이 필요하다면 {{{math}}} 모듈을 이용해야 한다.] * {{{float()}}} - 실수형이다. {{{list()}}}와 {{{tuple()}}}은 서로간 형 변환을 할 때 사용된다. == 입출력 == 기본적으로 출력은 {{{print()}}}, 입력은 {{{input()}}}을 사용한다. {{{input()}}}은 기본적으로 {{{str}}} 형태로 값을 받으며, 특정 자료형 함수를 이용하면 다른 형으로 값을 받을 수 있다. 만약 그 형으로 값이 나오지 않으면 [[예외]] 오류를 뿜는다. {{{#!syntax python print("Hello World!") print("%d" %int) print("%s" %str) }}} {{{#!syntax python a = input("input") b = int(input("input")) c = float(input("input")) }}} == 들여쓰기 == [[Python]] 특유의 디자인 철학에 따라 Python은 분기문과 반복문 등을 사용할 때 들여쓰기를 행해야 한다. 보통 권장되는 것은 4번 띄어쓰기이며, Tab은 권장되지 않으나 일부 텍스트 에디터에서 Tab의 스페이스 개수를 설정할 수 있기 때문에 큰 문제는 아니다. 2번이든 4번이든 한 번 했으면 그걸로 계속 써야 한다. 그렇지 않으면 예외 오류가 일어난다. <예시> {{{#!syntax python if True: print("Hello world") for n in range(0, 10): print(n) #문법 오류 }}} == 함수 == [[Python]]의 함수 정의 키워드는 {{{def}}}이다. 예시를 보자. <예시> {{{#!syntax python def multiply(a, b): return a*b }}} === 람다 함수 === 람다 함수도 사용 가능하다. {{{#!syntax python lambda square n: n**2 }}} == 변수 == 파이썬에서 딱히 변수구분을 하지않는다. === 리스트, 튜플 === 파이썬의 리스트는 말 그대로 순서대로 저장하는 시퀀스이자 변경 가능한 목록(Mutable List)을 말한다. 입력 순서가 유지되며, 내부적으로는 동적 배열로 구현되어 있다. ||<#fff>[[파일:3-7-2.png|width=400]]|| || [[https://www.onlybook.co.kr/entry/algorithm-interview|<파이썬 알고리즘 인터뷰>]] p.172, 책만, 2020 || 타 언어의 [[배열]]처럼 파이썬도 array라는 배열에 해당하는 모듈을 제공하긴 하지만 기본적인 기능만을 제공하며, 사실상 리스트가 배열의 역할을 대체한다. 파이썬의 리스트는 다른 언어에서 제공하지 않는 매우 다양하고 편리한 기능을 제공한다. 리스트를 사용하면 사실상 [[스택(자료구조)]]을 사용할지 [[큐(자료구조)]]를 사용할지를 고민하지 않아도 되며, 스택과 큐에서 사용 가능한 모든 연산을 동시에 제공한다. 리스트는 객체로 되어 있는 모든 자료형을 다음 그림과 같이 포인터로 연결하는 구조로 되어 있다. ||<#fff>[[파일:2-5-2.png|width=400]]|| || [[https://www.onlybook.co.kr/entry/algorithm-interview|<파이썬 알고리즘 인터뷰>]] p.127, 책만, 2020 || 파이썬은 모든 것이 객체며, 파이썬의 리스트는 이들 객체에 대한 포인터 목록을 관리하는 형태로 구현되어 있다. 사실상 연결 리스트에 대한 포인터 목록을 배열 형태로 관리하고 있으며, 그 덕분에 파이썬의 리스트는 배열과 연결리스트를 모두 합친 듯이 강력한 기능과 문법을 제공한다. 리스트는 수정 가능하지만, 튜플은 최초 생성 이후 수정이 불가능하다. {{{list()}}}와 {{{tuple()}}} 함수를 통해 서로 형 변환이 가능하다. 고차원 리스트도 가능하다. <예시> {{{#!syntax python l = [1, 2, 3] #일차원 리스트 t = tuple(l) #튜플로 변환 li = list(t) #리스트로 변환 l = [[1, 2, 3], [1, 2, 3]] #이차원 리스트 li = l[0][2] #li = 3 }}} === 스트링 변수 === 글자로 이루어진 변수를 스트링 변수라고 한다. <예시> {{{#!syntax python >>> a = 'text' }}} 따옴표를 이용하지 않으면 오류가 걸린다. {{{#!syntax python >>> a = text}}} {{{Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'text' is not defined }}} === 딕셔너리 === 파이썬의 딕셔너리는 키/값 구조로 이뤄진 딕셔너리를 말한다. 파이썬 3.7 이상에서는 입력 순서 또한 유지되며, 내부적으로는 해시 테이블(Hash Table)로 구현되어 있다. 3.6 이하에서는 입력 순서를 보장하지 않으므로 유의해야 한다. 중괄호를 사용해서 선언한다. {{{#!syntax python a = {} }}} 다음과 같이 {{{key1}}}, {{{key2}}}는 초기값으로 지정해 선언하거나 {{{key3}}}처럼 나중에 별도로 선언하여 {{{value3}}}라는 값을 할당할 수 있다. {{{#!syntax python >>> a = {'key1':'value1', 'key2':'value2'} >>> a {'key1': 'value1', 'key2': 'value2'} >>> a['key3'] = 'value3' >>> a {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} }}} 값에는 리스트 뿐만 아니라 집합 자료형 등도 모두 가능하다. {{{#!syntax python >>> a = {'key1':[1, 2, 3], 'key2': (4, 5, 6)} >>> a {'key1': [1, 2, 3], 'key2': (4, 5, 6)} }}} === 부울 === 부울이란 참(True)과 거짓(False)으로만 이루어진 자료형이다. 예를 들어서 {{{#!syntax python a == 1 }}} 이라고 입력하면 {{{a}}}가 1이라면 '{{{True}}}',그 외의 것이라면 '{{{False}}}'가 출력된다. {{{#!syntax python while True: code }}} 처럼 무한루프를 만들 수도 있다. [[분류:Python]][[분류: 프로그래밍 언어 문법]] == 슬라이싱 == 파이썬에서는 슬라이싱이라는 매우 편리한 기능을 제공한다. 무엇보다 내부적으로 매우 빠르게 동작한다. 위치를 지정하면 해당 위치의 배열 포인터를 얻게 되며 이를 통해 연결된 객체를 찾아 실제 값을 찾아내는데, 이 과정은 매우 빠르게 진행되므로 리스트나 문자열을 조작할 때는 항상 슬라이싱을 우선으로 사용하는 편이 속도 개선에 유리하다. ||<#fff>[[파일:2-6-1.png|width=300]]|| || [[https://www.onlybook.co.kr/entry/algorithm-interview|<파이썬 알고리즘 인터뷰>]] p.144, 책만, 2020 || ||<rowbgcolor=#C0C0FF><rowcolor=#373a3c><width=90> '''문법''' ||<width=100> '''결과''' || '''설명''' || || {{{S[1:4]}}} || 녕하세 ||인덱스 1에서(0부터 시작) 4 이전까지(4는 포함하지 않는다) 표현한다. 4개를 의미하는 게 아니므로 유의해야 한다.|| || {{{S[1:-2]}}} || 녕하 ||인덱스 1에서 -2 이전까지(-2는 포함하지 않는다) 표현한다. 뒤에서부터는 음수로 접근이 가능하다.|| || {{{S[1:]}}} || 녕하세요 ||문자열의 시작 또는 끝은 생략 가능하다.|| || {{{S[:]}}} || 안녕하세요 ||둘 다 생략하면 사본을 리턴한다. 파이썬은 {{{a=b}}}와 같은 형태로 할당하면 변수의 값이 할당되는 것이 아니라 {{{a}}} 변수가 {{{b}}} 변수를 참조하는 형태가 된다.[br]참조가 아닌 값을 복사하기 위해[:]를 사용할 수 있으며, 이 방식은 문자열이나 리스트를 복사하는 파이썬다운 방식(Pythonic Way)이기도 하다.|| || {{{S[1:100]}}} || 녕하세요 ||인덱스가 지나치게 클 경우 문자열의 최대 길이만큼만 표현된다. S[1:] 과 동일하다.|| || {{{S[-1]}}} || 요 ||마지막 문자(뒤에서 첫 번째)|| || {{{S[-4]}}} || 녕 ||뒤에서 4번째|| || {{{S[:-3]}}} || 안녕 ||뒤에서 3개 글자 앞까지|| || {{{S[-3:]}}} || 하세요 ||뒤에서 3번째 문자에서 마지막까지|| || {{{S[::1]}}} || 안녕하세요 ||1은 기본값으로 동일하다.|| || {{{S[::-1]}}} || 요세하녕안 ||뒤집는다.|| || {{{S[::2]}}} || 안하요 ||2칸씩 앞으로 이동한다.||