[ 오늘의 수업 내용 요약 ]

006_ 지역변수와 전역변수
1. 전역변수
: 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정할 수는 없다.

  1. 지역변수
    : 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.

  2. global 키워드
    : global을 사용하면 함수 안에서도 전역변수의 값을 수정할 수 있다.
    num_out = 10
    def printNumbers():
    global num_out
    num_out = 20
    print(f’num+out : {num_out}’)
    printNumbers()
    print(f’num_out : {num_out}’)
    => num_out = 20
    num_out = 20

007_ 중첩함수

  • 함수 안에 또 다른 함수가 있는 형태이다.
  • 내부 함수를 함수 밖에서 호출할 수 없다.

008_ lambda 함수

  • lambda 키워드를 이용하면 함수 선언을 보다 간단하게 할 수 있다.

009_ 모듈

  • 모듈은 이미 만들어진 훌륭한 기능으로 사용자는 쉽게 사용할 수 있다.
  1. 계산 모듈
  2. 난수 모듈
  3. 날짜/시간 모듈
    사용자는 마치 내 것처럼 사용할 수 있다.
  • 파이썬 모듈은 내부 모듈, 외부 모듈, 사용자 모듈로 구분할 수 있다.
    내부 모듈 -> 파이썬 설치 시 기본적으로 사용할 수 있는 모듈
    외부 모듈 -> 별도 설치 후 사용할 수 있는 모듈
    사용자 모듈 -> 사용자가 직접 만든 모듈

010_ 모듈 제작

  • 모듈은 특정 기능을 가지고 있는 파이썬 파일을 말한다.

011_ 모듈 사용

  • import 키워드를 이용해 모듈을 임포트 한다.
  • as키워드를 이요해 모듈 이름을 단축시킬 수 있다.
  • from~as 키워드를 이용해서 모듈의 특정 기능만을 사용할 수 있다.
    ex from calculator import add
    ex from calculator import * (모든 기능을 다 불러올 수 있다.)
    배열 형태로도 가져올 수 있다.

012-013_ 실행(메인)파일
1. name전역변수

  • name에는 모듈 이름이 저장되거나 main이 저장된다.
    addModule.py : name = addModule
    module.py : name = main 실행(메인)파일/ 시작파일이 된다.
  • 메인일 때 실행해라
    => if name == ‘main’:

014_ 패키지

  • 패키지를 이용하면 관련 있는 모듈을 그룹을 관리할 수 있다.
    ex) CalculatorForInt
  • addCal.py
  • subCal.py
  • mulCal.py
  • divCal.py

015_ site-package

  • site-package에 있는 모듈은 어디서나 사용할 수 있다.
  • sys모듈 : 시스템의 간단한 정보들을 가지고 있는 모듈
  • path : 정보들의 경로를 알려준다.

016_ 자주 사용하는 외부 모듈

  • 수학, 난수, 시간 모듈은 코딩할 때 유용하게 사용된다.
    math 모듈 : 수학관련 모듈
    random 모듈 : 난수 관련 모듈
    time 모듈 : 시간 관련 모듈

017_ 객체지향 프로그래밍

  • 객체를 이용한 프로그램으로 객체는 속성과 기능으로 구성된다.

  • 객체 = 속성 + 기능
    계산기 = 속성 : 숫자
    기능 : 덧셈, 뺄셈 등
    자동차 = 속성 : 색상, 길이, 가격
    = 기능 : 전진, 후진, 정지 등

  • 객체 만들기( 생성 )

  • 객체는 클래스에서 생성된다.

  1. 자동차 클래스
    속성: 색상, 길이, 가격 등
    기능: 전진, 후진, 정지 등
    => 2. 객체 생성 -> 3. 자동차 객체가 생성됨
  • 객체 사용 장점
  • 코드 재사용, 모듈화에 좋다.
    => 객체 결합도가 낮을수록 좋은 소프트웨어다.

018_ 클래스와 객체 생성

  • 클래스는 class 키워드와 속성(변수) 그리고 기능(함수)를 이용해서 만든다.

