제어문이나 순환문 등 에 여러 문장을 묶어 작성해야 할 때가 있다. 이 경우 다른 프로그램 언어는 중괄호를 통해 블록 문장으로 구분하지만 파이썬은 들여 쓰는 방식을 사용한다. 또한 한 문장이 길어지는 경우 여러 줄을 사용할 수 있는데 한 문장으로 연결하는 방식에는 역슬래시, 괄호 등을 사용한다. 여러 문장을 한 줄에 쓸 때는 문장의 끝에 세미콜론을 붙인다. 문장의 끝은 한 줄에 여러 문장을 쓸 경우에만 사용한다.
블록 문장의 줄 들여쓰기 (Lines and Indentation)
조건문, 순환문, 함수 정의문 등에 머리부와 몸체부를 콜론(:)으로 구분한다. 몸체부는 들여쓰기 후 한 장 또는 여러 문장의 블록 문장을 작성한다.
들여쓰기 알아보기
순환문인 for문의 머리부를 작성한 후 콜론 다음에 문장을 들여쓰기 하지 않고 작성하면 들여쓰기 예외인 IndentationError가 발생한다. 이 에러는 순환문 내부를 블록 문장으로 작성하지 않았다는 것이다. 함수도 마찬가지로 에러가 뜬다.
def func():
pass
for i in range(10):
print(i)
[결과]
expected an indented block
머리부 다음 몸체부의 들여쓰기를 3칸만 하는 경우에 빨간색으로 표시되지만 예외가 발생하지는 않는다. 보통 코딩 툴에서는 자동으로 4칸 들여쓰기가 된다.
멀티 라인문 (Multi-Line Statements)
한 문장을 여러 줄에 쓸 경우 그 문장이 한 문장인지 알 수 있는 방법이 필요하다.
변수에 표현식을 할당할 때 연산자로 분리해 여러 줄에 쓰면, 첫 번째 연산자 다음에 값이 없어서 문법상 예외가 발생한다.
a = 100 +
200 +
300
[결과]
File "C:\Users\reo91\OneDrive\Coding Practice\P C++, Python\Python2.py", line 1
a = 100 +
^
SyntaxError: invalid syntax
위의 할당문이 한 문장으로 인식되려면 연산자 다음에 역 슬래시나 괄호를 사용해 다음 줄에 계속 수식이 있다는 것을 알려주어야 한다.
a = 100 + \
200 + \
300
print(a)
[결과]
600
a = (100 +
200 +
300)
print(a)
[결과]
600
튜플, 리스트 등을 리터럴 표기법으로 작성할 때 원소의 개수가 많으면 한 줄을 벗어날 수도 있다. 닫는 괄호를 만날 때까지는 한 문장이 끝나지 않는 것으로 인식하고 다음 줄에 있는 내용을 자동으로 확인한다.
문장이 완성되면 평가해서 변수에 할당한다.
t = (1, 2, 3,
4, 5)
l = [1, 2, 3,
4, 5]
print(t)
print(l)
[결과]
(1, 2, 3, 4, 5)
[1, 2, 3, 4, 5]
여러 줄에 문자열을 작성할 때는 따옴표를 3개 사용하면 된다.
s = """문자열
hello world
"""
print(s)
[결과]
문자열
hello world
여러 문장을 한 줄에 작성하기
문장은 한 줄에 하나씩 쓰는 것이 일반적이지만 짧은 문장은 여러 줄에 작성하지 않고 모두 한 줄에 작성할 수도 있다. 이때는 문장 구분을 위해 끝에 세미콜론(;)을 쓴다.
a = 10; b = 20; c = 30
print(a, b, c)
[결과]
10 20 30
순환문이나 제어문도 한 줄에 문장을 연결해 사용할 수 있다.
for i in range(3): print(i); print("Hello")
[결과]
0
Hello
1
Hello
2
Hello
a = 10; b = 20; c = 30
if a < b: print(c); print("Hello")
[결과]
30
Hello
a = 10; b = 20; c = 30
if a < b: print(c); print("Hello")
[결과]
30
Hello
제어문의 경우 else까지 한 줄에 사용하면 두 문장을 사용할 수 없어 예외가 발생한다. 이때는 else문을 다른 줄에 작성해야 한다.
특정 숫자를 임의로 추출하기
45개의 원소를 가진 리스트를 전부 나열하지 않고 내부에 수식을 작성해 간단하게 표시하는 방식을 사용해보자. 이런 표기법을 컴프리헨션이라고 한다.
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [i for i in range(1, 11)]
print(x == a)
[결과]
True
임의의 확률 분포를 처리하는 모듈인 random을 import한다. 이 모듈 내의 shuffle, choices 함수를 사용해보자. 리스트의 모든 원소를 임의로 섞을 때는 shuffle, 특정 개수의 원소를 선택할 때는 choices 함수를 사용한다.
import random
x = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
a = [i for i in range(1, 11)]
random.shuffle(a)
print(a)
print(random.choices(a, k = 6)) # k개의 원소를 추출
[결과]
[3, 8, 9, 5, 6, 10, 2, 7, 1, 4]
[6, 4, 2, 9, 1, 8]
다시 섞은 후 추출해도 다른 결과가 나온다.
참고로 choices는 중복을 허용하고 sample은 중복을 허용하지 않게 뽑는다.
참고
- 한권으로 개발자가 원하던 파이썬 심화 A to Z, 문용준/문성혁 저
'◎ Python > 파이썬 심화 (책)' 카테고리의 다른 글
[파이썬 심화] 7. 할당 및 기타 문장 처리하기 (0) | 2022.08.29 |
---|---|
[파이썬 심화] 6. 문서화와 주석으로 꾸미기 (1) | 2022.08.28 |
[파이썬 심화] 4. 객체를 생성한 클래스가 자료형이다 (0) | 2022.08.24 |
[파이썬 심화] 3. 프로그램은 표현식과 문장을 평가해 실행된다 (0) | 2022.08.23 |
[파이썬 심화] 2. 파이썬의 모든 값은 객체(object)다 (0) | 2022.08.22 |
자기계발 블로그