CSE/Python 검색 결과

7개 발견
  1. 미리보기
    2015.12.18 - Palpit

    [Python] 파이썬 어휘 규약과 구문

  2. 미리보기
    2015.12.18 - Palpit

    [Python] 파이썬 입문 6(코루틴, 객체, 예외)

  3. 미리보기
    2015.12.18 - Palpit

    [Python] 파이썬 입문 5(반복문, 함수, 생성기)

  4. 미리보기
    2015.12.18 - Palpit

    [Python] 파이썬 입문 4(튜플, 집합, 사전)

  5. 미리보기
    2015.12.11 - Palpit

    [Python] 파이썬 입문 3(문자열, 리스트)

  6. 미리보기
    2015.12.11 - Palpit

    [Python] 파이썬 입문 2

  7. 미리보기
    2015.12.11 - Palpit

    [Python] 파이썬 입문

[Python] 파이썬 어휘 규약과 구문

2015.12.18 15:39 - Palpit
조회수 확인

어휘 규약과 구문

 1. 줄 구조와 들여쓰기

  프로그램에서 각 문장은 줄바꿈 문자로 끝납니다. 긴 문장은 아래 예처럼 줄이음 문자(\)로 작성할 수 있습니다.


 





  삼중 따옴표로 둘러싸인 문자열, 리스트, 튜플, 사전 정의가 여러 줄에 걸쳐 있는 경우에는 줄이음 문자가 필요 없습니다. 더 일반화해서 말하면, 프로그램에서 괄호(...), 대괄호[...], 중괄호{...}나 삼중 따옴표로 둘러싸인 부분은 시작과 끝이 명확히 구분되므로 줄이음 문자 없이도 여러 줄에 걸쳐 있을 수 있습니다.


  들여쓰기(Indentation)는 함수 몸체, 조건문, 루프, 클래스 등 다양한 코드 블록을 나타냅니다. 한 블록 안에서 첫 번째 문장에 적용되는 들여쓰기에는 제한이 없지만, 블록 전체로 봤을 때는 일관성이 있어야 합니다. 다음은 관련 예를 보여줍니다.



1
2
3
4
5
6
if a:
    statement1
    statement2
else:
    statement3
 
cs




  빈 몸체나 블록은 pass 문으로 나타냅니다.


1
2
3
4
5
if a:
    pass
else:
    statements
 
cs





  주로 들여쓰기를 할 시에 탭(Tap)을 사용하지만, 파이썬 프로그램 커뮤니티에서 보편적으로 선호되는 방식은 스페이스를 사용하는 것입니다. 


  한 줄에 둘 이상의 문장을 작성하려면, 문장들을 세미콜론(;)으로 구분하면 됩니다. 불필요하긴 하지만, 한 문장으로 된 줄도 세미콜론으로 끝낼 수도 있습니다.





 2. 식별자와 예약어

  식별자(Identifier)는 변수, 함수, 클래스, 모듈 및 기타 객체를 식별하는데 사용되는 이름입니다. 식별자의 이름은 문자, 숫자, 밑줄(_)을 포함할 수 있지만, 항상 숫자가 아닌 문자로 시작되어야 합니다. 


  식별자는 대소문자를 구별합니다.


  다음은 파이썬의 모든 예약어 목록입니다.






  이름이 밑줄로 시작하거나 끝나는 식별자는 보통 특수한 의미를 지닙니다. 예를 들어, _foo 처럼 단일 밑줄로 시작하는 식별자는 from module import * 문에 의해 임포트되지 않습니다. __init__ 같이 이중 밑줄로 시작하고 끝나는 식별자는 특수한 메서드용으로 예약되어 있으며, __bar처럼 이중 밑줄로 시작하는 식별자는 private 클래스 멤버를 구현하는데 사용됩니다.




 3. 컨테이너

  다음 예에서 볼 수 있듯이, 중괄호, 괄호, 대괄호로 둘러싸인 값들은 각각 리스트, 튜플, 사전에 들어 있는 객체들의 모임을 나타냅니다. 



1
2
3
4
= [13.4'hello' ] # List
= (1020300)  # Tuple
= {'a'3'b'44 } # Dictionary
 
cs




  리스트, 튜플, 사전 상수는 줄이음 문자(\) 없이도 여러 줄에 걸쳐 있을 수 있습니다. 또한, 마지막 항목에 콤마를 붙여도 됩니다.


1
2
3
4
5
= [
    1,
    3.4,
    'Hey',
]
cs






 4. 문서화 문자열

  아래 예에서 보듯이 모듈, 클래스, 함수 정의의 첫 번째 문장이 문자열이면, 이 문자열은 연관된 객체의 문서화 문자열이 됩니다.



