본문 바로가기
LG 헬로비전 DX DATA SCHOOL/Python

Python 기초

by 황밤 2023. 7. 6.
728x90
반응형

2023-07-06

Python

  • 파이썬은 프로그래밍언어 작성 후, 컴파일이 아닌 인터프리터를 통해 실행된다.
  • 1991년 Guido van Rossum에 의해 개발되었다. (사실은 java 보다 4년 일찍 출시되었다.)
  • 객체 지향 언어이며 동적 타이핑 언어

- 클라우드는 Go 언어를 배우는 것을 추천 -

  • IDE: Anaconda , Pycharm 등

 

1. 파이썬 프로그래밍의 구성요소

  • literal : 사용자가 직접 입력하는 데이터
  • variable : 데이터에 붙이는 이름
  • function : 독립된 메모리 공간을 할당받아서 한 번에 수행되는 코드 블럭
  • class & instance : 동일한 목적을 달성하기 위해 모인 데이터와 기능의 집합
  • module : 파이썬에서는 파일을 모듈이라고 한다.
  • package : module의 집합으로 배포 단위
  • comment : 번역하지 않는 문장 #으로 시작 (#주석 예시 입니다)

2. 코딩 시 주의 사항

  • 라인 단위로 번역해서 실행하기 때문에 기본적으로 ; 은 필요가 없는 대신, 한 줄에 2개의 실행문(=가 존재하는 문장이나 함수 호출)이 있는 경우는 ; 으로 구분
  • 파이썬은 하나의 블럭을 만들 때 들여쓰기를 이용 - 기본은 빈 칸 4개지만 일정하게 맞추기만 한면 됩니다.
  • 콘솔에 출력할 때는 print 함수를 이용하는데, 여러 개 출력하고자 하면 ,로 구분하고 기본적으로 줄 바꿈을 수행한다.
  • 하위 레벨을 만들 때는 : 다음에 들여쓰기를 하고 작성

#동일한 블럭에서는 들여쓰기를 맞추어야 하지만 다른 블럭의 경우는 맞출 필요 없음
num = 20
if num >= 10 :
    print("10보다 크거나 같다")
       print("에러가 납니다.") -> 에러 발생
else : 
    print("10보다 작다")

 

 

3. Comment

  • # 다음에 작성하면 주석이 된다.
  • 파이썬에는 문자열 상수를 만들 때 작은 따움표나 큰 따움표 안에 묶고 여러 줄의 경우는 작은 따움표나 큰 따움표 3번을 해서 만듭니다.
  • 주석을 만들고자 할 때 주석에 큰 따움표나 작은 따움표 3번을 사용해서 만들기도 함.

#주석
"""

이 문장은 문자열 상수를 문장인데 대입도 하지 않았고 출력에 이용하지도 않았기 때문에
주석처럼 처리됩니다.
"""(내부에 추가적인 따움표 세개가 있어서는 안된다) 

 

  • #! 는 주석이 아니고 유닉스의 shebang 입니다.

파이썬에서는 소스 코드의 인코딩을 표시할 목적으로 사용

 

4.Document 관련 명령어

 

  • dir(데이터) : 데이터가 호출 가능한 속성과 메서드를 리턴(print 필요)
  • help(함수 나 메서드) : 함수 나 메서드의 도움말을 출력(print 불필요)

 

5. Python의 keyword(예약어)

  • python이 기능을 정해둔 것으로 다른 용도로 사용하면 에러임(변수의 이름이나 함수의 이름으로 사용할 수 없음)
  • 확인

import keyword

print(keyword.kwlist)

 

=> 에러

None = 20 #None은 예약어이므로 다른 데이터를 대입할 수 없습니다.

 

 

6. 모듈을 찾아오는 순서 확인

import sys

print(sys.path)

 # 여러 path 중에 현재 디렉토리가 우선적으로 선택됨.

 

 

7. 파이썬의 기본 자료형

  • 숫자 데이터 : int, float, complex - 하나의 데이터(scala data), 불변(immutable), 직접 접근(일대일 대응이므로)
  • 문자열 : str : 0개 이상의 문자의 집합, 불변, 순차 접근
  • tuple : 0개 이상의 데이터의 모임, 불변, 순차 접근
  • list : 0개 이상의 데이터의 모임, 가변, 순차 접근
  • set : 0개 이상의 데이터의 모임, 가변, 순차 접근을 못함(순서대로 저장되어 있지 않음) -> 빨리 찾으려할 때 좋음, 중복확인에 굉장히 좋음
  • dict(딕셔너리, 사전, map, hashtable 등) : 0개 이상의 데이터의 모임으로 가변, key-value 시스템, key가 set으로 만들어 짐 -> 속도가 빠르지만, 메모리 소모가 크다.

 

