본문 바로가기
Python

파이썬 기본 문법

by GGoris 2014. 12. 22.
반응형

이 글은 '열혈강의 Python 개정판ver.2'를 참고로 작성하였습니다.


'열혈강의 Python 개정판ver.2' 이강성저  프리렉





RaspberryPI에 Raspbian을 사용하였습니다.





파이썬 기본 문법




변수이름 규칙


파이썬의 변수명 규칙은 다른언어와 크게 다르지 않습니다.

또한 대소문자를 구분합니다.


[a-zA-Z_][a-zA-Z0-9]*

위의 정규식으로 표현될수 있습니다.

간단히 풀어보자면 아래와 같습니다.

1. 특수문자를 쓸수 없고

2. '_'로 시작할 수 있습니다.

3. 숫자로 시작 할 수 없습니다.

4. 길이 제한이 없습니다.

5. 대소문자 구별을 합니다.

6. 예약어는 변수명으로 사용할 수 없습니다.


가능한 변수명의 예(모두 다른 변수)

_hong

hong

Hong

hong1


불가능한 변수명

0hong

#hong  <- 주석

else <- 예약어



예약어를 확인 하는 방법은 아래와 같습니다.

>>>import keyword

>>>keyword.kwlist



또한 변수명을 만들때 주의할 점이 있습니다.

내장함수의 이름과 같은 이름을 사용할때 입니다.


>>> str(1234) #정수를 문자열로 바꿔줍니다.

'1234'

>>> str = 'abc'

>>> str(1234)

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

TypeError: 'str' object is not callable


위의 상황처럼

변수가 함수이름을 덮어버려 함수를 사용할 수 없게 됩니다.






주석문


주석문은 '#'으로 시작됩니다.


#이후의 해당인에서 모든 문자는 주석문이 됩니다.

>>>#주석

>>>import sys #sys주석입니다.

같이 사용됩니다.






연속라인


>>> if(a==10) and\

... (b==3):

... print 'connected lines'


다음과 같이 '\'(백슬레쉬)로 현재 라인과 다음 라인을 연결 시켜줄 수 있습니다.





치환문

변수에 값을 대입합니다.
>>>a=1

비교연산자로는 '==' 를 사용할 수 있습니다.
>>>if(a==1)

여러개의 변수를 한번에 치환할 수 도 있습니다.
>>>c, d = 4, 5 

위처럼 여러개를 각각 대입해 줄 수도있고
>>>x=y=z=0

한번에 같은 값을 대입해 줄 수도 있습니다.
>>>e=10; f=100

다른라인에 써야하는 문장을 ';'(세미콜론)으로 구분해 한 줄에 쓸 수도 있습니다.
>>>e,f=f,e

* 이미 변수가 있는 경우에는 값이 변경됩니다.

>>> aNum=1

>>> type(aNum)

<type 'int'>

>>> aNum='aNum'

>>> type(aNum)

<type 'str'>



C 언어에서보았던 연산자들도 사용가능합니다.

+=, -=, *=, /*, %=, &=, |=, ^=, <<=, >>=, **=






문자열로된 파이썬코드 실행


eval()

문자열로된 파이썬 식을 실행해줍니다.

>>> a = '1+2'

>>> type(a)

<type 'str'>

>>> a

'1+2'

>>> eval(a)

3


아래처럼 특정 .py에 정의되어있는 함수를 사용할 수도 있고
>>> eval('printCal.showCal(2014,12)')
   December 2014
Mo Tu We Th Fr Sa Su
 1  2  3  4  5  6  7
 8  9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31



내부에서 정의된 함수를 호출 할 수 있습니다..
>>> def printName():
...     print 'hong'
...
>>> eval('printName()')
hong




위에서 보신것 처럼 eval()은 함수나 식(expression)을 수행합니다.

문(statement)을 수행하기 위해서는 exec를 사용합니다.

식 -> a+1

문 -> a=a+1


eval('a=1+2')

위의 eval에 문을 넣으면 오류가 발생하지만

이를 수행하기 하려면 exec를 사용합니다.

exec('a=1+2')


>>> eval('a=1+2')

Traceback (most recent call last):

  File "<stdin>", line 1, in <module>

  File "<string>", line 1

    a=1+2

     ^

SyntaxError: invalid syntax

>>> exec('a=1+2')

>>>




exec는 여러 개의 문을 수행할 수도 있습니다.


>>> statement='''

... a=1

... if a>0:

...     print 'Success'

... '''

>>> exec(statement)

Success

>>>





콘솔 입출력


raw_input을 사용해 문자열을 입력 받을 수 있습니다.

>>> name = raw_input('name?')

name?홍

>>> print name

>>>



정수나 실수를 입력 받고싶다면 치환해 주거나
input을 사용합니다.
>>> aNum=int(raw_input('int: '))
int: 10
>>> aNum
10
>>> aNum=input('int: ')
int: 11
>>>


식을 처리하여 넘겨 줄 수 있습니다.

>>> result=input('expr:')

expr:10+aNum

>>> result

21

>>>




출력하는 방식은 print와 pprint가 있습니다.
>>> complicated=['iphone',(1,2,3), ('galaxy', 'smart',('a','b',('asdf','zxcv')))]
>>> complicated=complicated*3
>>> print complicated
['iphone', (1, 2, 3), ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))), 'iphone', (1, 2, 3), ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))), 'iphone', (1, 2, 3), ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv')))]
>>> import pprint
>>> pprint.pprint(complicated)
['iphone',
 (1, 2, 3),
 ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))),
 'iphone',
 (1, 2, 3),
 ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))),
 'iphone',
 (1, 2, 3),
 ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv')))]
>>>



대화식 출력에서는 변수명만 입력하면 print방식으로 출력이 됩니다.

이를 pprint방식으로 출력하려면 displayhook를 설정하면 됩니다.

>>> import sys, pprint

>>> complicated

['iphone', (1, 2, 3), ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))), 'iphone', (1, 2, 3), ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))), 'iphone', (1, 2, 3), ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv')))]

>>> sys.displayhook=pprint.pprint

>>> complicated

['iphone',

 (1, 2, 3),

 ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))),

 'iphone',

 (1, 2, 3),

 ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv'))),

 'iphone',

 (1, 2, 3),

 ('galaxy', 'smart', ('a', 'b', ('asdf', 'zxcv')))]

>>>










반응형

'Python' 카테고리의 다른 글

파이썬 수치자료형  (0) 2014.12.25
파이썬 제어문  (0) 2014.12.23
파이썬 메모리 관리  (0) 2014.12.23
파이썬 기본 자료형  (0) 2014.12.22
파이썬 시작하기!  (0) 2014.12.22

댓글