1
2
3
4
def fact(n):
    "This function computes a factorial"
    if (n <= 1): return 1
    elsereturn n * fact(n - 1)
cs




  문서화 문자열은 코드 브라우저나 문서화 생성 도구에서 흔히 사용됩니다. 문서화 문자열에는 객체의 __doc__ 속성으로 접근할 수 있습니다.







 5. 장식자

  함수, 메서드, 클래스 정의 앞에 특수한 문자가 올 수 있습니다. 장식자(Decorator) 입니다.


  장식자는 바로 따라 나오는 정의의 작동 방식을 변경하는데 쓰입니다. 기호 @로 장식자를 표시하며 장식자는 별개의 줄로서 관련 함수, 메서드, 클래스 바로 앞에 나와야 합니다.




1
2
3
4
5
class Foo(object):
    @staticmethod
    def bar():
        pass
 
cs







 6. 소스 코드 인코딩

  파이썬의 소스 프로그램은 보통 표준 7비트 ASCII로 작성됩니다. 하지만, 일반적으로 UTF-8 환경에서 작업을 하기 때문에 성가신 점이 됩니다. 


  그래서 파이썬 프로그램의 첫 두 줄에 특수한 인코딩 주석을 입력하면 다른 인코딩으로 파이썬 소스 코드를 작성할 수 있습니다.



1
2
3
4
5
#! /usr/bin/env python
# -*- coding: UTF-8 -*-
 
= "UTF-8"
 
cs




* 이 강좌는 '파이썬 완벽 가이드' 서적을 참고로 작성했습니다.

다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다
조회수 확인

1. 파이썬 입문

 1-1. 코루틴(Coroutine)

  보통 함수는 입력으로 주어진 인수에 대해서 한 번만 실행됩니다. 하지만, 일련의 입력을 처리하도록 함수를 작성할 수도 있습니다. 이런 종류의 함수를 코루틴이라고 하고, 아래 예처럼 yield문을 표현식 형태로 사용해 생성할 수 있습니다.



1
2
3
4
5
6
def print_matches(matchtext):
    print "Looking for", matchtext
    while True:
        line = (yield)
        if matchtext in line:
            print line
cs



  이 함수를 사용하려면 먼저 호출을 한 번해서 첫 번째(yield)까지 진행하고 다음부터 send()로 데이터를 보내기 시작하면 됩니다. 


 






  코루틴은 send()로 값이 도착할 때까지 멈춰 있습니다. send()가 호출되면, 코루틴 안에서 (yield) 포현식에 의해 값이 반환되고 바로 다음 문장에 의해 처리됩니다. 이러한 처리는 다음 (yield) 표현식을 만날 때까지 계소되고, 그 순간 멈춘 함수가 다시 멈춥니다.





 1-2. 객체와 클래스

  프로그램 안의 모든 값은 객체입니다. 객체(Object)는 내부 데이터와 내부 데이터와 연관된 연산을 수행하는 메서드로 구성됩니다. 앞서 이미 문자열과 리스트 같은 내장 타입을 다루면서 객체와 메서드를 사용해봤습니다.


  dir() 함수는 객체가 제공하는 메서드들을 나열합니다. 이 함수는 대화식으로 이것저것 실험해보는데 유용하게 쓰입니다.







  객체를 살펴볼때 append()나 insert() 같은 익숙한 메서드들을 보게 될 것입니다. 이 밖에도 항상 이중 밑줄로 시작하고 끝나는 특수한 메서드들이 있습니다. 이 메서드들은 언어상에서 제공하는 다양한 연산자를 구현합니다. 다음 예에서 __add__() 메서드는 + 연산자를 구현합니다.







  class문은 새로운 객체 타입을 정의하며, 객체지향 프로그램을 작성하는데 쓰입니다. 예를 들어, 다음 클래스는 push(), pop(), length() 연산자를 갖는 간단한 스택을 정의합니다.


1
2
3
4
5
6
7
8
9
10
class Stack(object):
    def __init__(self):
        self.stack = []
    def push(self, object):
        self.stack.append(object)
    def pop(self):
        return self.stack.pop()
    def length(self):
        return len(self.stack)
 
cs





  클래스는 다음과 같이 사용합니다.







  앞의 예에서 스택을 구현하기 위해 완전히 새로운 객체를 생성했습니다. 하지만, 스택은 내장 리스트 객체와 거의 동일합니다. 따라서, 다음과 같이 list에서 상속 받고 메서드를 하나 추가해서 스택을 구현할 수도 있습니다.



