[2024.01.15] 파이썬 기초 문법1

체리마루·2024년 1월 15일

프로그램

: 명령어들의 집합

프로그램의 핵심

: 새 연산을 정의하고 조합해 유용한 작업을 수행하는 것
-> "문제를 해결"하는 매우 강렬한 방법

프로그래밍 언어

: 컴퓨터에게 작업을 지시하고 문제를 해결하는 도구

파이썬 프로그램 실행 방법

: 인터프리터가 사용자의 명령어를 운영체제가 이해하는 언어로 바꿈 (훨씬 더 사용하기 쉽고 운영체제간 이식도 가능)
1. shell이라는 프로그램으로 한 번에 한 명령어씩 입력해서 실행
2. 확장자가 .py인 파일에 작성된 파이썬 프로그램을 실행

표현식 (Expression)

: 값, 변수, 연산자 등을 조합하여 계산되고 결과를 내는 코드 구조
ex)
'hello'
greeting = 'hi'
5 * 21 - 4

평가 (Evaluate)

: 표현식이나 문장을 실행하여 그 결과를 계산하고 값을 결정하는 과정
-> 표현식이나 문장을 순차적으로 평가하여 프로그램의 동작을 결정

문장 (Statement)

: 실행 가능한 동작을 기술하는 코드 (조건문, 반복문, 함수 정의 등)
*표현식보다 더 큰 개념. 문장은 보통 여러 개의 표현식을 포함

타입 (Type)

: 값이 어떤 종류의 데이터인지, 어떻게 해석되고 처리되어야 하는지를 정의
*타입은 2가지 요소로 이루어짐. "값(피연산자)"과 "값에 적용할 수 있는 연산(연산자)"

데이터 타입

  • Numeric Type: int(정수), float(실수), complex(복소수)
  • Sequence Types: list, tuple, range
  • Text Sequence Type: str(문자열)
  • Set Types: set
  • Mapping Types: dict
  • 기타: None, Boolean, Functions

산술 연산자

연산자 우선순위

변수 (Variable)

: 값을 참조하는 이름
ex) degrees = 36.5 <- 할당문 / "변수 degrees에 값 36.5를 할당했다"

변수명 규칙

  • 영문 알파벳, 언더스코어(_), 숫자로 구성
  • 숫자로 시작할 수 없음
  • 대소문자 구분
  • 파이썬 내부 예약어로 사용 불가 (False, None, True, and, as, assert, elif, else, break, return, while, not, del, def 등)

변수, 값, 그리고 메모리

  • 메모리의 모든 위치에는 그 위치를 고유하게 식별하는 메모리 주소가 존재
  • 변수는 그 변수가 참조하는 객체의 메모리 주소를 가짐
  • 변수 degrees는 값 36.5를 참조
  • 객체(Object) : 타입을 갖는 메모리 주소 내 값, 값이 들어있는 상자

할당문

ex) variable = expression
1. 할당 연산자(=) 오른쪽에 있는 표현식을 평가해서 값(메모리 주소)을 생성
2. 값의 메모리 주소를 '=' 왼쪽에 있는 변수에 저장

  • 존재하지 않는 변수라면, 새 변수를 생성
  • 기존에 존재했던 변수라면, 기존 변수를 재사용해서 변수에 들어있는 메모리 주소를 변경

Style Guide

: 코드의 일관성과 가독성을 향상시키기 위한 규칙과 권장 사항들의 모음

  • 변수명은 무엇을 위한 변수인지 직관적인 이름을 가져야 함
  • 공백 4칸을 사용하여 코드 블록을 들여쓰기
  • 한 줄의 길이는 79자로 제한하며, 길어질 경우 줄 바꿈을 사용
  • 문자나 밑줄을 사용하여 함수, 변수, 속성의 이름을 작성
  • 함수 정의나 클래스 정의 등의 블록 사이에는 빈 줄을 추가

Data Types

: 값의 종류와 그 값에 적용 가능한 연산과 동작을 결정하는 속성

