Python 함수와 제어문 2

이남경·2024년 1월 18일
0

SSAFY 11기

목록 보기
6/67

모듈


모듈

개요

  • 과학자, 수학자가 모든 이론을 새로 만들거나 증명하지 않는 것처럼 개발자 또한 프로그램 전체를 모두 혼자 힘으로 작성하는 것은 드문 일

  • 이미 다른 프로그래머가 이미 작성해 놓은 수천, 수백만 줄의 코드를 사용하는 것은 생산성에서 매우 중요한 일

모듈 (Module)

한 파일로 묶인 변수와 함수의 모음특정한 기능을 하는 코드가 작성된 파이썬 파일(.py)

모듈 예시

  • 파이썬의 math 모듈

  • 파이썬이 미리 작성해 둔 수학 관련 변수와 함수가 작성된 모듈

모듈 활용


모듈 import

모듈 가져오기

  • 모듈 내 변수와 함수에 접근하려면 import 문이 필요

  • 내장 함수 help를 사용해 모듈에 무엇이 들어있는지 확인 가능

모듈 사용하기

  • . (dot)’은“점의 왼쪽 객체에서 점의 오른쪽 이름을 찾아라“ 라는 의미의 연산자

  • 명시적인 코드(구체적으로 설명이 다 적혀있는 코드)

  • 짧게 쓰는 것보다 명시적인 것이 더 중요!

모듈을 import하는 다른 방법

  • from 절을 활용해 특정 모듈을 미리 참조하고 어떤 요소를 import 할지 명시

  • math.으로 작성하지 않아도 활용 가능 (표기 방법이 다르다)

모듈 주의사항

  • 만약 서로 다른 모듈이 같은 이름의 함수를 제공할 경우 문제 발생
  • 마지막에 import된 이름으로 대체됨
  • '*' 는 전체 함수를 표기! 많이 권장하지는 않음

사용자 정의 모듈


직접 정의한 모듈 사용하기

  1. 모듈 my_math.py 작성
  2. 두 수의 합을 구하는 add 함수 작성
  3. my_math 모듈 import 후 add 함수 호출

파이썬 표준 라이브러리 (PSL)


파이썬 표준 라이브러리

  • 파이썬 표준 라이브러리 Python Standard Library
  • 파이썬 언어와 함께 제공되는 다양한 모듈패키지의 모음
  • 별도의 설치 없이 사용할 수 있음

파이썬 표준 라이브러리

https://docs.python.org/3/

패키지 (Package)

  • 편리하게 사용하고자 모듈을 만들었다, 하지만 그러한 모듈이 너무 많아졌을 때, 모듈들을 하나로 모아놓은 것이다.
  • 관련된 모듈들을 하나의 디렉토리에 모아 놓은 것

패키지 사용하기 (1/2)

  • 아래와 같은 디렉토리 구조로 작성
  • 패키지 3개 : my_package, math, statistics
  • 모듈 2개 : my_math, tools

패키지 사용하기 (2/2)

  • 각 패키지의 모듈을 import 하여 사용하기

PSL 내부 패키지

설치 없이 바로 import하여 사용

외부 패키지

pip를 사용하여 설치 후 import 필요

pip (파이썬 패키지 관리자)

외부 패키지들을 설치하도록 도와주는 파이썬의 패키지 관리 시스템

  • PyPI(Python Package Index)에 저장된 외부 패키지들을 설치

https://pypi.org/

패키지 설치

  • 최신 버전 / 특정 버전 / 최소 버전을 명시하여 설치할 수 있음

requests 외부 패키지 설치 및 사용 예시

패키지 사용 목적

모듈들의 이름공간은 구분하여 충돌을 방지 모듈들을 효율적으로 관리하고 재사용할 수 있도록 돕는 역할

제어문 (Control Statement)


  • 코드의 실행 흐름을 제어하는 데 사용되는 구문
  • 조건에 따라 코드 블록을 실행하거나 반복적으로 코드를 실행

조건문

개요

조건문 (Conditional Statement)

  • 주어진 조건식을 평가하여 해당 조건이 참(True)인 경우에만 코드 블록을 실행하거나 건너뜀

if / elif / else

파이썬 조건문에 사용되는 키워드

‘if’ statement

  • if statement의 기본 구조

조건문 예시

복수 조건문 예시

  • 조건식을 동시에 검사하는 것이 아니라 순차적으로 비교

반복문