1
2
3
class Stack(list):
    def push(self, object):
        self.append(object)
cs





  보통 클래스 안에서 정의된 모든 메서드는 클래스의 인스턴스에만 적용됩니다. 하지만, C++이나 Java 에서의 정적 메서드같은 다른 종류의 메서드로 정의할 수 있습니다.



1
2
3
4
5
6
7
class EventHandler(object):
    @staticmethod
    def dispatcherThread():
        while (1):
            ...
 
EventHandler.dispatcherThread()
cs






 1-3. 예외

  프로그램에서 에러가 발생하면 예외(Excepion)가 발생하고 다음과 같이 역추적 메시지가 나타납니다.



1
2
3
Traceback (most recent call last):
 File "foo.py", line 12in <module>
IOError: [Errno 2] No such file or directory: 'file.txt'
cs


  


  역추적 메시지는 발생된 에러의 종류와 위치를 표시합니다. 보통 에러는 프로그램을 종료시킵니다. 하지만, 다음과 같이 try와 except 문으로 예외를 잡아서 처리할 수도 있습니다.



1
2
3
4
try:
    f = open("file.txt""r")
except IOError as e:
    print e
cs




  IOError가 발생하면, 에러의 원인에 대한 내용이 e에 담기고 except 블록으로 제어가 넘어갑니다. 또다른 예외가 발생하면 에워싼 코드 블록으로 제어가 넘어갑니다. 아무런 에러도 발생하지 않으면 except 블록에 있는 코드는 무시됩니다. 예외가 처리되면 최종 except 블록 바로 뒤이어 나오는 문장부터 프로그램 실행이 다시 시작됩니다. 






 1-4. 모듈(Module)

  프로그램 크기가 커지면 손쉬운 관리를 위해 프로그램을 여러 파일로 나누고 싶어질 것입니다. 파이썬에서는 정의들을 파일에 넣어 다른 프로그램이나 스크립트에 임포트(import) 할 수 있는 모듈 형태로 사용할 수 있습니다. 모듈을 생성하려면 관련 문장과 정의들을 모듈과 동일한 이름을 가지는 파일에 넣으면 됩니다(파일 확장자는 py여야 합니다). 




1
2
3
4
5
6
# file: div.py
def divide(a, b):
    q = a / b
    r = a - q * b
    return (q, r)
 
cs





  이 모듈을 다른 프로그램에서 사용하려면 import 문을 사용하면 됩니다.



1
2
import div
a, b = div.divide(230529)
cs



  import 문은 새로운 네임스페이스를 생성하고 .py 파일 안에 있는 모든 문장을 이 네임스페이스 안에서 실행합니다. 해당 네임스페이스 안에 있는 내용에 접근하려면 앞의 예의 div.divide() 처럼 간단히 모듈의 이름을 앞에 붙여주면 됩니다.


  모듈을 다른 이름으로 임포트하고 싶다면 다음과 같이 import 문에 선택적인 as 한정어를 써주면 됩니다.


1
2
3
import div as dd
a, b = dd.divide(230529)
 
cs




  특정 정의를 현재 네임스페이스에 임포트하려면 from 문을 사용하면 됩니다.


1
2
from div import divide
a, b = divide(230529)
cs


 





* 이 강좌는 '파이썬 완벽 가이드' 서적을 참고로 작성했습니다.




다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다
조회수 확인

1. 파이썬 입문

 1-1. 반복과 루프

  가장 널리 사용되는 루프 관련 구조물은 for문입니다. for문은 항목들의 모임에 대해 반복 수행하는데 사용됩니다. 반복은 파이썬에서 가장 풍부한 기능을 제공하는 기능 중 하나입니다. 가장 널리 사용되는 반복의 형태는 간단히 문자열, 리스트, 튜플같은 순서열의 모든 구성 요소에 대해 루프를 도는 것입니다. 다음은 한 예입니다.


1
2
3
for n in [123456789]:
    print "2 to the %d power is %d" % (n, 2**n)
 
cs




  앞의 예에서, 변수 n에는 각 반복마다 리스트 [1,2,3,4,...,9]에 있는 다음 항목이 할당됩니다. 정수 범위에 대해 루프를 도는 일은 상당히 잦으므로 다음과 같이 간단히 작성할 수 있습니다.



1
2
3
for n in range(110):
    print "2 to the %d power is %d" % (n, 2**n)
 
cs





  range(i, j[, 폭]) 함수는 i에서 j - 1 까지의 값을 가지는 정수 범위를 표현하는 객체를 생성합니다. 초기 값이 생략되면 초기 값으로 0이 사용됩니다. 추가로 세 번째 인수로 폭을 지정할 수 있습니다.