8. Literal

  • 사용자가 직접 입력하는 데이터인데 처음 사용될 때 static 영역에 생성되고 이후 부터는 재사용.
  • 숫자 :

정수(int) : 10진수(숫자), 8진수(0o숫자), 16진수(0x), 2진수(0b숫자), 숫자L

 

실수(float) : 1.2, 0.12e(0.12*10의 1승)

 

복소수(complex) : 4+5j

 

  • bool : True와 False 
  • str : 작은 따옴표나 큰 따옴표 안에 기재하면 되는데 여러 줄은 따옴표 3번
  • bytes : 바이트의 집합으로 b'문자열'또는  b'코드\코드...\
  • list : []안에 나열
  • tuple : ()안에 나열
  • set : {}안에나열
  • dict : {key : ~ ,value : ~}
  • str, bytes, tuple, set. dict는 순차적으로 접근이 가능해서 iterable 이라고 한다.
  • None : 가리키는 데이터가 없다라는 의미. 자료구조에선 nill(파이썬 외 언어), NaN(파이썬)도 유사한 의미로 사용

 

9. 사용자 정의 명칭 - identifier

  •  데이터, 함수 나 메서드, 클래스, 인스턴스, 모듈, 패키지에 부여하는 이름.
  • 영문자, 숫자, 한글, 등을 사용할 수 있음.
  • 시작은 문자로
  • 중간 공백은 불가
  • 예약어는 사용자 정의 명칭으로 사용할 수 없다.
  • 일반적으로 클래스 무남 이릅으러
  • 클래스 이름만 대문자로 시작하고 변경할 생각이 없는 데이터의 이름은 모두 대문자로 만드는 것이 관례

 

10. Variable(변수)

변수란 데이터에 이름을 붙이는 것

  • 이름 = 데이터(literal or 다른 변수 or 함수)
  • 이름이 존재하지 않을 시에는 이름을 생성하고 이름이 존재하면 가리키는 곳을 변경합니다.
  • 데이터를 가리킬 때 자료형이 결정된다. (Dynamic Binding) ex 자료형을 int라고 결정하면, 정수 외엔 입력 불가

reference(참조)를 이용해서 다양한 자료 저장이 가능하다.

  • 이름을 만들 때는 기억하기 쉬운 or 의미를 파악하기 좋은 이름을 사용하는 것이 좋습니다.
  • 변수는 기본적으로 자신의 영역이 종료되면 파괴되지만 강제로 파괴하고자 하는 경우는 -> del 변수명 (a = None)

instance -> heap 저장/ class, function, literal -> static에 저장

  • 하나의 데이터를 저장하는 경우에는 이름이 데이터를 의미하지만, 0개 이상의 데이터를 저장하는 경우에는 이름은 시작 위치를 의미합니다. (list 의 내용이 시작되는 주소를 가리킴)
  • 영역이 다르면 동일한 이름으로 변수를 생성할 수 있다.

11. Operator(연산자)

: 연산을 수행해주는 부호나 명령어

  • 산술 연산 : 숫자 데이터를 연산해서 숫자로 결과를 리턴하는 연산
  • 논리 연산 : bool 데이터를 연산해서 결과를 bool로 리턴하는 연산
  • 단항 연산(unary) : 데이터의 개수가 1개인 연산
  • 이항 연산(binary) : 데이터의 개수가 2개인 연산

 

 

11.1) 할당 연산자

 

: 오른쪽의 데이터의 참조를 왼쪽의 변수에 대입

 

 

11.2) 산술 연산자

  • + : 숫자의 경우는 덧셈을 하고 데이터의 모음은 결합, 다른 종류의 데이터끼리는 덧셈 연산이 안됨
  • - : 뺄셈
  • * : 숫자 데이터인 경우는 곱셈, 데이터의 모임과 정수의 경우는 반복
  • ** : 거듭제곱
  • / : 나눗셈
  • // :  몫
  • % : 나머지

 

11.3) 비교 연산자

 

: 연산의 결과를 bool로 리턴

  • >, >=, <, <=, ==, !=,
  • bool 데이터도 크기 비교가 가능 -> True는 1로 간주, False는 0으로 간주 => True > False
  • 문자열도 크기 비교 가능 but 첫 글자 부터 코드 값을 비교해서 판별(A는 65, a 는 97이므로 소문자가 더 큼)

 

11.4) 산술 비트 연산자

 

