Python - docs정리

JU_Pakk·2021년 12월 29일
0

Python

목록 보기
1/2
post-thumbnail

▼ 1. 점프 투 파이썬 ▼

https://wikidocs.net/book/1

✓ Tab = 4 Spacebar
✓ .py 파일을 cmd창(명령 프롬프트 창)에서 실행하기 위해서는 directory를 파일이 있는 위치로 변경한 후에 python ☐☐☐.py 이 형식으로 명령어 입력하면 됨
✓ Visual Studio / PyCharm 같은 에디터 사용하면 좋음
✓ index는 0부터 시작 (-:뒤에서부터 카운트, -1:뒤에서 첫번째 것)

❖ 자료형

숫자

(정수:integer, 실수:floating-point,8진수,16진수)

문자

(String) (\n:줄바꿈, \t:탭 간격, \:\출력, \':'출력)
▷ formatting하는 것 ex> "I ate %d apples" % 3
▷ %s : 문자열, %c : 문자1개, %d : 정수, %f : 실수, %% : %출력
▷ %10s : 10개의 문자열 공간에 대입, %0.4f : 소수점 표현 개수
★ format 함수 사용
"I ate {} apples".format(10) # {}안에 index나 name이 들어갈 수 있음
"{}".format("hi")
{}안에 (0:>10 = 오른쪽 정렬, 0<:10 = 왼쪽 정렬, :^10 = 가운데 정렬, :!^10 = !채우기)
★ f 문자열 포매팅
1.선언된 변수를 받아올 수 있고 2.딕셔너리 value를 받아올 수 있다

>>> name = 'jupakk'
>>> age = 28
>>> d = {'favorate sport' : 'soccer', 'favorate food' : 'sushi'}
>>> f'나의 이름은 {name}이고 나이는 {age}이다'
~~~~~ 결과 나옴
>>> f'나는 {d["favorate sport"]} 하는거 좋아하고 {d["favorate food"]} 먹는거 좋아한다'
~~~~~ 결과 나옴

★ 관련 함수
▷ 공백 지우기, 문자열 나누기 등

>>> a = "   hi   "
>>> a.strip()
'hi'
>>> b = "Life is too short"
>>> b.split() # 공백을 기준으로 나눔 (여기에 : 같은거 넣으면 그걸 기준으로 나눔)
['Life', 'is' 'too', 'short']

리스트

>>> a = [1,2,3,4,5,6,[1,2]]
>>> a[1] # 이렇게 인덱스로 요소 가져오는 것
>>> del a[2] # 인덱스로 요소 삭제 가능
>>> a[-1][0] # 리스트 안의 리스트도 가져올 수 있다 (다중 구조 리스트)

튜플

▷ 리스트와 거의 비슷하지만 값의 생성,삭제,수정이 불가능 하다
▷ ()로 둘러싸는 형태이다(괄호생략가능)
▷ 인덱싱,슬라이싱,연산 등이 가능함

>>> t1 = (1,2,3,4,'a','b')
>>> t1[0]      ------ 인덱싱
>>> t1[1:]     ------ 슬라이싱
>>> t1 + t1*2  ------ 연산
>>> len(t1)    ------ 함수

딕셔너리

▷ 대응 관계를 나타내는 자료형 - 연관 배열(Associate array), 해시(Hash)라고 한다
▷ Key 와 Value가 한쌍이 된다

>>> 기본구조 - {Key1:Value1, Key2:Value2, Key3:Value3, ...}
>>> a = {1: 'a', 2: 'b', 'name': 'pey', 3: [1,2,3]}
>>> a[★] - ★은 리스트와 같은 인덱스가 아니라 key를 입력해야 한다

▷ dict_keys, dict_values, dict_items
(리스트 형식이 아니라서 list(a.keys()) 이렇게 리스트로 변환하면 되고 변환하지 않더라도 dict_keys, dict_values, dict_items 등은 반복(iterate)구문을 실행할 수 있다 ex.for문 )