Numberic Types (숫자형 타입)

1. int (정수 자료형)

  • 진수 표현
    2진수(binary): 0b ex) print(0b10) #2
    8진수(octal): 0o ex) print(0o30) #24
    16진수(hexadecimal): 0x ex) print(0x10) #16

2. float (실수 자료형)
*프로그래밍 언어에서 float는 실수에 대한 근삿값
ex) 컴퓨터는 0.1을 정확히 표현할 수 없음 => 유한 정밀도 때문

< 실수 연산 시 주의사항 >

  • 컴퓨터는 2진수를 사용, 사람은 10진법을 사용
  • 이때 10진수 0.1은 2진수로 표현하면 0.00011001100110011.. 같이 무한대로 반복
  • 무한대 숫자를 그대로 저장할 수 없어서 사람이 사용하는 10진법의 근삿값만 표시
  • 0.1의 경우 3602879701896397 / 2 ** 55이며 0.1에 가깝지만 정확히 동일하지는 않음
  • 이런 과정에서 예상치 못한 결과가 나타남
  • 이런 증상을 Floating point rounding error(부동소수점 에러)라고 함

< 실수 연산 시 해결책 >

  1. 임의의 작은 수 활용 : print(abs(a - b) <= 1e-10) #True
  2. math 모듈 활용
    import math
    print(math.isclose(a, b)) #True

Sequence Types

: 여러 개의 값들을 순서대로 나열하여 저장하는 자료형 (str, list, tuple, range)

< Sequence Type의 특징 >

  1. 순서 (Sequence): 값들이 순서대로 저장 (정렬돼 있다는 의미는 아님)
  2. 인덱싱 (Indexing): 각 값에 고유한 인덱스(번호)를 가지고 있으며, 인덱스를 사용하여 특정 위치의 값을 선택하거나 수정할 수 있음
  3. 슬라이싱 (Slicing): 인덱스 범위를 조절해 부분적인 값을 추출할 수 있음
  4. 길이 (Length): len() 함수를 사용하여 저장된 값의 개수(길이)를 구할 수 있음
  5. 반복 (Iteration): 반복문을 사용하여 저장된 값들을 반복적으로 처리할 수 있음

- str (문자열)
: 문자들의 순서가 있는 변경 불가능한 시퀀스 자료형

< 문자열 표현 >

  • 문자열은 단일 문자나 여러 문자의 조합으로 이루어짐
  • 작은따옴표(') 또는 큰따옴표(")로 감싸서 표현

< 중첩 따옴표 > : 따옴표 안에 따옴표를 표현할 경우

  • 작은 따옴표가 들어있는 경우는 큰 따옴표로 문자열 생성
    ex) print("문자열 안에 '작은 따옴표'를 사용하려면 큰 따옴표로 묶는다.")
  • 큰 따옴표가 들어있는 경우는 작은 따옴표로 문자열 생성
    ex) print('문자열 안에 "큰 따옴표"를 사용하려면 작은 따옴표로 묶는다.')

String Interpolation

: 문자열 내에 변수나 표현식을 삽입하는 방법

< f-string >
: 문자열에 f 또는 F 접두어를 붙이고 표현식을 {expression}로 작성하여, 문자열에 파이썬 표현식의 값을 삽입할 수 있음

< 문자열 시퀀스의 특징 >

*문자열은 불변 (변경 불가)
ex) my_str = 'hello'
my_str[1] = 'z'
=> #TypeError: 'str' object does not support item assignment

인덱스 (index)

: 시퀀스 내의 값들에 대한 고유한 번호로, 각 값의 위치를 식별하는 데 사용되는 숫자

슬라이싱 (slicing)

: 시퀀스의 일부분을 선택하여 추출하는 작업
-> 시작 인덱스와 끝 인덱스를 지정하여 해당 범위의 값을 포함하는 새로운 시퀀스를 생성

profile
멋쟁이 토마토 개발자 🍅

0개의 댓글