정수 데이터를 2진수로 변환해서 각 비트 단위로 연산을 수행한 후 10진 정수로 결과를 리턴하는 연산자

  • & : and 로 둘 다 1 일 때 1, 나머지는 0 / Format -> 디스크 & 0
  • | : or 로 둘 다 0인 경우만 0이고 나머지 경우는 1 / 0과 or 하면 그대로 나옴. -> 붙여넣기

=> 2개의 연산자를 데이터 분석을 위한 라이브러리(numpy)에서 데이터 모임에서도 사용이 가능한데 이 경우는 위치 별로 연산을 수행해서 리턴

  • ^ : eXclusive OR로 두 개의 데이터가 같은 경우는 0 다른 경우는 1 / 중복 여부 ^ -> 0이면 중복, 아니면 중복 아님.
  • ~ : 단항 연산으로 1의 보수
  • << : 왼쪽으로 미는 연산자 - 곱하기 2
  • >> : 오른쪽으로 미는 연산자 -나누기2

% '~' 연산 예시

-> ~20 을 구해보자 (16비트를 사용한다고 가정)

0000 0000 0001 0100 : 20

~ 을 해주면

1111 1111 1110 1011 -> 10진수로 바꿔주면 (2의 보수)

맨앞이 1이므로 부호는 -

0000 0000 0001 0101 (맨 오른쪽은 바꾸지 않는다)

답은 - 21

 

 

11.5) 논리 비트 연산자

 

: bool 데이터를 가지고 연산을 수행해서 결과를 bool로 리턴하는 연산

  • and : 둘 다 True 인 경우만 True, 나머지 경우는 False
  • or : 둘 다 False 인 경우만 False 이고 나머지 경우는 True
  • not : True 이면 False, False 이면 True
  • and 와 or 가 같이 있으면, and 가 우선.
  • and 와 or 의 순서가 바뀌어도 연산의 결과는 같으나 과정은 다르다. 
  • and는 앞의 결과가 false인 경우 뒤의 연산의 결과를 확인 x
  • or는 앞의 결과가 true 인 경우 뒤의 연산의 결과를 확인 x

if  i % 3 == 0 and i % 4 == 0 : 이런 경우, i  %  4가 앞인 경우가 더 좋다.

 

-> 임베디드에서 주 효과

 

 

11.6) 논리 함수

 

  • all(데이터의 집합) : 데이터의 집합에 있는 모든 데이터가 True 이면 True
  • any(데이터의 집합) : 데이터의 집합에 있는 데이터 중 하나만 True 이면 True

 Falsy : 0 은 False 로 간주 <-> 0 이 아니면 True

 

 

11.7) 복합 할당 연산자

  • 변수 연산자 = 데이터 : 변수가 가리키는 데이터와 오른쪽 데이터를 연산자에 해당하는 연산을 하고 그 데이터를 변수가 가리키도록 한다.

a = 10

a -= 3 #동일 a = a -3 혹은 +를 대입 가능

 

11.8) 데이터 타입 확인

  • type(데이터)

 

11.9) 참조하고 있는 데이터 확인

  • id(데이터)

=> id가 같으면 동일한 데이터를 가리키는 것임.

 

11.10) 연산자의 우선 순위

  • . , [인덱스]
  • **
  • ~, 부호 (+, -) 
  • *, /, //, %, @
  • >>, <<
  • &, ^, |
  • >, >=, <, <=
  • ==, !=
  • in, not in, is, is not
  • not
  • and
  • or
  • =

12. 데이터의 자료형 변환(Casting)

: 다른 자료형끼리 연산을 수행하거나 원하는 결과를 만들어내기 위해서 형 변환을 수행

  • 프로그래밍에서는 일반적으로 숫자와 문자열 사이의 변환이나 문자열과 날짜 사이의 변환을 많이 수행
  • 데이터 분석에서는 이외에도 factor 타입으로의 변환이나 문자열 데이터를 비트열로 변환하는 것을 많이 수행합니다

12.1) 형 변환의 종류

  • 묵시적 형변환 : 자동으로 형 변환이 되는 경우 (정수 + 실수 => 실수)

다른 종류의 숫자 데이터끼리 연산을 하는 경우 작은 타입을 큰 타입으로 변환해서 수행

  • 명시적 형변환 : 형 변환을 직접 수행하는 경우
  • 정수로 변환 : int(숫자 혹은 숫자로된 문자열)
  • 실수로 변환 : float(정수, 혹은 숫자 문자열)
  • bool로 변환 : bool(숫자 데이터 또는 bool 문자열)
  • 문자열로 변환 : str(데이터)
  • 실수를 정수로 변환하면 소수가 소멸

 

13. Console 입출력

