'Python Multi-Line Statements'에 해당되는 글 1건

  1. 2017.04.23 [Python] 파이썬 기본 구문법 (Basic Syntax)

이번 포스팅에서는 Python의 가장 기본적인 구문법 (Basic Syntax)에 대해서 정리를 해보겠습니다. 

 

이미 Python 잘 쓰고 계신 분은 이번 포스팅 건너뛰시면 되겠습니다.

 

Spyder나 Junpyter Notebook 사용법 소개하면서 이미 간단하게나마 언급했던 내용도 이미 있는데요, 파이썬 기본 구문법을 일괄적으로 정리해본다는 차원에서 중복되더라도 다시 소개해봅니다.

 

 

- (1) 파이썬 식별자 (Python Identifier)

- (2) 파이썬 키워드 (Python Keywords)

- (3) 줄 들여쓰기 (Lines and Indentation)

- (4) 복수 줄 선언문 (Multi-Line Statements)

- (5) 파이썬 인용 (Quotation in Python with hash sign #)

- (6) 부가설명 (Comments in Python)

- (7) 한 개의 줄에 복수 선언문 쓰기 (with semicolon ;)

- (8) Suite 으로 복수의 선언문 묶음 쓰기 (with colon :)

 

 

 

 (1) 파이썬 식별자 (Python Identifier)

 

파이썬의 변수, 함수, 클래스, 모듈, 객체를 정의하기 위해서 사용하는 이름을 파이썬 식별자 (Python Identifier) 라고 합니다.  식별자는 영어 a~z, A~Z로 시작하거나 (_), (__) 같이 한줄 혹은 두줄 밑줄(underscore)과 0~9 숫자, 문자로 만들 수 있습니다. 

 

- 숫자로 시작하는 식별자는 만들 수 없습니다.  (SyntaxError: invalid token)

 

In [1]: 3_var = 10

File "<ipython-input-1-33101349b3ed>", line 1

3_var = 10

^

SyntaxError: invalid token 

 

- 파이썬은 영어 소문자와 대문자를 구분합니다. (var_1VAR_1 은 서로 다르게 인식함)

- 파이썬에서는 관습적으로 클래스(Class)대문자(uppercase letter)로 시작합니다.

- 한개의 밑줄(_)로 시작하는 식별자priviate 함을 의미합니다.  

- 두개의 밑줄(__)로 시작하는 식별자강하게 private 함을 의미합니다.

- 두개의 밑줄로 시작하고 또 두개의 밑줄로 끝나는 식별자는 파이썬 언어에서 정의한 특별한 이름입니다. (예: __init__(self) 메소드)  

 

 

 

 

 (2) 파이썬 키워드 (Python Keywords)

 

파이썬에는 이미 예약이 되어 있어서 변수 이름으로 사용할 수 없는 단어들이 있는데요, 이를 파이썬 키워드라고 합니다.  모두 소문자예요.  파이썬 키워드를 가지고 새로운 변수 객체를 만들려고 하면 아래처럼 SyntaxError가 납니다.

 

In [7]: and = 10

File "<ipython-input-7-97dbaf47599d>", line 1

and = 10

^

SyntaxError: invalid syntax 

 

 

 

 

 

 (3) 줄 들여쓰기 (Lines and Indentation : 4 spaces)

 

파이썬은 R이나 Java 처럼 함수나 클래스 정의할 때 { } 같은 괄호를 사용하지 않습니다. 대신에 줄 들여쓰기 (Indentation)을 사용합니다.  처음에 좀 당황스럽고 과연 코드 가독성이 떨어지지는 않을까 의구심이 드는데요, 써보면 나름 편리합니다. 게다가 Spyder IDE를 사용하면 알아서 들여쓰기를 해주니 편리하게 코딩할 수 있습니다. 암튼, 들여쓰기 이거 파이썬에서는 매우 중요합니다.

 

첫머리를 들여쓰기 할 때 4줄이나 8줄을 사용하는데요, 보통 4줄 들여쓰기를 많이 하는거 같습니다. 저도 그렇고, 제 주변 프로그래밍 하는 분들도 대부분 4줄 들여쓰기를 Spyder에 설정해놓고 쓰곤 합니다.

참고로, Spyder에서 들여쓰기 설정은 아래 경로로 찾아들어가서 설정하면 됩니다.

 

Spyder : Tools > Preferences > Editor > Advanced setting > Indentation characters : 4 spaces

 

 

 

 

커서를 움직여서 스페이스(space)로 들여쓰기와 탭(tab)으로 들여쓰기가 있는데요, 파이썬을 만든 Guido van Rossum 은 스페이스 들여쓰기를 권장하고 있습니다.  뭘 쓰든 상관은 없는데요, 단, 하나의 프로그래밍에 스페이스 들여쓰기와 탭 들여쓰기가 섞여있으면 파이썬이 경고 메시지를 뱉어냅니다.  하나만 골라서 쓰시는게 좋겠습니다.

 

 

같은 코드 덩어리에서 들여쓰기가 서로 다르면 에러가 납니다.  같은 코드 덩어리에서는 같은 위치로 들여쓰기 해야 합니다.

 

 

# good indentation, no error

In [10]: X = 1

    ...:

    ...: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:     print("X is not positive")

    ...:

    ...:

X is posivive

 

 

# no error, hmm... indentation is not good,

# but, anyway it works because the code block is different

In [11]: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:         print("X is not positive")

    ...:

    ...:

X is posivive

 

 

# indentation error
# all statements within the same block should be indented the same amount

In [12]: if X >= 0:

    ...:     print("X is posivive")

    ...: else:

    ...:     print("X is not positive")

    ...:         print("X is less than 0") # Indentation Error

    ...:

    ...:

File "<ipython-input-12-c021cffab59f>", line 5

print("X is less than 0")

^

IndentationError: unexpected indent

 

 

 

 

꼭 에러가 나지는 않더라도 들여쓰기를 맞추어서 해주면 가독성이 올라기기 때문에 특히 여러사람이 협업하는 경우라면 부가설명을 붙여주는 것과 함께 들여쓰기를 이쁘게 잘 해주는게 좋습니다.

 

 좋은 들여쓰기 예 (good indentation)

나쁜 들여쓰기 예 (bad indentation) 

 df = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'], 
                       'var_1': np.arange(5), 
                       'var_2': np.random.randn(5)}, 
                       index = ['r0', 'r1', 'r2', 'r3', 'r4'])

 df = DataFrame({'class_1': ['a', 'a', 'b', 'b', 'c'], 
       'var_1': np.arange(5), 
       'var_2': np.random.randn(5)}, 
        index = ['r0', 'r1', 'r2', 'r3', 'r4'])

 

 

 

 

 (4) 복수 줄 (Multi-Line Statements with the line continuation character '\')

 

파이썬에서 프로그래밍하다보면 줄이 너무 길어지는 경우가 생겨서 줄 바꾸기를 해주는게 좋겠다 싶을 때가 생기는데요, 이때 '\' 문자 (line continuation character)를 사용해주면 파이썬이 '아, 비록 줄이 바뀌지만 코딩하던거 아직 끝난거 아니구나, 다음 줄도 이전 줄에 이어지는 것이구나'라고 이해를 합니다.

 

 

 

 

단, ( ), [ ], { } 등의 괄호 부호 안에서 쓰는 선언문은 '\' 부호 없이도 그냥 엔터 치고 줄 바꿈 해서 입력해도 알아서 '이전 줄에 이어서 계속 입력하고 있는 거구나' 하고 파이썬이 알아서 해석합니다.

 

 

# not need to use the line continuation character '\' for multi-line statements in case of [ ]

mydata = pd.DataFrame([1, 2, 3,
                                 4, 5, 6,
                                 7, 8, 9])

 

 

 

 

 

 (5) 파이썬 인용 (Quotation in Python with the ' ', " ", ''' ''', """ """)

 

파이썬은 작은 따옴표(' '), 큰 따옴표(" "), 세개 짜리 따옴표 (''' ''' 또는 """ """) 를 가지고 문자열 인용을 합니다. 세개 짜리 따옴표의 경우 2줄 이상의 다수의 줄로 문자열을 나열할 수 있으며, 저 같은 경우 긴 SQL 문을 객체로 만들 때 사용하곤 합니다.

 

 

In [23]: A = 'string A'


In [24]: A

Out[24]: 'string A'


In [25]: B = "string B"


In [26]: B

Out[26]: 'string B'


In [27]: C = """It is a string C. It continues

    ...: as follows. It has the second line."""

    ...:


In [28]: C

Out[28]: 'It is a string C. It continues \nas follows. It has the second line.'

 

 

 

 

 

 (6) 부가설명 (Comments in Python with the hash sign '#')

 

'#' 부호(hash sign)를 쓰면 파이썬은 '#' 이후는 무시해 버립니다.  따라서 파이썬 코드에 부가설명을 달고 싶으면 '#' 부호를 쓴 후에 comments 를 달면 되겠습니다. (이미 다 아시죠? ^^;  R이랑 같습니다.)

 

 

 

 

 (7) 한 줄에 복수개의 선언문 쓰기 (with the semicolon ;)

 

세미콜론 ';' (semicolon)를 사용하면 한 줄에 복수개의 선언문을 나열할 수 있습니다. (이것도 R이랑 같네요)  단, 이때 복수개의 선언문은 code block이면 안되겠습니다.  복수개의 code block을 그룹으로 해서 쓰려면 아래 (8)번 suite 참고하세요.

 

 

# multiple statements on a single line with the semicolon ( ; )

In [34]: var_1 = 10; var_2 = 20; var_3 = 30

    ...:


In [35]: var_1

Out[35]: 10


In [36]: var_2

Out[36]: 20


In [37]: var_3

Out[37]: 30

 

 

 

 

 

 (8) Suite 으로 복수의 선언문 묶음 쓰기 (with colon :)

 

 

 

많은 도움 되었기를 바랍니다. 


이번 포스팅이 도움이 되었다면 아래의 '공감~♡'를 꾸욱 눌러주세요. ^^

 

 

728x90
반응형
Posted by Rfriend
,