>>> a.keys()   - 딕셔너리 a의 key만을 모아서 dict_keys 객체로 돌려줌
>>> a.values()  - 딕셔너리 a의 value만을 모아서 dict_value 객체로 돌려줌
>>> a.items()   - 딕셔너리의 key,value 쌍을 튜플로 묶은 객체를 돌려줌
>>> a.get('foo', 'bar')  - key 'foo'에 해당하는 value를 돌려 받는 함수로 만약 key 값이 없을 경우 디폴트 값을 가져오게 하는 함수이다

집합

▷ 중복을 허용하지 않는다
▷ 순서가 없다 (따라서 인덱스를 사용할 수 없다)
▷ 교집합, 차집합, 합집합을 구할 때 유용함

>>> s1 = set([1,2,3,4,5,6])
>>> s2 = set([4,5,6,7,8,9])
>>> s1 & s2    ---- 교집합
>>> s1.intersection(s2)
>>> s1 | s2    ---- 합집합
>>> s1.union(s2)
>>> s1 - s2    ---- 차집합
>>> s1.difference(s2)
>>> s1.add(4)
>>> s1.update([5,7,8])
>>> s1.remove(2)

불(bool)

▷ True, False 값으로 된 자료형

★ bool 내장함수 사용
>>> bool('python')
>>> bool('')

변수 (자료형의 값을 저장하는 공간)

▷ 변수 이름(메모리의 주소) = 변수에 저장할 값(객체가 메모리에 생성됨)
▷ 복사할 때 유의 점

>>> a = [1,2,3]
>>> b = a        ----- b와 a가 같은 메모리 주소를 갖게 됨(하나를 바꾸면 나머지에 영향이 간다)
>>> b = a[:]     ----- 다른 주소를 갖는 변수 생성
>>> b = copy(a)  ----- 다른 주소를 갖는 변수 생성

❖ 제어문

if문

▷ 기본 구조

>>> if <조건문>:
	<수행할 문장>
    elif <조건문>:
    	pass
    else:
    	<수행할 문장>

▷ 조건부 표현식 ==== 조건문이 참인 경우 if 조건문 else 조건문이 거짓인 경우

>>> if score >= 60:
    	message = "success"
    else:
    	message = "failure"

message = "success" if score >= 60 else "failure"

while문

▷ 기본 구조

>>> while <조건문>:
    	<수행할 문장1>
    	<수행할 문장2>

▷ continue : while문의 처음 조건으로 돌아감
▷ break : while문을 빠져나감

for문

▷ 기본 구조

>>> for 변수 in 리스트(또는 튜플, 문자열):
    	수행할 문장1
    	수행할 문장2

▷ 리스트 내포 (list comprehension)
[표현식 for 항목 in 반복가능객체 if 조건문]

>>> a = [1,2,3,4]
>>> result = [num * 3 for num in a if num % 2 == 0]
>>> print(result)
[6, 12]

여러개 for문 쓸 때

[표현식 for 항목1 in 반복가능객체1 if 조건문1
        for 항목2 in 반복가능객체2 if 조건문2
        ...
        for 항목n in 반복가능객체n if 조건문n]

❖ 입출력

함수

▷ 기본 구조

def 함수명(매개변수):
    <수행할 문장1>
    <수행할 문장2>

▷ 매개변수(parameter) 와 인수(arguments)

def add(a, b):  # a, b는 매개변수
    return a+b

print(add(3, 4))  # 3, 4는 인수

▷ 여러개의 입력값을 받는 함수
☞ * 은 입력값(매개변수)을 모아서 튜플로 만들어준다
args는 arguments의 약자로 관례적으로 많이 사용한다

def add_many(*args):
    <수행할 문장>

☞ ** 은 입력값(매개변수)을 모아서 딕셔너리로 만들어준다
kwargs는 keyword arguments의 약자로 관례적으로 많이 사용한다

def print_kwargs(**kwargs):
    <수행할 문장>

▷ 결과값은 항상 하나다
return 이후에 여러 결과 값을 넣은 것은 하나의 튜플로 구성되어 반환된다
return으로 함수를 빠져나가는 방법을 사용할 수 있다

▷ 매개변수의 초기값을 설정할 수 있다

def say_myself(name, old, man=True):
def say_myself(name, man=True, old): --- 이렇게 하면 사용 불가능