13.1) 콘솔 출력 : print()

print(value, ..., sep=' ', end = '\n', file=sys.stdout, flush=False)

  • 첫번째 매개변수(value)는 출력할 데이터
  • 두번째 매개변수(...)는 출력할 데이터인데 개수 제한이 없음
  • sep는 데이터 사이의 출력되는 문자
  • end는 출력하고 난 후 출력되는 문자
  • file은 출력할 대상을 지정하는 것인데 sys.stdout(표준 출력 장치 => 모니터)
  • flush는 버퍼의 내용을 비울 지에 대한 옵션 (True 이면 한번에 print 내용을 모아서 출력)
  • 서식 설정 : % 다음에 숫자와 영문자 1개를 이용해서 데이터를 포맷에 맞춰서 출력
  • %10d : 열자리를 확보해서 정수를 출력
  • %s : 문자열
  • %d, %i : 정수
  • %f : 실수
  • %b : bool 출력

num = 20

print("num은", num) #num은 20

print("num은 %d" %(num)) # num은 20

 

# 실수를 출력할 때 .소수자릿수f 를 이용하면 출력되는 소수의 자릿수를 설정가능

 

=> print("{0} 은 {1}을 좋아합니다.".format("아담", "신촌 라이브 카페"))

=> 아담 은 신촌 라이브 카페을 좋아합니다.

 

# 따옴표 앞에 f를 추가하면 인덱스 대신에 이름을 사용할 수 있다.

 

original = "원빈"

copy = "아담"

print(f"{copy} 은 {original}을 보고 만든 건데 초상권에 대한 비용을 지불하지 않았습니다.")

 

13.2) 콘솔 입력 : input()

  • prompt는 메시지
  • Enter를 누를 때 까지 입력을 받아서, 받은 내용을 하나의 문자열로 리턴한다.

변수이름 = input("메시지") => 정수나 실수 또는 bool 을 입력받으려 하면, 형 변환을 이용하고, 데이터 포멧이 맞지 않으면, 예외가 발생한다.

한 번에 여러 개를 입력받고자 할 때는 구분 기호를 이용해서 입력받고 split으로 분할하면 list로 만들 수 있습니다.

 

 


 

 

14. git 업로드

지금까지 열심히 파이썬 코딩을 진행했다고 가정 해볼께요

이 작업들을 로컬에 저장해도 좋지만 프로젝트를 진행하고 있다면, git 을 통해 공유하는 플랫폼에 저장하는게 훨씬 편하겠죠?

그래서 지금 부터는 git에 작업물을 올리는 방법과 다운로드 방법을 알려드리겠습니다.

 

14.1) 로컬 git에 현재 프로젝트를 등록

  • git init

 

14.2) 로컬 git에서 관리할 파일을 등록(staging)

  • git add 파일명
  • git add .(현재 디록토리의 모든 파일을 등록)

 

=> .gitignore 파일을 만들어서 파일 명이나 디렉토리 이름을 작성하면 작성된 파일이나 디렉토리는 제외가 됩니다.

 

14.3) 변경 내역을 반영

  • git commit -m "메시지"

 

14.4) 연결 해제

  • 디렉토리 안의 .git 디렉토리 삭제(윈도우)
  • mac / linux : rm -rf .git

 

14.5) 자기의 branch 확인

  • git branch

 

14.6)branch 생성 및 선택

  • git checkout -b 브랜치 이름

=> -b 를 삭제하면 브랜치 선택이 됨.

 

14.7) git hub 에 연동할 repository를 생성

 

GitHub - svng-zu/python: 파이썬 실습 코딩 0706

파이썬 실습 코딩 0706. Contribute to svng-zu/python development by creating an account on GitHub.

github.com

 

14.8) 로컬 git 과 repository 연결

  • git remote add repository 이름 url
  • 확인 : git remote -v
  • 해제 : git remote remove repository이름

 

14.9) 현재까지의 작업내용 업로드

  • git push repository이름 브랜치이름

 

14.10) 변경 내역을 반영하고자 하는 경우

  • 2,3,9 번 작업만 수행

 

14.11) 프로젝트 전체 다운로드

  • git clone url 프로젝트이름

 

14.12) 변경된 내용을 반영

  • git pull repository 

 

14.13) 브랜치 삭제

  • git branch -d 브랜치이름

 

 

 

 

ps. 리터럴이란 소스 코드의 고정된 값을 나타내는 표기법이다. 거의 모든 프로그래밍 언어는 정수, 부동소수점 숫자, 문자열, 불린 자료형과 같은 기본적인 값에 대한 표기법이 있다.

 

 

반응형
LIST