원문 출처 : http://www.tutorialspoint.com/python/python_basic_syntax.htm
구글 번역기를 최대한 이용하였고 이해 안되는 부분은 마음대로 의역했으니 잘못된 부분이 많을듯 합니다. 오류 지적 부탁드립니다.
파이썬 언어는 펄, C, 및 Java와 매우 유사하다. 그러나, 명확한 차이점이 있다. 이 챕터에서는 Python의 문법을 빠르게 습득할 수 있도록 이루어졌다.
첫번째 Python프로그램:
INTERACTIVE MODE PROGRAMMING:
매개 변수로 스크립트 파일을 전달하지 않는 인터프리터를 호출하면 다음과 같은 메시지가 나타난다.
$ python
Python 2.7.1 (r271:86832, Jun 16 2011, 16:59:05)
[GCC 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
Python 프롬프트의 오른쪽에 다음 텍스트를 입력하고 Enter 키를 쳐보자 :
>>> print "Hello, Python!";
만약 새 버전의 Python을 실행하는 경우 "print ("Hello, Python!");"과 같이 괄호로 프린트문을 감싸야 한다. 그러나 Python2.7.1버전에서 다음과 같은 결과를 출력한다.
Hello, Python!
SCRIPT MODE PROGRAMMING :
스크립트 매개 변수와 함께 인터프리터를 호출하면 스크립트의 실행을 시작하고 스크립트가 완료 될 때까지 계속됩니다. 스크립트가 완료되면 인터프리터는 더이상 활성화 되지 않는다.
간단한 Python 프로그램 스크립트를 작성해보자. 모든 Python파일은 .py의 확장자를 갖는다. 그래서 아래 나오는 소스 코드를 test.py파일에 작성한다.
print "Hello, Python!";
여기에서는 PATH 변수에 Python 명령어가 추가 되어있다고 가정한다. 아래와 같이 프로그램을 실행시켜보자.
$ python test.py
아래와 같은 결과가 출력될 것이다.
Hello, Python!
이제 다른 방법으로 Python스크립트를 실행시켜보자! 아래와 같이 test.py파일을 수정한다.
#!/usr/bin/python
print "Hello, Python!";
여기서는 실행 기능한 Python인터프리터가 /usr/bin/ 디렉토리안에 있다고 가정한다. 아래와 같이 프로그램을 실행시켜보자.
$ chmod +x test.py # test.py를 실행 가능한 파일로 만들어준다.
$ ./test.py
결과는 역시 아래와 같을것이다.
Hello, Python!
Python Identifiers:
Python 식별자는 변수, 함수, 클래스, 모듈, 또는 다른 개체를 식별하는 데 사용되는 이름이다. 식별자는 A~Z, a~z, 또는 밑줄(_)로 시작을 해야하고 이어서 0개 이상의 밑줄(_), 숫자(0-9)등을 붙일 수 있다.
Python 식별자에는 @, $, %와 같은 특수문자는 포함할 수 없다. Python은 대소문자를 구분하는 프로그래밍 언어이다. 따라서 Python에서 Manpower와 manpower은 두 개의 서로 다른 식별자이다.
Python의 식별자 명명 규칙은 다음과 같다:
● 클래스 이름은 대문자로 시작하고 뒤이어 소문자들로 작성한다.
● 하나의 밑줄(_)로 시작하는 식별자는 private인 식별자를 의미한다.
● 두개의 밑줄(_)로 시작하는 식별자는 강한 private 식별자를 나타낸다.
● 밑줄(_) 두개로 끝나는 식별자는 언어 정의 특별 이름이다.
Reserved Words:
아래의 리스트는 Python에서 예약된 단어들을 보여준다. 이 예약 된 단어는 상수나 변수, 또는 다른 식별자 이름으로 사용할 수 없다. 모든 Python 키워드는 소문자로 이루어져 있다.
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
Python에는 클래스와 함수 정의 또는 흐름 제어를 위한 코드 블록을 표시할 때 괄호가 없다. 코드의 블록은 엄격한 코드 라인 들여쓰기에 의해 표시된다.
들여쓰기의 공백의 갯수는 자유롭지만, 블록 내의 모든 구문은 같은 수의 공백으로 들여쓰기를 해야한다.
아래 예에서 두 블록은 괜찮다:
if True :
print "Answer"
else :
print "False"
그러나, 아래 예제의 두번째 블록에서 에러를 발생시킬 것이다.
if True:
print "Answer"
print "True"
else:
print "Answer"
print "False"
따라서, Python에서 모든 연속적인 라인은 같은 블록을 나타낸다. 다음의 예제는 다양한 구문 블록을 갖는 예이다:
Note : 로직이나 다른 함수의 쓰임에 대해 이해하려고 노력하지 마라. 단지 괄호가 없는 경우에도 다양한 블록을 이해할 수 있는지 확인하라.
#!/usr/bin/python
import sys
try:
# open file stream
file = open(file_name, "w")
except IOError:
print "There was an error writing to", file_name
sys.exit()
print "Enter '", file_finish,
print "' When finished"
while file_text != file_finish:
file_text = raw_input("Enter text: ")
if file_text == file_finish:
# close the file
file.close
break
file.write(file_text)
file.write("\n")
file.close()
file_name = raw_input("Enter filename: ")
if len(file_name) == 0:
print "Next time please enter something"
sys.exit()
try:
file = open(file_name, "r")
except IOError:
print "There was an error reading file"
sys.exit()
file_text = file.read()
file.close()
print file_text
Multi-Line Statements:
Python의 구문은 일반적으로 한줄로 끝난다, 그러나 Python은 연속문자(\)를 허용해 라인이 연속됨을 나타낸다. 예를들어:
total = item_one + \
item_two + \
item_three
구문에 포함 된 [], {}, 또는 ()와 같은 괄호는 연속 문자를 사용할 필요가 없다. 예를들어:
days = ['Monday', 'Tuesday', 'Wednesday',
'Thursday', 'Friday']
Quotation in Python:
Python은 스트링 문자열을 나타내기 위해 싱글('), 더블("), 트리플(''' 또는 """)따옴표를 사용한다. 같은 타입의 따옴표로 시작하고 끝나야한다.
트리플 따옴표는 여러 줄에 걸쳐 물자열을 사용하는데 쓰인다. 예를들어 아래의 경우 모두 사용 가능하다 :
word = 'word'
sentence = "This is a sentence."
paragraph = """This is a paragraph. It is
made up of multiple lines and sentences."""
Comments in Python:
Python의 주석은 해쉬(#)코드로 시작한다. #뒤에 오는 모든 문자는 물리적인 라인의 끝까지 주석의 일부로 인식한다. 그리고 Python 인터프리터는 이 구문을 무시한다.
#!/usr/bin/python
# First comment
print "Hello, Python!"; # second comment
이 구문은 아래와 같은 결과를 출력한다:
Hello, Python!
주석은 구문이나 표현과 같은줄에 올 수도 있다.
name = "Madisetti" # This is again comment
아래와 같이 여러줄 주석도 사용할 수 있다.
# This is a comment.
# This is a comment, too.
# This is a comment, too.
# I said that already.
Using Blank Lines:
공백만으로 이루어진 라은은 주석과 같다. Python은 공백라인도 완전히 무시한다.
양방향 인터프리터 세선에서, 멀티라인 구문을 종료하기 위해서는 반드시 물리적인 빈 라인은 입력해야 한다.(???)
Waiting for the User:
다음 종료하기 위해 엔터키를 누르라는 프롬프트를 출력하는 프로그램 라인은 사용자가 엔터키를 누르기를 기다린다.
#!/usr/bin/python
raw_input("\n\nPress the enter key to exit.")
여기서 "\n\n"은 실제 라인을 출력하기 전에 새로운 2개의 라인을 만다는데 사용된다. 유저가 한번 키를 누르면 프로그램은 종료된다. 이는 사용자가 어플리케이션과 함께 할때까지 콘솔창을 유지시키는데 좋은 트릭이다.
Multiple Statements on a Single Line:
세미콜론(;)은 여러 구문을 한 라인에 사용할 때 새로운 코드 블록의 시작을 알려준다. 다음은 세미콜론을 사용한 예제 코드가 있다:
import sys; x = 'foo'; sys.stdout.write(x + '\n')
Multiple Statement Groups as Suites:
하나의 코드 불록으로 만들어진 각 문장의 그룹을 Python에서는 스위트라고 부른다. 복합되었거나 복잡한 구문들, 예를 들어, if, while, def, class은 해더 라인과 스위트를 요구한다.
헤더라인은 구문(키워드와 함께)으로 시작하고 콜론(:)으로 끝난다, 그리고 하나 또는 그 이상의 라인, 스위트가 따른다. 다음은 예제이다:
if expression :
suite
elif expression :
suite
else :
suite