Python 공식문서 - 3.파이썬의 간략한 소개

Min·2022년 9월 28일
0

Python

목록 보기
3/4
post-thumbnail

점프투 파이썬으로 문법을 전체적으로 훑어보았다.
큰 틀은 잡기에 좋았지만 상세내용은 파이썬 공식문서를 통해 내용을 정리해 보고자 한다.

1.파이썬을 계산기로 사용하기

1) 숫자
int형(정수) : 2, 10...
float형(실수) : 5.0, 1.6...
나눗셈 (/) : 항상 float를 반환
몫 : //
나머지 : %
거듭제곱 : **

>>> 17 / 3  # 나눗셈
5.666666666666667
>>> 17 // 3  # 몫
5
>>> 17 % 3  # 나머지
>>> 5 ** 2  # 거듭제곱
25
# cf) 거듭제곱 참고
# ** 가 - 보다 우선순위가 높으므로
# -3**2 는 -(3**2) 로 해석되어서 결과는 -9 가 된다.
# 9 를 얻고 싶으면 (-3)**2 를 사용할 수 있다.

변수가 “정의되어” 있지 않을 때 (값을 대입하지 않았을 때)
사용하려고 시도하는 것은 에러를 일으킨다.

>>> n  # 정의되지 않은 변수에 접근 시도
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'n' is not defined

서로 다른 형의 피연산자를 갖는 연산자는 정수 피연산자를 실수로 변환

>>> 4 * 3.75 - 1
14.0

대화형 모드에서는, 마지막에 인쇄된 표현식은 변수 _ 에 대입된다.

>>> a = 10
>>> b = 20
>>> a * b
200
>>> a + _  # 표현식 a * b는 변수 _에 대입 
210

이 변수는 사용자로서는 읽기만 가능한 것처럼 취급되어야 한다.
값을 직접 대입하지 하면 안된다.
만약 그렇게 한다면 같은 이름의 지역 변수를 새로 만드는 것이 되는데,
내장 변수의 마술 같은 동작을 차단하는 결과를 낳게된다.

Decimal 이나 Fraction 등의 다른 형의 숫자들도 지원.
복소수 에 대한 지원도 내장하고 있는데,
허수부를 가리키는데 j 나 J 접미사를 사용 (예를 들어 3+5j).

2) 문자열
작은 따옴표('...') 나 큰 따옴표("...")로 둘러쌀 수 있는데
모두 같은 결과를 주게된다.

