본문 바로가기
Programming/Python

[python] 알아보기 01

by NAMP 2016. 4. 11.

[python] 알아보기 01

변수명

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

대·소문자를 구별한다. HAM 과 ham 은 다른 이름이다.
예약어를 피한다.

예약어

and, elif, global, or, assert, else, if ,pass, break, except, import, print, class, exec, in, raise, continue, finally, is, return, def, for, lambda, try, del, from, not, while, yield

import keyword
keyword.kwlist 	# 키워드 목록을 보여 준다.

주석

# 한줄 주석
""" 블럭 주석 """

확장 치환문

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

객체의 치환

일반적으로 파이썬에서의 치환은 대부분 레퍼런스에 의해 이루어진다.
만일 객체의 복사를 원한다면 객체에 다른 방법을 적용하거나 일괄적으로 copy 모듈을 이용한다.

문자열

+ 연결

>>> 'hello' + ' ' + 'world'
'hello world'

* 반복

>>> 'hello' * 3
'hellohellohello'

사전

>>> d = {'onoe':1, 'two': 2}
>>> d.keys()
['one', 'two']
>>> d.values()
[1, 2]
>>> d.items()
[('one', 1), ('two',2)]

자료형의 분류

자료형 저장 모델 변경 가능성 접근 방법
수치형 리터럴 불가 직접
문자열 리터럴 불가 시퀀스
리스트 저장 가능 시퀀스
튜플 저장 불가 시퀀스
사전 저장 가능 매핑

변경 가능 형(Mutable) : 자료의 값을 변경할 수 있다.
변경 불가능 형(Immutable) : 자료의 값을 변경할 수 없다.

내장 자료형

>>> type({}) # 사전에 대한 리턴 값은 'dict' 값을 갖는 type 객체이다.
<type 'dict'>
>>> type(3) # 정수
<type 'int'>
>>> type('abc') # 문자열
<type 'str'>
>>> type(None) # None 객체. 아무런 값도 없다(혹은 아니다)를 나타내기 위한 객체
<type 'None'>
>>> type([]) # 리스트
<type 'list'>
>>> type(()) # 튜플
<type 'tuple'>
>>> type(type({})) # 'type' 형의 type 객체
<type type>

파이썬 전체 자료형의 종류를 알아보려면 모듈 types를 이용하면 된다.

>>> import types
>>> dir(types)

객체의 신원 식별하기

>>> a=300
>>> id(a)
22489288

>>> c = [1,2,3]
>>> d = [1,2,3]
>>> c is d
False

제어문

if, for, while

if

if condition1:
	statement1
elif condition2:
	statement2
else:
	statement3

콜론:은 다음 문들이 현재의 문 내부 블럭에 속한다는 것을 알려준다.

for

for var in sequence:
	statement1
else:
	statement2

for 문을 이용할 때, 요소의 값 뿐 아니라 인덱스 값도 함께 필요하다면 enumerate() 내장 함수를 이용한다.

>>> d = ['one', 'two'] 
>>> for k, v in enumerate(d):
		print k, v
0 one
1 two

break : for 블럭을 벗어난다.
continue : for 문으로 다시 올라간다.
pass : 그냥 지나간다.

while

while condition:
	statement1
else:
	statement2

else 부분은 조건식이 거짓이 되어 while 문을 빠져나올 때 수행된다.
break 로 빠져나올 때는 else 블록을 수행하지 않는다.

들여쓰기

  • 가장 바깥쪽에 있는 블록의 코드는 반드시 1열부터 시작해야 한다.
  • 내부 블록은 같은 거리만큼 들여쓰여져야 한다.
  • 블록의 끝은 들여쓰기가 끝나는 부분으로 간주된다.
  • 탭과 공백을 섞어서 쓰는 것은 좋지 않다.
  • 들여쓰기 간격은 일정하기만 하면 된다.

함수