▷ 함수 안에서 변수를 사용하는 것은 global을 쓰면 된다 (비추천)

a = 1 
def vartest(): 
    global a 
    a = a+1

▷ def 대신에 lambda를 사용할 수 있다 (return명령어가 없어도 결과값을 돌려 줌)
lambda 매개변수1, 매개변수2, ... : 매개변수를 이용한 표현식

>>> add = lambda a, b: a+b
>>> result = add(3, 4)
>>> print(result)

사용자의 입,출력을 받고 줄 때

▷ input을 사용하여 사용자로부터 입력을 받는다 (입력되는 것은 모두 문자열로 받는다)

>>> a = input()              ---- a는 입력되는 변수이다
>>> b = input("질문 내용")     ---- 질문 내용을 프롬프트로 띄워준다

▷ print 활용

>>> print("life" "is" "too short") # ①
lifeistoo short
>>> print("life"+"is"+"too short") # ②
lifeistoo short
>>> print("life", "is", "too short")
life is too short
>>> for i in range(10):
        print(i, end=' ')    --- 0 1 2 3 4 5 6 7 8 9
        print(i, end='_')    --- 0_1_2_3_4_5_6_7_8_9_
        print(i, end='')     --- 0123456789
        print(i)             --- 한줄씩 띄어서 출력

파일 읽고 쓰기

▷ 파일 생성
파이썬 내장함수 open
파일 객체 = open(파일 이름, 파일열기 모드)
파일 열기 모드 (r:읽기모드, w:쓰기모드, a:추가모드)
이미 존재하는 파일 위에 쓰려면 추가모드를 사용해야 한다

f = open(test.txt,'w')
f.close()   ---- 파일 닫기
f.write()   ---- 파일에 쓰기

▷ 외부 파일 읽기
readline()을 사용해서 파일을 한 줄씩 읽는다
readlines()을 사용해서 파일을 한 줄씩 읽어와 리스트로 반환한다
read()을 사용해서 파일 전체를 문자열로 반환한다

▷ with문 사용
with문을 사용하면 with문을 벗어나는 순간 자동으로 파일 객체가 close된다

with open("foo.txt", "w") as f:
    f.write("Life is too short, you need python")

▷ sys 모듈로 매개변수 주기
??? 명령 프롬프트에서 sys모듈을 사용해서 매개변수를 직접 준다는 내용인데 왜 쓰는지, 이득이 뭔지 모르겠다

❖ 클래스, 모듈, 패키지, 라이브러리 등

클래스

▷ 클래스(class)와 객체(object)의 관계 --> 클래스는 틀,도면으로 생각할 수 있고 객체는 클래스로 만든 것을 의미한다 (임의의 클래스로 만든 객체를 그 클래스의 인스턴스라고 표현한다)
▷ 클래스의 기본 구조

def 함수명(매개변수):
    수행할 문장
    ...

▷ 클래스 안에 함수들이 구성 되는데 이것들은 메서드(method)라고 한다
▷ 각 메서드별로 사용할 매개변수를 받게 되는데 첫번째 매개변수로 self를 받는다 (호출한 객체가 자동으로 전달되는 것)
▷ 각 객체별로 매개변수를 받아서 사용하는데 이에 따라서 객체변수들이 독립적으로 유지되는 것을 볼 수 있다
▷ 생성자 (constructor)
__init__ 매서드를 사용하면 생성자가 된다 (초기값을 설정해줌)
▷ 상속 (inheritance)
새로운 클래스를 생성할 때 다른 클래스의 기능을 물려받아서 사용하는 것
class 클래스이름(상속받을 클래스 이름)
(기존 클래스가 라이브러리 형태로 제공되거나 수정이 어려울 때 사용하면 좋음)
▷ 매서드 오버라이딩(overriding)
클래스를 상속 받을 때 매서드를 변경하고 싶으면 해당 매서드를 다시 만들면 된다
▷ 클래스 변수
클래스를 선언할 때 객체 변수가 아닌 클래스 변수로 선언한 것은 다른 객체들에서도 동일하게 사용되는 변수가 된다

모듈