class Car: -> 클래스선언
def init(self, clolr, length): -> 생성자, 속성
self.color = color
self.length = length
def doStop(self): -> 기능
print(‘STOP’)
def deStop(self): -> 기능
print(‘START’)

  • 객체는 클래스의 생성자를 호출한다.
  • 초기화 된다 = 속성의 값이 초기화된다.

019_ 객체 속성 변경

  • 객체 속성은 변경할 수 있다.
  • 도트 접근 연산자를 이용해 속성을 변경할 수 있다.

020_ 객체와 메모리

  • 변수는 객체의 메모리 주소를 저장하고 이를 이용해서 객체를 참조한다.
  • 레퍼런스 변수
  • 얕은복사는 같은 메모리 주소를 공유한다.

021_ 얕은 복사와 깊은 복사
1. 얕은 복사
: 얕은 복사란 객체 주소를 복사하는 것으로 객체 자체가 복사되지 않는다.
2. 깊은 복사
: 깊은 복사란 객체 자체를 복사하는 것으로 또 하나의 객체가 만들어진다.
3. 리스트 얕은 복사 하는 방법
import copy
scores = [9 8, 5, 7, 6, 10]
scoreCopy = []

socresCopy = scores
print(f’scores): {id(scores)}’)
print(f’id(scoresCopy): {id(scoresCopy)}’)
4. 리스트 깊은 복사 하는 방법
import copy
scores = [9 8, 5, 7, 6, 10]
scoreCopy = []
for s in scores:
scoresCopy.appedns(s)
print(f’id(scores) : {id(scores)}’)
print(f’id(scoresCopy) : {id(scoresCopy)}’)
혹은
scoresCopy = scores[:]
print(f’id(scores) : {id(scores)}’)
print(f’id(scoresCopy) : {id(scoresCopy)}’)

022_ 클래스 상속

  • 클래스는 또 다른 클래스를 상속해서 내 것처럼 사용할 수 있다.

023-024_ 생성자

  • 객체가 생성될 때 생성자를 호출하면 init()가 자동 호출된다.
    cal = Calculator() -> Calculator()생성자 호출 ->Calculatorinit()
  • init()가 속성을 초기화 한다.
  • 상위 클래스의 속성을 초기화하기 위해서 super()를 이용한다.

025_ 다중상속

  • 2개 이상의 클래스를 상속한다.
  • 다중상속을 남발하면 안된다.

026_ 오버라이딩

  • 하위 클래스에서 상위 클래스의 메서드를 재정의한다.

027_ 추상 클래스

  • 상위 클래스에서 하위 클래스에 메서드 구현을 강요한다.
    from abc import ABCMeta
    from abc import abstractmethod
  • 특정기능을 상속 받았을 때 알맞게 쓰기 위해 추상 클래스 사용

028_ 예외란 ?

  • 문법적인 문제는 없으나 실행 중 발생하는 예상하지 못한 문제다.
  • 에러 : 소프트웨어적으로 처리할 수 없는 것
  • 예외 : 문법적 문제도 없고 천재지변이 아닌 상황에 예상하지 못한 문제
  • 예외 관련 클래스는 Execption 클래스를 상속한다.

029_ 예외처리

  • 예상하지 못한 예외가 프로그램 전체 실행에 영향이 없도록 처리함
    => 발생한예외에 대해서 별도 처리함
  • 예외 발생 예상 구문을 try~except로 감싼다.
  • 예외가 발생할 것 같은 구간에 정확히 try~except로 감싸야 한다.

030_ try~except~else

  • ~else : 예외가 발생하지 않은 경우 실행하는 구문이다.
  • except를 제외한 try else만 사용하면 에러가 난다.

031_ finally

  • 예외 발생과 상관없이 항상 실행한다.

032_ exception class

  • exception 은 예외 담당 클래스
  • raise 키워드를 이용하면 예외를 발생시킬 수 있다.

0개의 댓글