2014의 게시물 표시

정규표현식

#!/usr/bin/python3 # 정규표현식 # byElex(http://python.elex.pe.kr/)
importre
defmain(): # 패턴 컴파일     pattern = re.compile("([\.0-9a-z_-]+)@([0-9a-z_-]+)(\.[0-9a-z_-]+){1,2}", re.IGNORECASE)     txt ="someone's email address is email@email.com" # 찾기 match= re.search(pattern, txt) # 또는     match = re.search("([\.0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}", txt) ifmatch:    print('{} is valid email address.'.format(match.group()))
# 바꾸기 print(re.sub("([\.0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)(\.[0-9a-zA-Z_-]+){1,2}","*****", txt)) # 또는 ifmatch: print(txt.replace(match.group(),"*****")) if__name__ =="__main__": main()

파이썬에서 정규표현식 관련 기능은 re라는 모듈을 통해서 제공된다. 패턴 문자열을 컴파일한 후에 search() 메서드를 사용할 수도 있고, search() 메서드에 패턴 문자열을 직접 지정해서 사용할 수도 있다. search() 메서드는 일치 결과를 반환하는데 일치하지 않으면 None을 반환한다.

문자열

#!/usr/bin/python3 # 문자열 # byElex(http://python.elex.pe.kr/)

defmain(): print("This is a string.".upper())# THIS IS A STRING. print("This is a string.".lower())# this is a string. print("this is a string.".capitalize())# This is a string. print("This Is A String.".swapcase())# tHIS iS a sTRING. print("This is a string.".find("is"))# 2 print("This is a string.".replace("This","That"))# That is a string. print("  This is a string.  ".strip())# This is a string. print("  This is a string.  ".strip("\n"))#   This is a string.  print("  This is a string.  ".rstrip())#   This is a string. print("  This is a string.  ".lstrip())# This is a string.  print("This is a string.".isalnum())# False

예외 처리

#!/usr/bin/python3 # 예외 처리 # byElex(http://python.elex.pe.kr/)
defmain(): try: forlineinread_file('someFile.txt'): print(line) exceptIOErrorase: print("입출력 오류", e) exceptValueErrorase: print("파일 이름 오류", e) except: print("알 수 없는 오류") finally: pass
defread_file(filename): iffilename.endswith('.txt'): returnopen(filename).readlines() else: raiseValueError('파일 이름은 .txt로 끝나야 함') if__name__ =="__main__": main()

파이썬에서의 예외 처리는 try-except-finally 구문을 사용한다. 예외를 발생시킬 때에는 raise 키워드를 사용한다.


클래스

#!/usr/bin/python3 # 클래스 # byElex(http://python.elex.pe.kr/)

classDog: # 생성자 def__init__(self, name, color='white'): self._name = name self._color = color # 메서드 defbark(self): print('{}(이)가 짖는다. "멍멍"'.format(self._name))        defwalk(self): print('{}(이)가 걷는다. "슬금슬금"'.format(self._name)) # 겟터와 셋터 메서드 defgetName(self): returnself._name        defgetColor(self): returnself._color    defsetColor(self, color): self._color = color defmain():     dog1 = Dog('땡칠')     dog1.bark()       dog1.setColor('black') print(dog1.getColor()) if__name__ =="__main__": main()

클래스의 인스턴스 생성시에 실행되는 __init__()이라는 생성자 메서드도 있고, 또 인스턴스가 메모리에서 해제될 때 실행되는 __del__()이라는 파괴자 메서드도 있다.

파이썬에서는 키워드리스트 매개변수를 사용해서 겟터와 셋터를 좀 더 일반화시킨 형태의 코드가 많이

함수

파이썬에서 사용자 정의 함수는 def라는 키워드로 시작한다. 값을 반환하려면 return 키워드를 사용하면 된다는 점은 다른 프로그래밍 언어들과 마찬가지이다.
defmyFunc0(): return'안녕'


파이썬의 함수는 사용하기 전에 정의되어 있어야 한다. 따라서, 다음의 코드는 잘못된 코딩이다.
myFunc1() defmyFunc1(): print('나는야 함수라네~')


일단 함수의 이름만 선언 해두고 함수의 바디 부분은 아직 구현하지 않았다면 어떻겠는가. 다른 프로그래밍 언어에서는 void myFunc(){ } 처럼 블록 안에 아무것도 안쓰면 그만이다. 그러나, 브레이스{} 통한 블록 구조를 배제해버린 파이썬의 경우에는 구문 해석 과정에서 오류가 발생한다. 그래서, 파이썬에는 pass라는 키워드가 등장하게 되었다. 즉, pass는 '아무 것도 안함'이라는 의미이다. pass 키워드는 if-else 구문에서도 처리할 것이 없을 때에 종종 사용된다.
defmyFunc2(): pass
기본적으로, 파이썬에서 함수의 매개변수는 다른 프로그래밍언어들에서와 유사하다. 즉, 함수 이름 뒤에 괄호 사이에 매개변수를 나열해 주면 된다.
defmyFunc3(param1): print('나는야 함수라네~', param1)
defmyFunc4(param1, param2): print('나는야 함수라네~', param1, param2)

함수의 매개변수가 생략된 경우에 사용될 기본값을 지정해줄 수도 있다. 다음과 같은 함수의 경우 myFunc5(1) 또는 myFunc5(1,5)라고 호출할 수 있고, 두번째 매개변수가 생략된 경우 param2는 3이 된다.  주의해야 할 것은, 기본값을 가진 매개변수는 항상 뒤쪽에 써야 한다는 것이다. 논리적으로 생각해 보면 당연하다, 안그러면 파이썬 인터프리터가 헷갈릴테니까.
defmyFunc5(param1, param2=3): print('나는야 함수라네~', param1, param2)
임의…

연산자

산술연산자 print(7 + 2)# 9 print(7 - 2)# 5 print(7 * 2)# 14 print(7 / 2)# 3.5 print(7** 2) # 49 print(7 // 2)# 3 print(7 % 2)# 1      
위에서부터 순서대로 더하기, 빼기, 곱하기, 나누기, 제곱, 나눗셈의 몫, 나눗셈의 나머지.

덧으로, 나눗셈을 연산하는 divmod()라는 함수도 있는데, print(divmod(5,3))# (1, 2)
divmod()는 몫과 나머지를 튜플로 반환한다.


할당연산자 number = 3 number +=3     number -=3     number *=3     number /=3     number **= 3     number //=3     number %=3

비트 연산자
defbinary(n):