1
2
3
4
5
= range(5# a = 0, 1, 2, 3, 4
= range(18# b = 1, 2,3, 4, 5, 6, 7
= range(0143# c = 0, 3, 6, 9, 12
= range(81-1# d = 8, 7, 6, 5, 4, 3, 2
 
cs


 


  for 문은 정수 순서열뿐 아니라 문자열, 리스트, 사전, 파일 등 많은 종류의 객체들에 대해 반복 수행하는데 사용될 수 있습니다. 다음은 각 종류의 객체를 출력하는 예제입니다.





 * forExam.py


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
= "Hello Python"
 
for c in a:
    print c
 
= ["Jack""Sofie""Jolie""Park"]
 
for name in b:
    print name
 
= { 'Samsung'500.10'Apple'950.95'LG'10.0 }
 
for key in c:
    print key, c[key]
 
 
cs




 



  for문에 값들의 순서열을 제공하는 반복자 객체나 생성기 함수를 직접 만들 수 있기 때문에 for 루프는 파이썬에서 제공하는 가장 강력한 언어 기능 중 하나입니다.





 1-2. 함수

  다음 예처럼 함수는 def문을 사용해 생성합니다.


1
2
3
4
def remainder(a,b):
    q = a // b  # //는 끝 수를 버리는 나누기
    r = a - q * b
    return r
cs





  함수를 호출하려면 result = remainder(37, 15)처럼 함수 이름을 쓰고 이어서 인수들을 괄호로 둘러싸주면 됩니다. 함수는 단일 인자 뿐아니라 튜플을 사용해 여러 값을 반환할 수도 있습니다.


  함수 인수에 기본 값을 할당하려면 대입문을 사용하면 됩니다.



1
2
def connect(hostname, port, timeout=300):
    # Function body
cs




  함수 정의에 기본 값을 주어지면 이어지는 함수 호출에서 해당 값을 생략할 수 있습니다. 생략된 값은 기본 값을 가지게 됩니다.



1
2
connect('palpit.tistory.com'8080)
 
cs




  함수 안에 변수가 생성되거나 값이 대입되면 이 변수의 유효 범위는 지역 범위를 갖습니다.즉, 변수는 함수 몸체 안에서만 정의되고 함수가 반환되면 변수는 사라집니다. 함수 안에서 전역 변수의 값을 수정하려면 다음과 같이 global 문을 사용하면 됩니다.


1
2
3
4
5
6
count = 0
...
 
def sumCalc():
    global count
    count += 1
cs






 1-3. 생성기(Generator)

  함수는 단일 값을 반환하는 대신, yield 문을 사용해 일련의 결과를 생성할 수도 있습니다. 다음은 한 예를 보여줍니다:


1
2
3
4
5
def countdown(n):
    print "Counting down"
    while n > 0:
        yield n
        n -= 1
cs




  yield를 사용하는 함수를 생성기라고 부릅니다. 생성기 함수를 호출하면, next() 메서드(파이썬 3에서는 __next__())를 반복적으로 호출할 때 일련의 결과를 반호나하는 객체가 생성됩니다. 다음은 한 예입니다.









  next()호출하면 생성기 함수는 다음 yield 문에 도달할 때까지 실행됩니다. 이때, yield에 전달된 값이 next()에 의해 반환되고 생성기 함수는 실행이 잠시 중단됩니다.


  보통 앞에서 본 것처럼 next()를 직접 호출하는 일이 거의 없습니다. 대신 다음과 같이 for 루프를 연결시켜 사용합니다.



1
2
for i in countdown(5):
    print i, 
cs



 생성기는 처리 파이프라인, 스트림, 데이터 흐름에 기반한 프로그램을 작성할 때 강력한 위력을 발휘합니다. 예를 들어, 다음 생성기 함수는 로그 파일을 검토하는데 흔히 사용되는 유닉스의 tail -f 명령의 동작을 흉내냅니다. 


1
2
3
4
5
6
7
8
9
10
import time
def tail(f):
    f.seek(02)
    while True:
        line = f.readline()
        if not line:
            time.sleep(0.1)
            continue
        yield line
 
cs






  다음은 일련의 라인에서 특정 부분 문자열을 찾는 생성기입니다.



1
2
3
def grep(lines, searchtext):
    for line in lines:    
        if searchtext in line: yield line
cs




  두 생성기를 연결시켜 간단한 처리 파이프라인 생성하는 예입니다.



1
2
3
4
5
6
7
8
 
# 유닉스 "tail -f | grep python" 의 파이썬 구현
 
wwwlog = tail(open("access-log"))
pylines = grep(wwwlog, "python")
 
for line in pylines:
    print line,
cs





  생성기와 관련해서 알아두어야 할 것은 생성기는 보통 리스트나 파일 같은 다른 반복자 객체와 함께 섞일 수 있다는 점입니다. 특히, for item in s 같은 문장에서 s는 아이템 리스트, 파일의 줄들, 생성기 함수 결과 똔느 반복을 지원하는 어떤 객체든 될 수 있습니다. s에 어떤 객체든 올 수 있기 때문에 확장성 있는 프로그램 작성이 가능합니다. 



* 이 강좌는 '파이썬 완벽 가이드' 서적을 참고로 작성했습니다.



다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다
조회수 확인

1. 파이썬 입문

 1-1. 튜플(Tuple)

  튜플을 사용하면 값들을 단일 개체에 채워 넣음으로써 간단한 데이터 구조를 생성할 수 있습니다. 다음과 같이 값들을 괄호로 둘러싸서 생성합니다.



1
2
stock = ('Geek'11213.05)
person = (firstname, lastname, address)
cs




  특수한 구문을 사용하여 0 개와 1 개의 요소를 가지는 튜플도 정의할 수 있습니다.



1
2
3
4
= ()    
= (item1, )
= item, 
 
cs




  리스트처럼 튜플의 값도 숫자 색인으로 추출할 수 있습니다. 하지만 다음과 같이 튜플을 변수들로 풀어헤치는 방식이 더 자주 쓰입니다.



1
2
name, shares, price = stock
firstname, lastname, address = person
cs






  리스트가 지원하는 대부분의 연산(색인, 분할, 연결 등)을 튜플도 지원하지만 한 번 생성되고 나면 튜플의 내용을 변경할 수 없다는 게 단점입니다. 따라서, 튜플은 항목을 추가하거나 삭제할 수 있는 객체들의 컬렉션이 아니라, 여러 부분으로 이루어진 단일 객체로 보는 것이 더 적절합니다.


  데이터를 저장하는데 튜플과 리스트를 함께 사용하기도 합니다. 예를 들어, 다음 프로그램은 콤마로 구분되는 여러 열을 갖는 데이터를 읽어 들이는 방법을 보여줍니다.




 * portfolio.csv


1
2
Google,500,1100.50
Samsung,20,300.75
cs




 * tuplelist.py




1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
filename = "portfolio.csv"
portfolio = []
 
for line in open(filename):
    fields = line.split(",")   # 줄을 분할하여 리스트 만듬
    name = fields[0]
    shares = int(fields[1])
    price = float(fields[2])
    stock = (name, shares, price)  # 튜플을 생성 
    portfolio.append(stock)    # 레코드 리스트에 추가 
 
cs





 









 1-2. 집합(Set)

  집합은 객체들의 순서 없는 모음을 담는데 사용합니다.집합은 다음과 같이 set() 함수에 일련의 항목들을 넘겨주어 생성합니다.


1
2
= set([3,5,9,10])
= set("Hello")
cs




  리스트나 튜플과 달리, 집합은 순서가 없기 때문에 숫자로 색인이 될 수 없습니다. 게다가, 집합은 요소가 중복되는 일이 없습니다. 위의 t 객체 집합의 값을 들여다보면 아래와 같은 결과를 얻게 됩니다.









  'l' 문자가 한 번만 나오는 것을 볼 수 있습니다.

  

  집합은 집합 연산(합집합, 교집합, 차집합, 대칭 차집합 등)을 지원합니다.



1
2
3
4
= t | s # 합집합
= t & s # 교집합
= t - s # 차집합
= t ^ s # 대칭 차집합
cs





  add()와 update()는 집합에 새로운 아이템을 추가하는데 사용됩니다.



1
2
= add('x')
s.update([103145])
cs




  remove()로 아이템을 제거할 수도 있습니다.







 1-3. 사전(Dictionary)

  사전은 키로 색인되는 객체들을 담는 연관 배열 혹은 해시 테이블입니다. 다음과 같이 값들을 중괄호({})로 둘러싸서 생성합니다.



1
2
3
4
5
stock = {
    "name""Apple",
    "shares"5000,
    "price"1200.50
}
cs

  




  사전의 요소에 접근하려면 다음과 같이 키 색인 연산자를 사용합니다.


1
2
name = stock["name"]
share = stock["shares"]
cs



  사전의 추가 및 수정은 다음과 같이 수행합니다.



1
2
stock["shares"= 500
stock["date"= "December 18, 2015"
cs






  주로 문자열이 키로서 사용되지만, 숫자나 튜플 같은 다른 파이썬 객체도 키로 사용될 수 있습니다. 리스트나 사전과 같이 그 내용이 바뀔 수 있는 객체는 키로 사용할 수 없습니다.


  사전은 순서 구분 없는 데이터를 빠르게 검색하기 위한 용도의 컨테이너로도 사용됩니다. 예를 들어, 다음은 주가를 담는 사전입니다.



1
2
3
4
5
6
7
prices = {
    "SAMSUNG"450.10,
    "LG"13.15,
    "VEGA"20.51,
    "APPLE"985.95
}
 
cs




  빈 사전은 다음 두 가지 방법으로 만들 수 있습니다.



1
2
3
prices = {}
prices = dict()
 
cs




  사전에 어떤 키가 들어 있는지는 다음과 같이 in 연산자로 검사합니다.



1
2
3
4
5
if "APPLE" in prices:
    p = prices["APPLE"]
else:
    p = 0.0
 
cs





  앞에 나온 바로 이 일련의 단계는 다음과 같이 더욱 간결하게 표현할 수 있습니다.



1
2
= prices.get("LG"0.0)
 
cs




  사전의 키 목록을 얻고 싶으면 사전을 리스트로 변환하면 됩니다.


 

1
2
syms = list(prices)
 
cs




  요소를 삭제하는데는 del 문을 사용합니다.


1
2
del prices["LG"]
 
cs





  사전은 파이썬 인터프리터에서 가장 섬세하게 튜닝된 데이터 타입입니다. 따라서, 만약 간단히 데이터를 저장하고 작업을 하려는 것이라면 직접 자신만의 데이터 구조를 만들기 보다는 사전을 사용하는 것이 대부분의 경우 훨씬 낫습니다.














* 이 강좌는 '파이썬 완벽 가이드' 서적을 참고로 작성했습니다.


다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다
조회수 확인

1. 파이썬 입문

 1-1. 문자열

  파이썬에서 문자열은 작은 따옴표, 큰 따옴표, 삼중 따옴표로 문자열을 만들 수 있습니다.


1
2
3
4
hi = 'hello python'
sex = "Female"
country = """Seoul"""
 
cs




  당연한 얘기지만 문자열 시작과 끝 부분의 따옴표는 같은 종류로 떨어져야 합니다.


  파이썬에서 또한 삼중 따옴표가 유용하게 쓰이는 경우가 있습니다. 나머지 두 따옴표는 한 줄안에 논리적으로 있어야 하지만, 삼중 따옴표를 이용해서 아래와 같이 문자열을 담을 수 있습니다.


1
2
3
4
print ''' Content-type: text/html
<h1> Hello My World </h1>
<a href="http://palpit.tistory.com">Click here! </a>
'''
cs




  파이썬 문자열은 여느 언어의 색인과 마찬가지로 0부터 시작하게 됩니다.


  아래와 같이 사용할 수 있습니다.


1
2
3
hi = "hello"
= hi[4]   # o = 'o'
 
cs




  부분 문자열을 얻기 위해서는 분할 연산자를 사용하시면 됩니다. 사용 법은 아래와 같습니다.




1
2
3
4
5
6
hi = "hello World"
 
hello = hi[:5]
world = hi[6:]
lowo = hi[3:8]
 
cs




  문자열에서 플러스 연산자(+)는 문자열을 연결(concatenation)하는데 사용합니다.



1
2
3
hi = "hello World"
 
python = hi + "pyThon"
cs






  파이썬에서는 암묵적으로 문자열의 내용을 숫자 데이터로 해석하지 않습니다. (Perl이나 PHP와는 달리 말이죠)


1
2
3
4
5
= "12"
= "34"
 
= a + b # "1234"
 
cs




  이들을 수학적 계산하기 위해서는 int()나 float() 함수를 통해 숫자로 변환하여 계산하여야 합니다.



1
2
3
4
= "12"
= "34"
 
= int(a) + int(b) # 46
cs








 1-2. 리스트

  리스트는 객체들의 배열이라고 보시면 됩니다. 아래와 같이 대괄호로 둘러싸서 리스트를 생성할 수 있습니다.



1
2
orders = ['Park''Moon''Kim''Joo']
 
cs



  리스트 또한 0부터 시작하게 됩니다. Park의 색인 값은 0이 된다는 얘기지요.


  리스트에 마지막에 새로운 객체를 추가하고자 한다면 append() 메서드를 사용하시면 되고, 리스트의 가운데 객체를 삽입하고자 한다면 insert() 메서드를 사용하시면 됩니다.


1
2
3
4
orders = ['Park''Moon''Kim''Joo']
 
orders.append('Jake')
orders.insert(2"Nam")
cs





  문자열에서 사용된 분할 연산자를 통해서 분할된 리스트를 반환받을 수 있습니다.


  또한 각각의 리스트를 연결하기 위해 플러스 연산자를 사용하시면 됩니다.


  다음은 리스트를 통한 예제입니다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sys
if len(sys.argv) != 2:
    print "Please supply a filename"
    raise SystemExit(1)
file = open(sys.argv[1])
lines = file.readlines()
file.close()
 
# 모든 입력 값을 문자열에서 실수로 변환 합니다 
fvalues = [float(line) for line in lines]
 
# 최소값과 최대값을 출력합니다
print "Maximum ", max(fvalues)
print "Minimum ", min(fvalues)
 
cs




   




  1번 라인은 sys 모듈을 로드하기위해 import 구문을 사용했습니다.


  2번 라인은 명령 인자가 2개 인지 검사합니다. 즉 cmd 라인에서 python 실행을 할 시에, 그 뒤의 파일명과 또 다른 인자가 있기를 검사하는 것입니다.


  10번 라인은 lines를 반복문을 돌면서 line을 반환하여 반환된 line을 float() 함수를 통해서 리스트를 생성하는 구문입니다.


  즉, 파일을 읽어서 lines에 들어있는 값을 각 line별로 돌리면서 float() 함수를 통해 수치화 하게 되는 셈입니다.


  






다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다

[Python] 파이썬 입문 2

2015.12.11 14:32 - Palpit
조회수 확인

1. 파이썬 입문

 1-1. 변수와 산술식

  아래 코드를 먼저 살펴보도록 하겠습니다.

 


1
2
3
4
5
6
7
8
9
principal = 1000 # 초기 금액
rate = 0.05      # 이자율
numyears = 5     # 복리 년
year = 1
 
while year <= numyears:
    principal = principal * (1 + rate)
    print year, principal
    year += 1
cs




  위와 같이 작성한 후, 프로그램을 실행시키면 아무 무리없이 잘 돌아 갑니다.(아래는 python 내장 IDLE를 통해 실행시킨 화면입니다)



 






  여기서 파이썬만의 특징을 볼 수 있습니다. 바로 동적 타입 언어라는 점입니다.


  즉, 실행 도중 어떤 타입의 데이터라도 가리킬 수 있다는 점이 특징입니다.


  변수 이름이 타입이나 크기, 값이 저장될 메모리 위치와 연결되는 C 언어 류와 다른 점 입니다.


  다음으로 집고 넘어 갈 점은 파이썬은 들여쓰기(indentation) 문법입니다.


  while 문은 흔히 반복(loop)문을 뜻합니다. 6번 라인에 while 이라는 키워드가 나오고 7~9라인은 각각 들여쓰여 있습니다.


  들여쓰인 7~9번 라인은 while문 안에 포함되는 구문이게 됩니다.






  위 출력된 결과는 소수점이 방대하게 늘어날 가능성이 있습니다. 이러한 경우에 포맷 연산자를 이용해서 출력하여 좀 더 깔끔하게 만들 수 있습니다.


  

1
print "%3d %0.2f" % (year, principal)
cs



  8번 라인 대신 위 라인으로 고쳐서 쓰면 출력이 아래처럼 나오게 됩니다.









 


  위 코드에서 %3d는 폭이 3인 열에서 오른쪽으로 정렬된 정수를 의미하고, %0.2f는 소수점 아래로 두 자리 숫자를 표시하는 부동 소수점 수를 의미합니다.


  포맷 문자열에 대해서는 나중에 제대로 언급하고 넘어가겠습니다.


  위 코드를 format() 함수를 이용하여 똑같이 출력할 수 있습니다.


1
2
print format(year,"3d"), format (principal, "0.2f")
 
cs




  또한 중괄호{}를 이용하여 format()을 사용가능 합니다.



1
print "{0:3d} {1:0.3f}"format(year, pricipal)
cs









 1-2. 조건문 & 파일 입출력

  파이썬에서 조건문은 C나 JAVA와 매우 유사합니다.



1
2
3
4
if a < b:
    print "True"
else:
    print "False"
cs




  보시는 바와 같이 if와 else로 구성할 수 있고, 각각에 들여쓰기만 해주시면 됩니다. else절은 당연히 생략 가능합니다.


  파이썬에서는 불리언 표현식을 or과 and, not으로 표현 가능합니다.


 


1
2
if prototype == "A" and subtype == "CX" and not (cost < 500 or cost > 1000):
    print "Excellent"
cs

  



  또한 파이썬에는 switch case 구문이 없습니다. 아래와 같이 elif문을 사용하셔야 합니다.



1
2
3
4
5
6
7
8
if suffix == ".html":
    content = "text/html"
elif suffix == ".jpg":
    content = "image/jpeg"
elif suffix == ".png":
    content = "image/png"
else:
    raise RuntimeError("Unknown content type")
cs




  다음으로 진리값은 불리언 값인 TrueFalse로 표현합니다.


1
2
3
4
if 'span' in s:
    has_spam = True
else:
     has_spam = False
cs




  위 예에서 사용된 in 연산자주어진 값이 문자열, 리스트 혹은 사전 같은 객체에 들어있는지를 검사하는 데 주로 사용합니다.







  다음으로 파일 입출력에 대해 알아보도록 하겠습니다.


  아래 코드를 작성하세요.



1
2
3
4
5
6
7
file = open("zero.txt")         # 파일 객체 반환
line = file.readline()          
while line:
    print line,                 # ','는 줄바꿈 문자를 생략 
    line = file.readline()
file.close()
 
cs




  zero.txt는 임의로 만든 txt 파일입니다. 여러분이 임의로 작성하세요. 실행 결과는 아래와 같습니다.








  위 코드에서 open() 함수파일 객체를 반환합니다. 반환된 파일 객체로 부터 readline() 메서드를 통해 입력으로부터 끝의 줄바꿈 문자를 포함한 한 줄을 읽습니다.




  다음은 파일 출력에 대해 알아보도록 합시다.


  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
principal = 1000 # 초기 금액
rate = 0.05      # 이자율
numyears = 5     # 복리 년
year = 1
 
file = open("out""w"# 쓰기용 파일 open
 
while year <= numyears:
    principal = principal * (1 + rate)
    print >> file"%3d %0.2f" % (year, principal)
    year += 1
 
file.close()
 
cs





  실행 결과를 notepad++ 로 열어보면 아래와 같습니다.







  파이썬 2에서는 출력을 파일에 쓰기위해 >> 를 사용하여 print문에 출력할 파일을 지정하여 사용합니다.

다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다

[Python] 파이썬 입문

2015.12.11 12:32 - Palpit
조회수 확인

1. 파이썬 입문

 초기 파이썬 소개를 통해 파이썬에 대해 알아보도록 하겠습니다.


 이번 장에서는 변수, 표현식, 제어 흐름, 함수, 생성기, 클래스, 입출력 정도의 개념을 다루도록 하겠습니다.


 본 강좌는 파이썬 2.7 버전 기준으로 설명된 강좌입니다.


 



 1-1. 파이썬에서 Hello World 출력하기

  가장 먼저 출력문에 대해 알아보도록 합니다.


  파이썬 실행 초기 화면입니다.


  실행법은 cmd 창에 'python' 입력하시면 됩니다.

 










  >>> 라인에 아래와 같은 코드를 작성합니다.




1
print 'Hello Python World!'
cs








  간단히 출력된 모습이 보일것 입니다.



  





 1-2. 간단한 계산하기

  파이썬은 대화식 모드이기에 계산기로 사용하기 유용합니다.



 








  여기에 언더바(_)를 하면 기존 연산 결과를 사용하여 연산 가능합니다.














 1-3. py 파일을 통한 실행

  지금까지는 python 프롬프트 내에서 대화식 모드로 실행하였습니다.


  간단하게 메모장을 열어서 아래와 같은 코드를 작성해봅시다.


  

1
2
# My First Python Project.
print 'Hello Python !'
cs



   * 참고: 파이썬 코드에서 #은 주석을 나타냅니다.




  작성 후, 저장하시고 확장자는 py를 붙여주시길 바랍니다.



  IDLE가 설치되어 있는 윈도우 환경이면 저장된 폴더에 아래와 같이 나타날 것 입니다.











  해당 파일을 실행시켜 보겠습니다. 눈 깜짝할 사이에 사라질 것 입니다. 출력만 하기 때문에 출력 일만 하고 바로 창이 사라져 버린 것 입니다.



  그렇다면 cmd 창을 통해 해당 경로로 가서 실행시켜 보도록 하겠습니다.



  실행 방법은 아래와 같습니다.



1
python 실행파일명.py
cs











  이렇게 해서 간단하게 출력과 실행을 알아보았습니다. 다음 장에 이어서 소개하도록 하겠습니다.

다른 카테고리의 글 목록

CSE/Python 카테고리의 포스트를 톺아봅니다