파이썬의 기본문형


- 예약어

 

 다른언어를 공부해 보신분들은 아시겠지만 프로그래밍 언어에는 예약어가 있습니다. 예약어는 키워드라고도 하며, 이미 문법적인 용도로 사용되고 있기때문에 변수등의 식별자로 사용하면 안되는 단어들을 뜻합니다.

 파이썬의 버전에 따라 예약어의 종류와 수가 다릅니다. 저는 ipyton 2.7.11 버전을 사용하고있는데, 2.7.11 버전은 31개의 예약어가 있습니다. 

 아래 코드는 예약어를 출력하고, 예약어가 저장된 리스트 즉, 예약어의 수를 알아보는 코드입니다. #은 주석입니다.



import keyword            # keyword 모듈을 불러옴

print keyword.kwlist       # keyword모듈이 지원하는 kwlist를 출력

print len(keyword.kwlist) # 예약어가 저장된 리스트의 길이 출력



 아래 그림을 보면 위에서 사용한 print함수, import 또한 예약어라는걸 확인 할 수 있습니다. 추가로 len함수는 특정 모듈을 import하지 않고도 사용할 수 있는 내장 함수입니다.


- 내장 함수

 
 내장 함수는 위에서 사용한 len함수처럼 특정 모듈을 추가하지않고, 기본적으로 제공하는 함수를 뜻합니다. 아래 함수들이 내장함수입니다.

1) abs(x) : 수치형 자료 x의 절대값을 반환하는 함수

2) max(s) : sequence자료형(문자열, 리스트, 튜플)을 입력받아 그 자료가 지닌 값중 가장 큰 값을 반환하는 함수

  - print max("pyton") -> 아스키 코드가 가장 큰 y 반환

  - print max([1,2,3])   -> 리스트에서 가장 큰 3 반환

3) min(s) : max()의 반대로 가장 작은 값을 반환하는 함수

4) pow(x,y) : a의 b승을 반환하는 함수

  - print pow(2,4)  -> 16

  - print pow(2,-1) -> 0.5

5) divmod(x,y) : x를 y로 나눈 몫과 나머지를 반환하는 함수 

  - print divmod(5,2) -> 2,1

5) chr(x) : 아스키 코드 값을 문자로 변환해주는 함수

  - print chr(97) -> a

  - print chr(65) -> A

  - print chr(48) -> 0(숫자 0이아닌 문자0)

6) str(object) : 임의의 객체 object에 대해 해당 객체를 표현하는 문자열을 반환하는 함수

  - print str(3) -> 3

  - print str([1,2,3]) -> [1,2,3]

7) range([start],stop,[step]) : 수치형 자료형으로 start, stop, step등을 입력 받아 해당 범위에 해당하는 정수를 리스트로 반환하는 함수

  - 인수가 하나인 경우(stop) : 0부터 stop-1까지의 정수 리스트 반환

    print range(10) -> [0,1,2,3,4,5,6,7,8,9]

  - 인수가 두개인 경우(start, stop) : 0부터 stop-1까지의 정수 리스트 반환

    print range(3,10) -> [3,4,5,6,7,8,9]

  - 인수가 하나인 경우(start, stop, step) : 0부터 stop-1까지의 정수리스트를 반환 하되, step인것들만 반환

    print range(1,10,2) -> [1,3,5,7,9] # 각 원소가 step만큼 차이가 남

8) type(a) : a의 자료형을 반환하는 함수

   - print type(1) -> int(정수형)

   - print type(1.5) -> float(실수형)

   - print type('abc') -> str(문자형)

   - print type([1,2,3,4]) -> list(리스트)


- 식별자

 
 파이썬에서 식별자는 변수, 함수, 모듈, 클래스 또는 객체를 식별하는데 사용되는 이름을 말합니다. 가장 흔히 사용하는 식별자는 변수 이름입니다.
 식별자의 조건은 다음과 같습니다.
  - 대소문자 구분(a와 A는 다름)
  - 식별자는 문자(A~Z,a~z) 또는 언더바(_)로 시작할 수 있고, 두번째부터는 숫자도 가능
  - 특수문자(@,$,%등.)는 사용할 수 없음
  - 예약어나 내장함수, 모듈이름으로 만드는 일이 없도록 주의해야함


- 변수

 
 파이썬에서 변수가 생성되는 시점은 해당 변수에 임의의 값이 할당될 때 입니다. 아래와 같은 경우에 a=1에서 변수 a가 생성이됩니다. 변수의 타입을 따로 적지않고, 변수에 값이 할당될 때 변수의 타입이 정해집니다.



a=1

print # 그냥 print함수만 사용할 경우 한줄이 띄어집니다.

 변수의 삭제는 del이라는 예약어를 사용합니다.



a=1

print a
del a


- 기초 문형

 
 1) 연속라인 : 코딩이 길어졌을 때 한줄로 인식하도록 하는 기능입니다. 역슬래시(\)를 사용합니다.

a=1

b=3

if(a==1) and \ 

b(==3) : 

print 'connected lines'


 반대로 한 라인에 두문장을 이어서 쓸때는 세미콜론(;)을 사용합니다. 코드의 가독성 때문에 잘 사용하지 않는다고 합니다.


a=1; b=2

2) 할당문 : 등호(=)를 사용하는 연산입니다. 왼쪽에는 변수가와야합니다. 표현식은 오른쪽 항에만 올 수 있습니다.