따옴표를 이스케이핑 할 때는 \ 를 사용할 수 있다.
(cf. \n 과 같은 특수 문자들은 작은 따옴표와 큰 따옴표에서 같은 의미가 있다.
둘 간의 유일한 차이는 작은 따옴표 안에서 " 를 이스케이핑할 필요가 없지만
\' 는 이스케이핑 시켜야 하며, 그 역도 성립한다.)

print() 함수는 따옴표를 생략하고, 이스케이핑된 특수 문자를 출력해서 더 읽기 쉬운 출력을 만들어 낸다.

>>> 'Min'  # 작은 따옴표
'Min'
>>> 'Min\'s'  # 작은 따옴표 \이스케이핑
"Min's"
>>> "Min's"  # 큰 따옴표 \이스케이핑
"Min'"
>>> s = '첫째 줄.\n둘째 줄.'  # \n : 새로운 줄
>>> s  # print() 을 사용X, \n 은 아웃풋에 포함
'첫째 줄.\n둘째 줄.'
>>> print(s)  # print() 사용O : \n 은 새로운 라인을 생성
First line.
Second line.

\ 뒤에 나오는 문자가 특수 문자로 취급되게 하고 싶지 않다면,
첫 따옴표 앞에 r 을 붙여서 날 문자열 (raw string) 을 만들 수 있다.

>>> print('C:\some\name')  # here \n means newline!
C:\some
ame
>>> print(r'C:\some\name')  # note the r before the quote
C:\some\name

문자열 리터럴은 여러 줄로 확장될 수 있다.
한 가지 방법은 삼중 따옴표를 사용하는 것이다.
"""...""" 또는 '''...'''. 줄 넘김 문자는 자동으로 문자열에 포함된다.
하지만 줄 끝에 \ 를 붙여 이를 방지할 수도 있다.

>>> print("""
min \ # 다음 줄로 넘어가지 않는다. 
phython
""")
min phython

문자열은 + 연산자로 이어붙이고, * 연산자로 반복시킬 수 있다.

>>> 2 * 'min' + ' python'
'minmin python'

두 개 이상의 문자열 리터럴(즉, 따옴표로 둘러싸인 것들)이
연속해서 나타나면 자동으로 이어 붙여진다.

>>> 'Py' 'thon'
'Python'

이 기능은 긴 문자열을 쪼개고자 할 때 특별히 쓸모 있습니다:

>>> text = ('hapyy '
...         'coding!')
>>> text
'happy coding!'

이것은 오직 두 개의 리터럴에만 적용될 뿐 변수나 표현식에는 해당하지 않는다.

>>> prefix = 'Py'
>>> prefix 'thon'
  File "<stdin>", line 1
    prefix 'thon'
           ^^^^^^
SyntaxError: invalid syntax

>>> ('un' * 3) 'ium'
  File "<stdin>", line 1
    ('un' * 3) 'ium'
               ^^^^^
SyntaxError: invalid syntax

변수들끼리 혹은 변수와 문자열 리터럴을 이어붙이려면 + 를 사용

>>> prefix + 'thon'
'Python'

문자열은 인덱스 (서브 스크립트) 될 수 있다.
문자를 위한 별도의 형은 없으며, 단순히 길이가 1인 문자열입니다:

>>> word = 'Python'
>>> word[0]
'P'
>>> word[-1]
'n'

인덱싱에 더해 슬라이싱(slicing) 도 지원된다.
인덱싱이 개별 문자를 얻는데 사용되는 반면,
슬라이싱은 부분 문자열(substring)을 얻는 데 사용

>>> word[2:5]  # 2이상 5미만
'tho'
>>> word[:2]   # 첫 번째 인덱스 default : 0
'Py'
>>> word[4:]
'on'
>>> word[-2:]
'on'

시작 위치의 문자는 항상 포함되는 반면,
종료 위치의 문자는 항상 포함되지 않는 것에 주의.
이 때문에 s[:i] + s[i:] 는 항상 s 와 같아진다.

>>> word[:2] + word[2:]
'Python'

너무 큰 값을 인덱스로 사용하는 것은 에러가 나지만
범위를 벗어나는 슬라이스 인덱스는 슬라이싱할 때 부드럽게 처리된다.

# 인덱싱 : 에러O
>>> word[42]  # word는 6개의 문자열을 가지고 있음
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: string index out of range

# 슬라이싱 : 에러X
>>> word[4:42]
'on'
>>> word[42:]

파이썬 문자열은 변경할 수 없다(불변).
그래서 문자열의 인덱스로 참조한 위치에 대입하려고 하면 에러를 일으킨다.

>>> word[0] = 'J'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

>>> word[2:] = 'py'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

다른 문자열이 필요하면, 새로 만들어야 합니다:

>>> 'J' + word[1:]
'Jython'
>>> word[:2] + 'py'
'Pypy'

내장 함수 len() 은 문자열의 길이를 돌려줍니다:

>>> s = 'min'
>>> len(s)
3

더 보기 :

텍스트 시퀀스 형 — str
문자열은 시퀀스 형 의 일종이고, 시퀀스가 지원하는 공통 연산들이 지원.

문자열 메서드
문자열은 기본적인 변환과 검색을 위한 여러 가지 메서드들을 지원.

포맷 문자열 리터럴
내장된 표현식을 갖는 문자열 리터럴

포맷 문자열 문법
str.format() 으로 문자열을 포맷하는 방법에 대한 정보.

printf 스타일 문자열 포매팅
이곳에서 문자열을 % 연산자 왼쪽에 사용하는
예전 방식의 포매팅에 관해 좀 더 상세하게 설명.

3) 리스트
다른 값들을 덩어리로 묶는데 사용되는 자료형이 있다.
가장 융통성이 있는 것은 리스트 인데,
대괄호 사이에 쉼표로 구분된 값(항목)들의 목록으로 표현될 수 있다.
리스트는 서로 다른 형의 항목들을 포함할 수 있지만,
항목들이 모두 같은 형인 경우가 많습니다.

>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]

문자열(그리고, 다른 모든 내장 시퀀스 형들)처럼
리스트는 인덱싱하고 슬라이싱할 수 있다.

>>> squares[0]  # 인덱싱
1
>>> squares[-3:]  # 슬라이싱
[9, 16, 25]

모든 슬라이스 연산은 요청한 항목들을 포함하는 새 리스트를 리턴(얕은 복사).

>>> squares[:]  # 얕은 복사
[1, 4, 9, 16, 25]

리스트는 이어붙이기 같은 연산도 지원.

>>> squares + [36, 49, 64, 81, 100]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

문자열 : 불변,
리스트 : 가변(내용 변경 가능)

>>> cubes = [1, 8, 27, 65, 125]  # cubes[3] : 64가 되어야 함
>>> cubes[3] = 64
>>> cubes
[1, 8, 27, 64, 125]

append() 메서드를 사용하면 리스트의 끝에 새 항목을 추가 가능.

>>> cubes.append(216)
>>> cubes.append(7 ** 3)
>>> cubes
[1, 8, 27, 64, 125, 216, 343]

슬라이스에 대입하는 것도 가능.
리스트의 길이를 변경할 수 있고, 모든 항목을 삭제도 가능.

>>> letters = ['a', 'b', 'c']
>>> letters[2:5] = ['C', 'D']  # 변경
>>> letters
['a', 'b', 'C', 'D']

>>> letters[2:5] = [] # 삭제
>>> letters
['a', 'b']

>>> letters[:] = [] # 초기화
>>> letters
[]

내장 함수 len() 은 리스트에도 적용 가능.

>>> letters = ['a', 'b', 'c']
>>> len(letters)

리스트 중첩가능.
다른 리스트를 포함하는 리스트를 만든다.

>>> a = ['a', 'b', 'c']
>>> n = [1, 2, 3]
>>> x = [a, n]
>>> x
[['a', 'b', 'c'], [1, 2, 3]]
>>> x[0]
['a', 'b', 'c']
>>> x[0][1]
'b'

키워드 인자 end 는 출력 끝에 포함되는 개행문자를
제거하거나 출력을 다른 문자열로 끝나게 하고 싶을 때 사용된다.

>>> a, b = 0, 1
>>> while a < 1000:
...     print(a, end=',')
...     a, b = b, a+b
...
0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
profile
slowly but surely

0개의 댓글