함수(function) : 하나의 이름으로 코드를 묶는 단위

def functionName (parameters):
	statements

논리 연산자

내부에서 True 는 1, False는 0의 값을 갖는다.

not x
x and y
x or y

연산자 우선 순위

우선순위 연산자 설명
1 expressis
{key:value}
[expressions]
(expression)
문자변환
사전표시
리스트 표시
식 결합 혹은 튜플 표시
2 f(arguments)
x[index:index]
x[index]
x.attribute
함수호출
슬라이싱
첨자. 인덱싱
어트리뷰트 참조
3 ~ 비트 단위 not (1의 보수)
4 +,-
**
양수, 음수(단항 연산자)
지수
5 *, /, //, % 곱하기, 나누기, 나머지
6 +, - 더하기, 빼기(이항 연산자)
7 <<,>> 시프트
8 & 비트 단위 AND
9 ^ 비트 단위 XOR
10 | 비트 단위 OR
11 <, <=, >, >=, <>, !=, ==
is, not is
in, not in
크기 비교
신원(identity) 테스트
멤버십 테스트
12 not 부울 단항 연산자 not
13 and 부울 연산자 and
14 or
lambda
부울 연산자 or
람다 표현식

시퀀스 자료형

  • 여러 개의 객체를 저장할 수 있다.
  • 각 객체들은 순서를 갖는다
  • 각 객체들은 첨자를 이용하여 참조 가능하다.

문자열 메쏘드

>>> '1\tand\t2'.expandtabs(4)  # 탭을 4자 공백으로
`1    and    2'
>>> '1234'.isdigit() # 숫자인가?
True
>>> 'abcd'.isalpha() # 영문자인가?
True
>>> '1abc234'.isalnum() # 숫자 혹은 영문자인가?
True
>>> 'abc'.islower() # 소문자인가?
True
>>> 'ABC'.isupper()
True
>>> ' \t\r\n'.isspace()
True
>>> 'This Is A Title'.istitle() # 제목 문자열인가?
True
>>> 'goofy'.zfill(6)
'0goofy'

문서 문자열

  • 모듈 문서 문자열 : 모듈이 문자열로 시작하면 모듈 문서 문자열이 된다.
  • 클래스 문서 문자열 : class 문 다음에 오는 문자열
  • 함수 혹은 메소드 문서 문자열 : def 문 다음에 오는 문자열

리스트 내장

리스트 내장은 함수적 프로그래밍 언어 Haskell에서 따온 것

[ expression for expr in seq1
			 for expr in seq2
			 for expr in seq3
			 if cond ]

내용 없는 리스트 미리 생성

L = [None] * 10

튜플과 리스트의 차이점

  • 튜플은 문자열과 같은 변경 불가능(Immutable) 시퀀스 형
  • 튜플 아이템을 변경하려면 슬라이싱과 연결(Concatenation) 을 이용해야 한다.
  • 튜플은 메소드를 가지지 않는다.
  • 튜플은 포맷 문자열 지원, 함수 호출시 가변 인수 지원 기능이 있다.

튜플을 사용하는 경우

  • 함수에 있어서 하나 이상의 값을 리턴하는 경우
  • 문자열 포매팅
  • 튜플에 있는 값들을 함수 인수로 사용할 때
  • 그 이외에 고정된 값을 표현할 때

OS 모듈

OS.linesep - 파일의 라인 분리 문자. 윈도우에서는 ‘\r\n’,

이름 설명 윈도우 유닉스 매킨토시
os.linesep 파일의 라인 분리 문자 \r\n \n \r
os.sep 경로명에서 각 요소들을 분리하는 문자 \ / :
os.pathsep 경로명과 경로명을 구분해 주는 문자 ; :
os.curdir 현재 디렉토리를 나타내는 문자 . . :
os.pardir 부모 디렉토리를 나타내는 문자 ::

참고

  • 열혈강의 Python


댓글