▷ 함수나 변수 또는 클래스를 모아 놓은 파일이다
module1.py 이렇게 모듈을 만들 수 있다
▷ 저장한 모듈을 사용하기 위해서는 import 모듈이름 이렇게 불러오면 된다
▷ 모듈에서 특정 함수만을 사용하기 위해서는 from 모듈이름 import 모듈함수 이렇게 불러오면 된다 (모듈 함수에 * 문자를 넣으면 모든 함수를 불어오는 것)
▷ import 는 현재의 디렉토리에 있는 파일이나 파이썬 라이브러리가 저장된 디렉토리에 있는 모듈만 불러올 수 있다
if __name__ == "__main__"의 의미
☞ 명령 프롬프트에서 파일을 실행하면 위의 if문이 참이되어 수행이 되는 것이고
☞ 대화형 인터프리터나 다른 파일에서 모듈을 불러서 사용할 때는 위의 if문이 거짓이 되어 if문이 수행되지 않는다
__name__변수는 모듈을 직접 실행할 때는 __main__으로 되고 import해서 사용할 경우 모듈의 이름이 저장된다

◉ 모듈을 불러올 때 방법
1. sys.path.append 사용
import sys sys 모듈을 불러와서 >> sys.path로 파이썬 라이브러리가 설치되어 있는 디렉토리들을 보고 >> sys.path.append("디렉토리") 사용할 모듈이 있는 디렉토리를 추가한 뒤에 모듈을 불러와 사용함
2. PYTHONPATH 사용
명령 프롬프트에서 set PYTHONPATH=디렉토리 이렇게 하면 모듈을 불러와 사용 가능함

패키지

▷ 패키지는(packages) 도트(.)를 사용해서 파이썬 모듈을 계층적으로 관리할 수 있게 해줌
﹡ 파이썬에서 모듈은 하나의 .py파일이다

▷ 패키지 예 (game)

game/
    __init__.py
    sound/
        __init__.py
        echo.py
        wav.py
    graphic/
        __init__.py
        screen.py
        render.py
    play/
        __init__.py
        run.py
        test.py

﹡ game : 루트 디렉토리
﹡ sound, graphic, play : 서브 디렉토리

▷ 패키지 안의 함수 실행하는 방법
1. 모듈을 import하여 함수 실행

>>> import game.sound.echo
>>> game.sound.echo.echo_test()
  1. 모듈의 디렉토리까지를 from...import하여 함수 실행
>>> from game.sound import echo
>>> echo.echo_test()
  1. 모듈의 함수를 직접 import하여 함수 실행
>>> from game.sound.echo import echo_test
>>> echo_test()

__init__.py 의 용도
__init__.py 은 해당 디렉토리가 패키지의 일부임을 알려줌 (__init__.py 이 없다면 패키지로 인식 안됨)

>>> from game.sound import *
>>> echo.echo_test()
[결과 에러]
*로 패키지의 특정 디렉토리들을 불러올 때는 
__init__.py에 __all__ = ['echo'] 이런 식으로 정의해줘야 함
하지만 *로 특정 모듈을 불러올 때는 from a.b.c import * 에서 c가 특정 모듈이면 된다

▷ relative 패키지
임의의 서브 패키지에서 다른 서브 패키지의 모듈을 사용하는 것 가능함

graphic 디렉토리의 render.py모듈이 sound 디렉토리의 echo.py 모듈 사용할 때 render.py의 예

example 1)
>>> from game.sound.echo import echo_test
>>> def render_test():
    	print("render")
    	echo_test()
        
example 2)
>>> ..sound.echo import echo_test
>>> def render_test():
    	print("render")
    	echo_test()

.. : 부모 디렉토리
. : 현재 디렉토리

예외 처리

내장 함수

라이브러리

★ Link - Google Colab

▼ 2. 왕초보를 위한 파이썬 ▼

https://wikidocs.net/book/2

▼ 3. 파이썬 - 데이터 시각화 ▼

https://wikidocs.net/book/2454

▼ 4. 레벨업 파이썬 ▼

https://wikidocs.net/book/4170

profile
JU_PAKK

0개의 댓글