반복문 (Loop Statement)

  • 주어진 코드 블록을 여러 번 반복해서 실행하는 구문
  1. 특정 작업을 반복적으로 수행
  2. 주어진 조건이 참인 동안 반복해서 실행 (조건이 False가 될 때 까지)

for / while

파이썬 반복문에 사용되는 키워드

내가 끝을 알면 for, 끝을 모르면 while

‘for’ statement

  • 임의의 시퀀스의 항목들을 그 시퀀스에 들어있는 순서대로 반복
  • for는 항상 in 과 사용되어야 함
  • 변수의 이름은 임의의 변수로 작성됨 (코드블록 안에서 활용하기 위해서 작성)
  • for statement의 기본 구조

반복 가능한 객체 - 문자열, list, dict, set, tuple

반복 가능한 객체 (iterable)

반복문에서 순회할 수 있는 객체 (시퀀스 객체 뿐만 아니라 dict, set 등도 포함)

for 문 원리

  • 리스트 내 첫 항목이 반복 변수에 할당되고 코드블록이 실행

  • 다음으로 반복 변수에 리스트의 2번째 항목이 할당되고 코드블록이 다시 실행

  • ... 마지막으로 반복 변수에 리스트의 마지막 요소가 할당되고 코드블록이 실행

  • 단수형, 복수형 고려해서 변수 이름을 작성하는게 좋음

인덱스로 리스트 순회

  • 리스트의 요소가 아닌 인덱스로 접근하여 해당 요소들을 변경하기

중첩 리스트 순회

  • 안쪽 리스트 요소에 접근하려면 바깥 리스트를 순회하면서 중첩 반복을 사용해 각 안쪽 반복을 순회

‘while’ statement

  • 주어진 조건식이 참(True)인 동안 코드를 반복해서 실행 == 조건식이 거짓(False)가 될 때 까지 반복
  • while statement의 기본 구조

사용자 입력에 따른 반복

  • while문을 사용한 특정 입력 값에 대한 종료 조건 활용하기

while 문은 반드시 종료 조건이 필요

for / while

  • 파이썬 반복문에 사용되는 키워드

    • for

      • iterable의 요소를 하나씩 순회하며 반복
    • while

      • 주어진 조건식이 참인 동안 반복

적절한 반복문 활용하기

  • for

    • 반복 횟수가 명확하게 정해져 있는 경우에 유용

    • 예를 들어 리스트, 튜플, 문자열 등과 같은 시퀀스 형식의 데이터를 처리할 때

  • while

    • 반복 횟수가 불명확하거나 조건에 따라 반복을 종료해야 할 때 유용

    • 예를 들어 사용자의 입력을 받아서 특정 조건이 충족될 때까지 반복하는 경우

반복제어


반복 제어

for문과 while은 매 반복마다 본문 내 모든 코드를 실행하지만 때때로 일부만 실행하는 것이 필요할 때가 있음

break

반복을 즉시 중지

continue

다음 반복으로 건너뜀

continue 예시

  • 리스트에서 홀수만 출력하기
  • 현재 반복문의 남은 코드를 건너뛰고 다음 반복으로 넘어감

break와 continue 주의사항

  • break와 continue를 남용하는 것은 코드의 가독성을 저하시킬 수 있음

  • 특정한 종료 조건을 만들어 break을 대신하거나, if 문을 사용해 continue 처럼 코드를 건너 뛸 수도 있음

  • 약간의 시간이 들더라도 가능한 코드의 가독성을 유지하고 코드의 의도를 명확하게 작성하도록 노력하는 것이 중요

  • 더 명시적인 코드를 작성하는 것이 중요!

List Comprehension


List Comprehension

간결하고 효율적인 리스트 생성 방법

Comprehension을 남용하지 말자.

"Simple is better than complex"

"Keep it simple, stupid

참고 문서


pass

아무런 동작도 수행하지 않고 넘어가는 역할

  • 문법적으로 문장이 필요하지만 프로그램 실행에는 영향을 주지 않아야 할 때 사용

pass 예시 (1/3)

  1. 코드 작성 중 미완성 부분
  • 구현해야 할 부분이 나중에 추가될 수 있고, 코드를 컴파일하는 동안 오류가 발생하지 않음

  1. 조건문에서 아무런 동작을 수행하지 않아야 할 때

  1. 무한 루프에서 조건이 충족되지 않을 때 pass를 사용하여 루프를 계속 진행하는 방법

enumerate(iterable, start=0)

  • iterable 객체의 각 요소에 대해 인덱스와 함께 반환하는 내장함수

0개의 댓글

관련 채용 정보