사용자 도구

사이트 도구


사이드바

language:python:basic

너무 오래 전이라 책을 다시 보면서 정리

문법요소

  • pass : 아무것도 하지 않는다
  • 함수 시작 부분에 “ 나 ”“” 로 설명을 적어두면 doc 속성에 저장되어 도움말로 사용된다.

import

import 모듈
from 모듈 import 어트리뷰트
from 모듈 import *
import 모듈 as 별칭

자료형

  • 참조는 기본
  • 주소확인 : id(어떤 변수)
  • 리스트, 세트, 튜플, 사전
  • 리스트 완전 복사 : copy.deepcopy(XX)
  • '**' 연산자 : pow()

문자(열)

  • (')나 (“) 중 아무거나 사용.
  • 시작과 끝이 같은 기호로 끝나야 한다.
'abcde' # ok
'abcde" # error
아래 부분은 v2.x 에 해당되는 내용. v3는 기본 유니코드라서 u를 붙일 필요가 없어졌다.
  • 한글과 같은 문자를 표현하려면 유니코드를 사용
  • 상수형 문자열이라면 u'…' 기호 u를 붙여서 선언 가능하고
    str1 = u'한글또는 외국어'
  • 변환 해야 한다면,
    '가'.encode('utf-8') # 바로 인코딩해서 넘기는 방법
  • '+' 로 문자열 결합
  • rjust(NUM) : 오른쪽 정렬
  • ljust / center
  • zfill() : 0으로 채우기

튜플

  • 읽는 용도의 데이터 설정
  • 괄호 안에 항목을 넣는다.
gameDir = ('skyrim', 'NinjaOfTheMark')

gameDir[0]을 치면, 'skyrim'이 출력된다.

리스트

  • ([,]) 기호 내부에 항목을 선언한다.
  • 배열 요소를 탐색하는 여러 방법이 있는데, 나중에 정리하자.
gameDir = ['skyrim', 'NinjaOfTheMark']
 
gameDir[0] # 0번째 항목 리턴
gameDir.count() # 개수
gameDir.pop() # 데이터를 얻은 다음 삭제

함수

함수 선언 방법

def <함수이름>( 인자1, 인자2, ... ):
  <구문>
  return <리턴값>

스코핑룰

전역변수를 사용하고 싶다면,

>>> g = 1
>>> def test_scope(a):
		global g			# g는 전역변수를 가리킨다
		g = 2
		return g+a

키워드인자

파라미터의(인자) 이름으로 값을 지정해서 사용하는 방법. 파라미터 순서를 지키지 않아도 된다.

>>> def connURI(server, port): return "abc"
>>> connURI(port="8080", server="test.com")

가변

인자 이름 앞에 '*'를 붙이면 가변으로 (튜플로서) 인식된다.

>>> def test(*args): print(type(args))

정의되지 않은 인자 처리 : 인자이름 앞에 '**' 타입 미정의 가변 인자를 사용할 수 있다. 마지막에 와야 한다.

람다

lamda 인자 : <구문>

이터레이터

자료형 데이터에 순환하는 이터레이트를 쓸 수 있다

s = 'abc'
it = iter(s)	# 이터레이터를 얻는다
next(it)	# 다음 요소로 이동
it.__next__()	# 다음 요소로 이동
  • yield : 함수를 끝내지 않고 호출한 곳에서 리턴 값을 전달한다. 함수는 계속 실행. 오오

비교문

  num >= 70 && num < 80 --> 70 <= num < 80 형식으로 사용할 수 있다.
  if 70 <= num < 80: ...
and, &
or, |
& 와 | 는 if 문 전체를 비교하고 종료
and 와 or를 사용하면 조건에 맞으면 비교를 끝내고 다음문장으로 이동
for
range()함수로 실행 횟수 방식으로 실행 가능
for i in range(10): print(i) # 0 .. 9 까지 11번 반복해서 i를 출력

클래스

  • 클래스 함수의 첫 인자는 self (클래스 자신)
  • 클래스 변수 선언시 값 인력 가능, 이건 클래스 변수가 된다. 인스턴스에서 값을 입력하면 다른 변수가 생긴다.
  • 클래스에 대해서도 동적으로 멤버 변수 추가 가능. 추가 후 모든 인스턴스에서 사용 가능.
  • 인스턴스객체에 동적으로 멤버변수 추가/삭제 가능
  • 인스턴스에서 클래스에 접근하기 class 키워드인자
  • isinstance(INST, CLASS) : 상속 관계 확인
  • 생성자 init(self, value), 소멸자 del(self)
  • 인스턴스 삭제 : del . 레퍼런스가 0이되면 del()호출된다.
  • 정적메소드와 클래스 메소드 두종류. 클래스 메소드는 self를 받을 첫번째 인자가 필요하다.
  • 함수 선언 후, staticmethod(), classmethod()로 재선언하여 정적/클래스 함수를 정의한다.

연산자중복정의

연산자 중복 정의를 위한 미리 정의된 함수가 있다. '-' 면 sub 라든지.

클래스 상속

class Parent:
	pass
class Child(Parent):
	pass

메서드 재정의

부모 메서드와 자식쪽의 메서드의 이름만 같으면 재정의(오버라이딩)된다.

super()로 부모 클래스 메소드 호출

예외처리

	try:
		<구문>
	except <예외종류>:
	else:
		예외가 없는 경우
	finally:
		예외 상관 없이 try 블록 실행 후
	
	raise <예외> : 예외 발생 시킨다.

assert

	assert <조건식>, <관련데이터>

입출력

출력

	print(<문자열>)
	import sys
	sys.stdout.write('test')
  • rjust(NUM) : 오른쪽 정렬
  • ljust / center
  • zfill() : 0으로 채우기

포맷팅

"스트링 {0}".format(<파라미터>...)

{0} 대신 사전식 방법 사용 가능

>>> print("{item} is color".format(item="apple"))
>>> dic = {"item":"apple", "color":"red"}
    print("{0[item]} is {0[color]}".format(dic))

지역변수를 사전 형식으로 사용 가능. locals() 사용

>>> item = "apple"
>>> color = "red"
>>> print("{0[item]} is {0[color]}".format(locals()))

사전자료형을 쓰는 경우, 앞에 **를 붙이면 값으로 판단하고 사용된다. 이러면 파라미터에 0을 붙이지 않아도 된다.

변수의 인덱스를 사용할 수 있다

numz = [5,4,3,2,1]
print("{numz}".format(**vars()))
print("{numz[0]}".format(**vars()))

입력

a = input('press key')

pickle

객체류의 데이터를 파일로 저장

ctypes

C나 dll 에서 함수 불러서 사용하기

decimal

정확한 정수와 부동소수점 표현을 위한 클래스

random

random.random(), random.randomrange(N)
random.sample(N,N) : 노 중복

함수들

type(어떤 변수)
타입체크
id(어떤 변수)
주소확인
globals()
내장함수 확인
__builtins__
내장함수의 리스트. dir(builtins)
help(xx)
도움말을 불러온다
filter(METHOD, DATA)
조건에 맞게 필터링된 이터레이터 객체 리턴
zip()
두개의 리스트를 묶어 튜플로 만든다
zip(*인자)
튜플인자에 *를 붙여 사용하면 리스트로 다시 분리
map()
시퀀스형 객체를 순회하면서 모든 값에 대해 뭔가 처리가 필요할때 (값 갱신)
join()
문자열 내장함수, 자료형 객체의 모든 값을 합하는데.. 빠르다는데.. 어디다가??

os 관련 주요 모듈

os.getcwd()
현재 디렉토리 경로 얻기
os.chdir( path )
디렉토리, 현재 위치를 변경
os.access( path, mode )
path에 대해서 mode에 해당하는 작업이 가능한지 확인
F_OK 파일 존재 여부
R_OK, W_OK : 읽기 쓰기가 가능한지 확인
X_OK : 실행 가능한가 확인
os.sys tem( command )
command 를 실행하며 성공한 경우 0을 리턴.

그외

파일 복사,이동

import shutil
shutil.copy( 원본파일, 대상 디렉토리 )
shutil.move( 원본파일, 대상 디렉토리 )

추가모듈

  • 스펠체크 : flake8
language/python/basic.txt · 마지막으로 수정됨: 2016/12/09 16:48 저자 kieuns