a=1 # o

b=a # o

1+3=c # x

d=1+3 # o

그렇다면, a=(b=c+d)도 가능할까요? 

위의 식은 불가능합니다. b=c+d는 식(Expression)이아니라 문(Statement)이기 때문입니다.



 아래의 형태로도 할당이 가능합니다.



c,d = 3,4 처럼 한번에 할당도 가능 c->3, d->4

x=y=z=0 처럼 할당이 가능한데, 이때 오른쪽 항부터 연산이 진행됩니다.

z=0 -> y=z -> x=y



 그렇다면, C언어에서 temp를 써서 두 변수의 값을 swap하는것 처럼 변수의 swap 어떻게 할까요? 위의 할당 방법을 이용하면 쉽게 swap할 수 있습니다.



a=3

b=4

a,b=b,a



3) 확장 할당문 : 확장 할당문은 +=, -=, *=, /= 4가지가 있습니다.
  - a += 4는 a=a+4와 동일합니다. 아래와 같은 경우로도 사용이 가능합니다.



a=10      # a에 10을 할당하고

a *= 2+3 # 2+3를 먼저 연산해서 a에 5를 곱한 값인 50을 저장하고

print a    # 50을 출력합니다.



4) 객체와 할당
 객체의 변수는 해당 객체의 레퍼런스를 지니고 있습니다. 레퍼런스는 가리키고 있는 값을 뜻합니다. a=1 이라는 문장에서 a는 이름, 1은 객체이며 변수 a는 1을 가리킵니다. (a->1인 형태)
 아래의 코드와 같이 a,b,c 3개의 리스트를 만드는데, b와 c가 a를 가리키게 한 코드입니다.


a=[1,2,3]

b=[10,a,30]

c=['x',a,'z']


print a

print b

print c



 결과는 아래 그림과 같습니다. 처럼 b,c리스트 안에 a리스트가 출력됩니다.


위 코드는 아래의 그림처럼 a가 [1,2,3]리스트를 가리키고, b,c에서도 a를 가리켜서 결국에는 [1,2,3]리스트를 가리킵니다.






콘솔 입·출력


 콘솔(Console)은 윈도우에서 커맨드창(cmd창), 리눅스에서 터미널창(Terminal)을 뜻합니다. 콘솔에서 입·출력에대해 알아보겠습니다. 이클립스에서도 콘솔창을 제공해서 실습을 이클립스에서 했습니다.

- 입력

 콘솔에서의 입력은 raw_input이라는 내장함수를 이용합니다. raw_input함수의 사용은 아래와 같습니다.



name = raw_input('your name : ') # raw_input함수로 입력을받아 name변수에 저장

print name


 아래 그림과같이 your name : 이라는 문자열이 출력되고 뒤에 입력할 수 있는 부분에 이름을 입력하면 name이라는 변수에 저장해서 name을 출력한 결과입니다.

 추가적으로 내장 함수중에 int()함수가 있습니다. int()함수는 문자열을 정수로 변환하는 함수입니다. 

 raw_input함수를 통해 정수를 입력받고 2를 더하는 코드를 작성했습니다. 정상적으로 실행이 될까요?



a = raw_input('input : ')

print a+2


 아래와 같이 문자형과 정수형 객체는 연결할 수 없다는 오류가 출력됩니다. raw_input 함수는 입력 값을 문자형으로 인식한다는 걸 알 수 있습니다.


 이 때, 사용하는게 int()함수입니다. int함수를 사용해서 코드를 재구성 하고 실행하면 정상적으로 출력이됩니다.



a = int(raw_input('input : ')) #raw_input 함수를 int 함수의 인자로 사용

print a+2




 입력을 할 수 있는 함수에는 input()함수도 있습니다. input()함수는 raw_input함수와 다르게 입력한 값에 따라서 자료형을 인식합니다. 또한 연산식을 입력할 수도 있습니다.



a=input('input : ') # 따로 int함수를 사용하지 않아도 정수를 입력하면 정수형으로 인식합니다.

print a+10




 문자열을 입력하는 경우, 입력할 때 따옴표를 써줘야 오류가 발생하지 않습니다.



a=input('input : ')

print a




- 출

 출력은 여태까지 계속 사용했던 print함수를 이용해서 하는데, print 함수에 대해 알아보겠습니다.

 print 함수는기본적으로 줄바꿈을 수행 합니다. 



print 1 

print 2

(결과)

1
2



print 함수에 콤마(,)를 용하게되면 한칸을 띄어줍니다.


print 1, 2


(결과)

1 2


다음과 같이 숫자가 아닌 식도 출력이 가능합니다.


print 5+5, 4*9


10 36



 그렇다면, 숫자와 문자가 합쳐진 "2AM"과같은 문자도 출력할 수 있을까요? 아래와 같이 입력을 하면 오류가 발생합니다. 숫자와 문자형은 더해주지 않습니다.


print 2+'AM'


 

 2AM과 같이 숫자와 문자가 결합된 문자를 출력하고 싶은 경우는 숫자또한 문자로 표현해줘야 합니다. 물론 한번에 "2AM"이라고 쓸 수도 있겠지만, 문자의 결합도 가능하다는점을 말하고 싶었습니다.


print '2'+'AM'





* 출처 : 한국기술교육대학교 온라인평생교육원 파이썬프로그래밍




+ Recent posts