※ 공부하는 포스팅으로 틀린 것이나 맞지 않는 표현 있을 수 있습니다. 피드백받습니다!!
part1 : https://cow97.tistory.com/39
2. 문자열(part2)
파이썬의 문자열을 다루는 방법은 작은따옴표('...') 나 큰따옴표("...")로 둘러싸서 표현할 수 있고 모두 같은 결과를 보여준다. 따옴표를 이스케이핑 할 때는 \ 를 사용할 수 있습니다. -> 이 말은 다음과 같다.
c = "...\"
print(c)
# 따옴표 이스케이핑
d = "...\""
print(d)
대화형 인터프리터에서, 출력 문자열은 따옴표로 둘러싸여 있고, 특수 문자들은 역 슬래시로 이스케이핑 됩니다. 때로 입력한 것과 달라 보여도 (따옴표의 종류가 바뀔 수 있다.) -> ", ' 가 이스케이핑 될 때 전체 구문을 묶는 따옴표와 서로 반대되는 따옴표로 바꾸어 출력된다. 두 문자열(따옴표)은 동등하다.
print() 함수는 전체 따옴표를 생략하고, 이스케이핑된 특수 문자를 출력해서 더 읽기 쉬운 출력을 만들어낸다. print() 안에 \n (개행 문자)가 들어가면 출력 시 반영되어 출력이 진행된다. 두줄로 나뉘어 출력됨
\ 뒤에 나오는 문자가 특수 문자로 취급되게 하고 싶지 않다면, 첫 따옴표 앞에 r을 붙여서 날 문자열 (raw string)을 만들 수 있다.
문자열 리터럴은 여러 줄로 확장될 수 있다. 이는 삼중 따옴표를 사용함으로써 가능하다. ( """...""" ) 또는 ( '''...''' ). 줄 넘김 문자는 자동으로 문자열에 포함된다. 여기서 주목해야 할 것은 print("""\ 로 출력될 때 첫 번째 개행 문자가 출력의 결과로 포함되지 않는다는 것이다.
print("""로 출력될 때는 첫 번째 개행 문자가 출력의 결과로 포함되는 것을 확인할 수 있다.
문자열은 + 연산자로 이어 붙이고, * 연산자로 반복시킬 수 있다.
두 개 이상의 문자열 리터럴 (즉, 따옴표로 둘러싸인 것들) 이 연속해서 나타나면 자동으로 이어 붙여진다.
"리터럴 : 소스코드의 고정된 값"
위의 두 개 이상의 문자열 리터럴이 연속으로 나타날 때 자동으로 이어지는 기능은 print() 함수에서 위와 같이 이용될 수 있다. 출력하고자 하는 문자열이 길 경우 문장을 나누어 입력하는 것이 가능하다.
긴 문자열 쪼개기와 자동으로 이어지는 것은 두 개 이상의 문자열 리터럴 일 경우에만 적용이 되고 변수나 표현식일 경우에는 위와 같이 에러를 발생한다.
변수들끼리 혹은 변수와 문자열 리터럴을 이어 붙이려면 + 연산자를 이용해야 한다.
문자열은 인덱스 (서브 스크립트) 될 수 있다. 첫 번째 문자가 인덱스 0에 대응된다. 문자를 위한 별도의 형태는 존재하지 않는다. 단순히 길이가 1인 문자열이다. -> 위의 word [5]의 type을 찍어보면 문자열 변수 형태인 str로 확인되는 것을 볼 수 있다.
인덱스가 음수로 될 경우 뒤에서 부터 센다. -1 이 last character이고 순차적으로 처음으로 다가온다. -0은 0과 같으므로 -1에서부터 시작한다는 것에 주의해야 한다.
위 인덱싱에 더해서 슬라이싱(slicing) 도 지원한다. 인덱싱은 개별 문자를 얻는 데 사용되는 반면, 슬라이싱은 부분 문자열(substring)을 얻는 데 사용된다. -> 즉 원하는 부분을 잘라서 가지고 올 수 있다.
슬라이스 인덱스는 편리한 기본값을 갖고 있다.
첫 번째 인덱스를 생략하면 기본값 0이 사용된다.
-> 처음부터 지정한 인덱스 까지라는 의미
두 번째 인덱스가 생략되면 기본값으로 슬라이싱 되는 문자열의 길이가 사용된다.
-> 지정된 인덱스부터 끝까지라는 의미
위를 확인하면서 알 수 있는 중요한 점은 인덱스 슬라이싱을 할 때, 시작 위치의 문자는 항상 포함되는 반면, 종료 위치의 문자는 항상 포함되지 않는 것에 주의해야 한다. 이것 때문에 s [ : i ] + s [ i : ]는 항상 s와 같다.
- 슬라이스 동작 인덱스 설명
+---+---+---+---+---+---+
| P | y | t | h | o | n |
+---+---+---+---+---+---+
0 1 2 3 4 5 6
-6 -5 -4 -3 -2 -1
슬라이스가 동작하는 방법은 인덱스가 문자들 사이의 위치를 가리킨다고 생각하는 것이다. 첫 번째 문자의 왼쪽 경계가 0이다. n개의 문자들로 구성된 문자열의 오른쪽 끝 경계는 인덱스 n이 된다.
음이 아닌 인덱스들의 경우, 두 인덱스 모두 범위 내에 있다면 슬라이스의 길이는 인덱스 간의 차이다. 예를 들어 word [1:3]의 길이는 2이다.
변수에 담겨있는 문자열 길이 값보다 큰 값의 인덱스를 사용하는 것은 에러를 발생시킨다.
범위를 벗어나는 인덱스 값을 사용하여 값에 접근하는 것은 에러를 발생시켰지만 범위를 벗어나는 인덱스 값을 이용하여 인덱스 슬라이싱을 할 때는 부드럽게 처리된다.
파이썬에서 문자열은 immutable(불변)이고 변경할 수 없다. 그래서 문자열의 인덱스로 참조한 위치에 대입하려고 하면 에러를 일으킨다.
다른 문자열을 만들려면 위와 같이 새로 만들어야 한다.
내장 함수 len()을 이용하여 문자열의 길이를 확인해 볼 수 있다.
문자형 추가적인 내용
- str 또는 문자열(strings), 객체를 이용하여 문자열을 다룰 수 있다.
- str에서 지원하는 다양한 메서드들을 다룰 수 있다.
- 내장된 표현식을 갖는 문자열 리터럴 -> 아직 이해 X
- . format()을 이용하여 문자열 중간에 값을 넣을 수 있다.
- printf 스타일의 문자열 포맷팅이 가능하다. -> % 연산자 이용과 변환 표시 기호로 가능 c언어에서 printf와 비슷
※ 리터럴 (Literals)
- 파이썬은 문자열과 바이트 열 리터럴과 여러 가지 숫자 리터럴들을 지원합니다.
literal ::= stringliteral | bytesliteral
| integer | floatnumber | imagnumber
리터럴의 값을 구하면 주어진 형(문자열, 바이트 열, 정수, 실수, 복소수)과 주어진 값을 갖는 객체가 나온다. 실수와 복소수의 경우는 근삿값일 수 있다.
또한 리터럴 상수는 2, 3.14, 와 같은 숫자, 'python' or "I'm learn python"과 같은 문자열이 프로그램 내에 직접 문자 형태(Literally)로 지정되는 값이기 때문에 리터럴 상수라고 한다. 즉 값 자체는 한번 지정되면 변하지 않는다.
- 상수 : 변하지 않는 변수
- 리터럴 : 변수의 값이 변하지 않는 데이터
※ 서브 스크립트 (Subscripts)
서브 스크립트란 컬렉션, 리스트, 시퀀스 등 집합의 특정 멤버 엘리먼트에 간단하게 접근할 수 있는 문법입니다. 서브 스크립트를 이용하면 추가적인 메소드 없이 특정 값을 할당(assign)하거나 가져올 수(retrieve) 있습니다. 배열(Array) 인스턴스의 특정 엘리먼트는 someArray[index] 문법으로, 사전(Dictionary) 인스턴스의 특정 엘리먼트는 someDictionary[key]로 접근할 수 있습니다. 또한 하나의 타입에 여러 서브스크립트를 정의할 수 있고 오버로드(Overload)도 가능하고 단일 인자 값을 넘어, 필요에 따라 복수 인자 값을 사용할 수 있습니다.
-> 파이썬 참고자료를 본 것이 아닌 다른 자료를 참고하여서 이것이 파이썬에 적용되어 있는지 여부는 아직 파악하지 못하였다. 이 부분에 있어서 추가적인 공부가 필요해 보인다.
Reference
- 3. 파이썬의 간략한 소개 : https://docs.python.org/ko/3.10/tutorial/introduction.html
- 파이썬 리터럴 상수 1 : https://python.flowdas.com/reference/expressions.html
- 파이썬 리터럴 상수 2 : https://developments.tistory.com/8
- 서브 스크립트 (Subscripts) : https://jusung.gitbook.io/the-swift-language-guide/language-guide/12-subscripts
'python' 카테고리의 다른 글
[python] 파이썬 자습서 3. 파이썬의 간략한 소개 part4 (0) | 2022.06.28 |
---|---|
[python] 파이썬 자습서 3. 파이썬의 간략한 소개 part3 (0) | 2022.06.25 |
[python] 용어집 (0) | 2022.06.25 |
[python] 파이썬 자습서 3. 파이썬의 간략한 소개 part1 (0) | 2022.06.18 |
[python] 파이썬 자습서 2. 파이썬 인터프리터 사용하기 (0) | 2022.06.17 |