파이썬이 R 에 비해 뛰어난 점
쉽고 뛰어난 개발 생산성으로 전 세계 개발자들이 선호 . 특히 구글 , 페이스북 등 유수의 IT 업계에서도 파이썬의 높은 생산성으로 인해 활용도가 매우 높습니다. 
오픈 소스 계열의 전폭적인 지원을 받고 있으며 놀라울 정도의 많은 라이브러리 로 인해 개발 시 높은 생산성을 보장 됩니다.
인터프리터 언어 (Interpreter 의 특성상 속도는 느리지만 , 대신에 뛰어 난 확장성 , 유연성 , 호환성으로 인해 서버 , 네트워크 , 시스템 , IOT, 심지어 데스크 톱까지 다양한 영역에서 사용되고 있습니다, 
머신러닝 어플리케이션과 결합한 다양한 어플리케이션 개발이 가능 합니다. 
엔터프라이즈 아키텍처로의 확장 및 마이크로 서비스 기반의 실시간 연계 등 다양한 기업 환경으로의 확산이 가능합니다. 
딥러닝 프레임워크인 텐서플로 TensorFlow ), 케라스 Keras ), 파이토치 PyTorch ) 등에서 우선 정책으로 파이썬을 지원합니다.

 

 

- 파이썬 머신러닝 생태계를 구성하는 주요 패키지

머신러닝 패키지 
Scikit Learn : 데이터 마이닝 기반의 머신러닝
행렬 / 선형대수 / 통계 패키지 
NumPy : 행렬과 선형대수를 다루는 패키지
SciPy : 자연과학과 통계를 위한 패키지 
데이터 핸들링 
Pandas : 데이터 처리 패키지 , 2 차원 데이터 처리에 특화 
시각화 
Matplotlib : 파이썬의 대표적인 시각화 패키지 
Seaborn : matplotlib 기반으로 만들었지만 , 판다스와의 쉬운 연동 , 더 함축적인 API, 분석을 위한 다양한 유형의 그래프 차트 제공 
서드파티 라이브러리 
아이파이 썬 IPython , Interactive Python) 툴인 주피터 노트북 Jupyter Notebook)




 

 

'Anaconda > Python' 카테고리의 다른 글

[Python] SQLite 연동  (0) 2020.07.30
[Python] 파일 입출력  (0) 2020.07.30
[Python] 상속(inheritance)  (0) 2020.07.29
[Python] 클래스(Class - 객체지향)  (0) 2020.07.28
[Python] 파이참(PyCharm) 다운로드  (0) 2020.07.28

SQLite

: Oracle 데이터 베이스와 동일하게 table 형태로 데이터를 저장해주고, 매우 가볍기 때문에 스마트 폰이나 메모리가 적은 곳에서 많이 이용되는 데이터 베이스입니다. 

 

www.sqlite.org/download.html

 

SQLite Download Page

Templates (1) and (2) are used for source-code products. Template (1) is used for generic source-code products and templates (2) is used for source-code products that are generally only useful on unix-like platforms. Template (3) is used for precompiled bi

www.sqlite.org

 

spqlte-tools-win32-x86-3320300.zip 을 다운받아주세요

 

 

압축을 풀고 sqlite3.exe를 관리자 권한으로 실행해주세요.

 

 

 이러한 화면이 출력 됩니다. 특정 계정으로 로그인 하지 않아도 작업할 수 있습니다. 

 

 

- 테이블 생성

: sqlite>create table phonebook (name char(32), phone char(32), email char(64) primary key); 

: sqlite> .schema phonebook

문자형 - char 

 

 

- 레코드 추가

: sqlite>insert into phonebook (name, phone, email)

 

- 데이터 확인 

: sqlite>select * from phonebook;

 

- 데이터 수정

: update

 

- 데이터 삭제

: drop

- 테이블 삭제

 

 

파이썬 – SQLite 연동 절차 - in pycharm 

 

 

1) 테이블 생성

 

2) 데이터 입력 

 

 

3)  데이터 출력 

 

4) 데이터 수정 

 

5) 데이터 삭제 

* tuple의 자료일 때 하나만 입력하려 (,)를 통해서 가능

파일 처리 파이썬 함수

 

파일 열기 -> file = open( )

파일 읽기/쓰기 -> file.read( ) / file.write( )

파일 닫기 -> file.close( )

 

 

- open() 함수

: open(file, mode)

- file : 실제 파일의 문자열 경로
- mode

문자  의미
'r' 읽기용으로 열기(기본값).
'w' 쓰기용으로 열기, 이미 같은 경로에 파일이 존재하면 파일 내용을 비움.
'x' 배타적 생성모드로 열기. 파일이 존재하면 IOError 예외 일으킴.
'a' 쓰기용으로 열기. 단, 'w'와는 달리 이미 같은 경로에 파일이 존재하는 경우 기존 내용에 덧붙임.
'b' 바이너리 모드 (byte 단위의 read. write 를 읽어주는것 ) 
't' 텍스트 모드(기본값)
'+' 읽기/쓰기용으로 파일 읽기 (양방향이 아니라 두개의 stream을 열어주는 것) 

 

 < open , wt > 

 file이 없으면 file을 생성하고, 연결통로를 생성해줍니다.  stream은 단방향성의 성질을 가지고 있기 때문에 어떤 특성으로 사용할지 지정해줘 합니다. 

 

파일이 만들어져서 잘 저장되었습니다.

 

 

< open, wr > 

console

 

 

- 자원 누수 방지를 돕는 with ~ as

 

구문 형식
with open(파일이름) as 파일객체:
코드블록 이곳에서 읽거나 쓰기를 한 후 그냥 코드를 빠져나가면 됩니다.

 

– 파일객체=open(파일이름)과 같다고 생각하면 됩니다.  
– with문 덕분에 close()를 하지 않아도 됩니다. 

 

console 

 

 

- 텍스트 파일 쓰기

: 문자열은 담은 리스트를 파일에 쓰는 writelines() 메서드.

 

 - 위의 동작과 똑같은 수행을 보다 편리하고 빠르게 읽어 도록 합니다. -> writelines() 메서드.

 

 

- 텍스트 파일 읽기

: 줄 단위로 텍스트를 읽는 readline() & readlines() 메서드

 

- readline( )

console 

 

- readlines( ) : readline()과 같은 동작이지만 데이터를 빠르게 처리합니다. 

console 

상속(inheritance)

: 상속은 무언가를 물려받는다는 뜻입니다. 그래서 클래스 상속은 물려받은 기능을 유지한채로 다른 기능을 추가할 때 사용하는 기능입니다. 

 

 

기반 클래스 -> 파생 클래스 

 

● 기능을 물려주는 클래스(기반클래스) -> 부모 클래스(parent class), 슈퍼 클래스(super class) 

 

상속을 받아 새롭게 만드는 클래스(파생클래스) -> 자식 클래스(child class), 서브 클래스(sub class) 

 - 아무 멤버를 정의하지 않아도 기반 클래스의 모든 것을 물려받아 갖게 됩니다. 

   단, privat 멤버(__로 시작되는 이름을 갖는 멤버)는 제외합니다. 

 

 

- 상속의 기본 형태 

class 기반클래스이름:
    코드
 
class 파생클래스이름(기반클래스이름):
    코드

클래스 상속은 다음과 같이 클래스를 만들 때 ( )(괄호)를 붙이고 안에 기반 클래스 이름을 넣습니다.

 

console 

 

1. < 다형성 > - 상속이라는 개념하에 가능 

console 

 

2. < 상속 - 데이터 속성 주의 > 

데이터 속성(field) 상속(명시적으로 표현해 주어야 함)  - field 는 생성자가 호출이 되는 순간, 할당됩니다. 

console 

error : message A __init__() 메서드 안에서 생성되는데, B의 인스턴스를 생성하면서 B.__init__()만 호출하고, A.__inint__() 메서드는 호출되지 않기 때문입니다. 

 

* java - 상속에서 자식의 생성자 안에서는 부모의 생성자까지 생성되도록 super 사용

 

 

해결점 -> 부모 클래스의 생성자를 자식 클래스에서 명시

console 

- 부모 클래스가 변경이 되면 부모 생성자도 변경해줘야하는 변거로움이 생깁니다. 

 

 

< 부모 클래스를 대신해주는 super() 사용 > 

 

상속 – super()
: 부모클래스의 객체 역할을 하는 프록시(Proxy)를 반환하는 내장 함수

 

console

 

< 자식 클래스에 생성자가 없을 때> 

console

자녀 클래스가 별도 생성자를 생성하지 않으면 default로 생성자를 만들어줍니다. 

 

def __init__(self):
    super.__init__(self)

 

 

3. < 다중 상속 > 

: 자식클래스 하나가 여러 부모 클래스로부터 상속받는 것입니다. 

 

- 기본 형태 

class A:
    pass
class B:
    pass
class C:
    pass
class D(A,B,C): # 다중 상속
    pass

 

- 다중 상속시 주의 사항 - 죽음의 다이아몬드

console

- 가까운것을 먼저 가져옵니다. 

- 다중상속은 개수가 많아지고 복잡해지면 개념 자체가 모호해 지기 때문에 권장하지 않습니다.  

 

 

 

4. < 오버라이딩(Overriding) > 

: 부모클래스로 부터 상속받은 메서드를 다시 자식 클래스에 정의하는 것.

console

- 부모의 method ride 까지 함께 출력 

: super( ) - 활용 하여 출력

console

 

5. < 데코레이터 > 

: 함수를 꾸미는 객체.
__call__() 메서드를 구현하는 클래스 

객체를 함수 호출 방식으로 사용하게 만드는 마법 메서드.

console

 

- 데코레이터 사용 용도(생성자)

console

: 참조변수를 함수를 호출하듯 괄호( )를 넣어주면 등록되었던 함수를 호출해준다.

 

 

- @decorator

console

 

 

6. < for문 순회 가능 객체 만들기 > - iterator 

console

 

- Iterator 와 순회 가능한 객체

console 

 

- range() 함수와 같은 일을 하는 클래스 정의

 

- 제너레이터(Generator)

console 

 

위의 동일 기능 정의

console

 

 

7. < 상속의 조건 : 추상 기반 클래스 > 

- 자식 클래스가 갖춰야 할 특징(메서드)을 강제하는 기능.
- 강제 조건 규약에 따르지 않으면 TypeError 예외 발생.
 - metaclass=ABCMeta 클래스와 @abstractmethod 데코레이터를 이용.

 

console 

- 추상 메서드가 존재하는데 오버라이딩 하지 않아서 error를 냅니다. 

 

 

해결점) 

자녀 클래스에서 추상 메서드를 오버라딩해서 사용. 

console

객체지향(Object Oriented Programming)이란 ?

: 효율적인 데이터 관리 방법으로, 데이터를 한개씩 보는 것이 아니라 하나의 의미별로 관리하는 것입니다. 객체 지향 프로그래밍은 컴퓨터 프로그램 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것입니다. 

 

각각의 데이터 -> 레코드 단위(하나의 변수 이름) 

 객체지향 프로그래밍(Object-Oriented Programming)이란, 객체 조립하여 전체 프로그램을 만드는 방식인데, 이는 마치 자건거를 부품별로 조립하여 만드는 것과 같습니다. 객체 지향적 프로그램은 필요 부분만 교체할 수 있어, 유지보수 및 확장성이 뛰어납니다. 

 

 

기본 구성 요소 

 

- 클래스(Class) : 같은 종류(또는 문제 해결을 위한)의 집단에 속하는 속성(attribute)과 행위(behavior)를 정의한 것으로 객체지향 프로그램의 기본적인 사용자 정의 데이터형(user defined data type)이라고 할 수 있습니다.

 

- 객체(Object) : 클래스의 인스턴스(실제로 메모리상에 할당된 것)으로, 객체는 자신 고유의 속성(attribute)을 가지며 클래스에서 정의한 행위(behavior)를 수행할 수 있습니다. 

 +) 객체(object) = 속성 (Attribute) + 기능(Method)

 

- 메서드(Method) : 클래스로부터 생성된 객체를 사용하는 방법으로서 객체에 명령을 내리는 메시지라 할 수 있습니다. 

 

속성 vs 기능 

속성 : 유형/무형의 특징 - > 변수 

기능 : 유형/무형의 특징적인 동작 -> 함수(메서드) 

 

클래스 vs  객체

클래스 : 자료형
객체 : 변수

 

 

 

1. 클래스 정의

 

기본 형태

class 클래스이름:
    def 메서드(self):
        코드

- 생성자의 이름 동일 : __init__(self) 

- 생성자 안에서 필드 선언(self.변수 = x)

 

클래스 메서드에 사용되는 self
- 메소드가 소속되어 있는 객체 자체 의미
- 클래스 외부에서는 변수명으로 객체를 다룰 수 있지만 내부에서는 객체를 지칭할 이름이 없으므로 self를 사용
- java의 객체 자신을 가리키는 this와 같음

 

 

< Car 자료형 선언 > 

1) 자료형 선언 : class 이름: 

2) 생성자 선언 : def __init__(self): 

3) 생성자 안에서 필드 선언 : self.변수 = x 

4) 매서드 정의 : def 변수 이름(self): 

 

if __name__=='__main__': # 시작 지점

: 마지막에 들어가 있어도 문제가 없습니다. 자료형이 선언만 되어 있기 때문입니다. 

 

 

< 메모리 할당 > 

< ( . ) 사용하여 접근 > 

 

< car 멤버변수 접근 출력  > 

{:02x} => 정수를 2자리의 16진수로 출력하되, 2자리 안되면 빈자리를 0으로 채워서 출력하라는 의미입니다. 

 

< car 멤버 메서드 접근 > 

 

- 생성자 안에 매개변수를 넣어서 사용 

결과 ( console ) 

 

 

2. 클래스 생성자 호출 

: 생성자가 호출 되는 순가 메모리에 할당 되는 것이 아니라, 프로그램이 시작하면  메모리에 할당 되어 있는 생성자 입니다. 데이터 속성을 초기화 메소드(__init__())가 아닌 클래스에 직접 정의한다면 객체가 정의되기 이전에 존재합니다. 해당 클래스의 모든 인스턴스가 공유됩니다. 

 

< class 생성자 생성 > 

클래식 생성자 생성

- 생성자 함수 안에서 선언 x, (self)x
- 변수를 바로 선언 = 클래스 생성자(클래스 멤버), [] : 리스트의 자료형으로 선언(리스트로 자료형 관리)
- 인스턴스가 공유하는 멤버로 사용

 

인스턴스 멤버

- self.변수이름 (내부에서 사용될 때는 self. 이 무조건 들어가야 합니다.)

- append(text) : 입력으로 가져오는 데이터를 내가 가지고 있는 데이터 마지막에 추가

 

< 출력 >

결과 ( console ) 

 

 < 비교 > 

 

- 기본적 class 선언

< 출력 > 

결과 ( console ) 

 

 

3. 정적 메서드(Static Method)

: 클래스를 통해 호출 가능한 메서드


- @staticmethod 데코레이터로 수식
- self 매개변수 없이 정의(self 매개변수를 전달받을 방법이 없음)

- 기본 형태 

class 클래스이름:

    @staticmethod
    def 메서드이름(매개변수):
        pass

결과 ( console ) 

- 데코레이션의 형태로 staticmethod를 사용할 수 있도록 합니다. 

 

- static 메서드는 self를 사용하지 않습니다. 

: 왜냐하면 static은 미리 메서드에 할당되어야하고 , self 는 인스턴스 생성이 되어야 메모리에 할당이 되어야 하기 때문에 사용하지 않습니다. 

 

 

 

4. 클래스 메서드(Class Method)

: 클래스를 통해 호출 가능한 메서드

 

- @classmethod 데코레이터와 cls(= class) 매개변수가 필수

 

- 기본 형태

class 클래스이름:
	@classmethod
	def 메서드이름(cls):
		pass

결과 ( console ) 

정적 메서드(Static method)와 클라스 메서드(Class method)는 cls 를 통해서 class를 전달 해주는 차이점을 가집니다. 

 

 

5. private member 

: 클래스의 안에서만 접근이 가능한 멤버.
- 작명법(Naming)으로 private/public 멤버 구분.

 

- private 멤버의 명명 규칙
두 개의 밑줄 __이 접두사여야 함. 예) __number
접미사는 밑줄이 한 개까지만 허용. 예) __number_
접미사의 밑줄이 두 개 이상이면 public 멤버로 간주함 
예) __number__

 

주의 )  앞에 __ 가 있어도 변수 이름 뒤에 _ 2개 이상 오면 public이 됩니다. 

 

결과 ( console ) - method 호출 

 

 

< private 변수 호출 > 

결과 ( console ) - method 호출 

private - error , 자동완성 기능도 수행되지 않습니다. 

 

'Anaconda > Python' 카테고리의 다른 글

[Python] 파일 입출력  (0) 2020.07.30
[Python] 상속(inheritance)  (0) 2020.07.29
[Python] 파이참(PyCharm) 다운로드  (0) 2020.07.28
[Python] 모듈(Module) & 패키지(Package) - in PyCharm  (0) 2020.07.28
[Python] 함수  (0) 2020.07.27

파이참이란? 

: 파이참이란 파이선 프로그램을 쉽게 개발할 수 있도록 하는 IDE 입니다. IDE란 [Integrated Development Environment]의 약자로 통합 개발 환경을 말합니다. 통합개발환경은 개발자가 소프트웨어를 개발하는 과정에 필요한 모든 작업을 하나의 소프트웨어에서 처리할 수 있도록 환경을 제공합니다. 코드 편집기, 디버거, 컴파일러, 인터프리터 등을 포함하고 개발자에게 제공합니다. 자주 사용되는 IDE의 종류로는 비주얼스튜디오, 이클립스, 파이참 등이 있습니다.

 

https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows

 

다운로드 PyCharm: JetBrains가 만든 전문 개발자용 Python IDE

최신 버전 다운로드: PyCharm (Windows, macOS, Linux)

www.jetbrains.com

저는 무료로 다운받아서 사용하도록 하겠습니다. 

 

설치 받을 때는 관리자 권한으로 실행하여 실행시 권한으로 제한을 받는 일이 없도록 합니다. 

 

Next

 

Next

 

add launchers dir to th the PATH 

자동으로 path 와 directory를 저장해주는 것으로 체크해주세요 

 

.py

(확장자) 가 자동으로 저장되도록 하는 것으로 체크해주세요. 

 

Install 

 

 

안정적인 실행을 위해서 reboot now 를 추천해드려요 

 

 

I cofirm that I have read and accept the terms of this User Agreement 를 선택하고 Continue 

 

오류가 생기면 그 정보를 보낼 것인가를 묻는 것입니다. 저는 생략하기 위해서 Don't Send 를 누르겠습니다 .

 

 

사용하고 싶은 환경을 선택하고 Next 

 

 

Start using PyCharm 을 눌러주세요. 

 

처음 실행 하면 파일이 없기 때문에 이러한 화면이 나오게 됩니다. create new project 선택 

 

 

1) 가상 디렉토리 사용 x 

location에 파일이 저장될 장소를 선택해주세요. 그리고 create 저장해주세요. 

 

 

2) 가상 디렉토리 사용 O

Existing interpreter 을 눌러주세요. 

 

가상 디렉토리가 저장 되어 있는 곳을 선택하고 OK를 눌러주세요. 

 

가상 directory 가 셋팅 되어 지고 Create 를 눌러줍니다. 

 

Yes 를 눌러줍니다.

 

다음부터는 보이지 않기 위해 Don't show tips 를 선택하고 close 를 눌러주세요. 

 

 

 

 

 

* 가상환경으로 셋팅하기 

 

Setting 으로 갑니다. 

 

Project Interpreter 에서 가상환경을 서택하여 Apply를 눌러주면 가상환경으로 변경 됩니다. 

 

'Anaconda > Python' 카테고리의 다른 글

[Python] 상속(inheritance)  (0) 2020.07.29
[Python] 클래스(Class - 객체지향)  (0) 2020.07.28
[Python] 모듈(Module) & 패키지(Package) - in PyCharm  (0) 2020.07.28
[Python] 함수  (0) 2020.07.27
[Python] 반복문 (while, for)  (0) 2020.07.27

모듈(Module)

: 독자적인 기능을 갖는 구성 요소로 변수, 함수, 클래스 등을 모아 놓은 스크립트 파일입니다. 모듈은 간단한 기능을 담을 때 사용하며, 패키지는 코드가 많고 복잡할 때 사용합니다. 파이썬에서는 각각의 소스 파일을 일컬어 이야기 합니다. 

 

제공자 기준

– 표준 모듈 : 파이썬과 함께 제공되는 모듈

– 사용자 생성 모듈 : 프로그래머가 직접 작성한 모듈

– 서드 파티 모듈 : 다른 프로그래머 or 업체에서 제공한 모듈

 

● 사용자 생성 모듈 - 모듈 만들기 (in PyCharm) 

Python File 을 눌러줍니다. 

 

이름을 넣어주고 enter 를 눌러주면 생성 됩니다. 

 

모듈 안에 변수, 함수, 클래스 등을 넣어줍니다. 

 

 

모듈(Module) – import

 

- 다른 모듈을 현재 모듈로 불러오는 기능
- 다른 모듈 내의 코드에 대한 접근을 가능
- 접근 가능 코드는 변수/ 함수/ 클래스 모두 포함

 

 

① 모듈 사용 ( import )   - 가독성을 높은 방법으로 가장 많이 권고 하는 방법입니다. 

import한 모듈의 이름으로 ( . ) 으로 접근해서 사용하면 됩니다. 

 

결과(console) 

 

가독성을 높은 방법으로 가장 많이 권고 하는 방법이지만 이름이 길어지면 사용하기 불편할 때 as 를 사용하여 기존 모듈에 새이름 부여 사용 가능하도록 합니다. 

 

+ ) import 모듈 이름  as 별칭 

- 가장 많이 사용 합니다. 

 

 

모듈 사용 ( from + import )

from 을 활용하여 함수의 이름으로만 접근하여 사용 가능하게 합니다.

 

결과(console) 

 

 

③ 모듈 사용 ( from + import + ( , ) )  : 콤마( , )를 이용해서 연속적으로 여러 함수(변수) 사용 

결과(console) 

 

④ 모듈 사용( from + import + ( * ) ) : ( * )  모든 함수, 변수 사용할 수 있도록 지원

결과(console) 

<권고하지 않음>

1. 실직적으로 이 코드를 만나면 모든 내용을 읽어와서 배치하는 것과 같으므로 용량을 많이 차지합니다. 
2. 어떤 함수를 사용하고 있는지 명확하지 않습니다. (가독성을 떨어뜨림
)

 

 

● 모듈(Module) 경로 탐색 규칙

 

:  import문을 만나면


1. 파이썬 인터프리터 내장 모듈 검색

 

- sys.builtin_module_names

결과(console) 


2. sys.path에 정의되어 있는 디렉토리 검색


- 파이썬 모듈이 실행되고 있는 현재 디렉토리
- PYTHONPATH 환경변수에 정의되어 있는 디렉토리
- 파이썬과 함께 설치된 기본 라이브러리

 

결과(console) 

실행되고 있는 현재 디렉토리 확인 -> 환경변수 정의된 디렉토리 확인 -> 기본 라이브러리 확인 

 

기본 라이브러리에 넣는 것을 권장 합니다. 하지만 편의에 의해서 실행 되는 디렉토리에 저장을 많이 합니다. 

 

메인 모듈(Main Module)

별도의 메인 함수가 따로 없습니다. 

.py 로 되어 있으면 수행하는 인터프린트 언어입니다. 

- ‘최상위 수준(Top Level)’에서 실행되는 스크립트만 있을 뿐입니다. 
- 최상위 수준 실행 -> 명령 프롬프트 창이나 탐색기를 이용하여 파이썬 모듈을 실행하는 것을 말합니다. 
- 메인 모듈 : 최상위 수준으로 실행되는 스크립트

 

 __name__
- 내장 전역 변수
- 모듈이 최상위 수준으로 실행 될 때 ‘__main__’으로 지정됩니다. 

 

 

하위 모듈(Sub Module)

 

메인 모듈이 import 문을 이용하여 불러오는 모듈

 

__name__
– 모듈 자체의 이름을 담고 있습니다. 

 

 

결과(console) 

 

<sub> 

 

<main> 

결과(console) 

시작하는 모듈에서는 __name__ 에서 __main__으로 출력하고, import 되어 있는  sub  모듈은 이름을 출력합니다. 

 

 

<sub>

결과 < console > 

<main>

결과 <console> 

 

패키지(Package)

: 패키지(package)는 여러 모듈을 묶은 것입니다.  패키지는 기능들이 모듈 여러 개로 잘게 나누어져 있고, 관련된 모듈끼리 폴더에 모여 있는 형태입니다. (모듈의 집합)

 

● 해당 디렉토리가 파이썬의 패키지로 인식되려면

_init_,py 파일을 그 경로에 갖고 있어야 함.

__all__ 변수 조정 : 패키지로부터 반입할 모듈의 목록을 정의하기 위해 사용

 

 

pakage를 완성하면 그 안에 _init_.py 파일이 들어가 있습니다. (반드시 들어가 있습니다.) 

 

 

 

- 폴더의 위치가 다른 모듈의 함수를 호출 ( 다른 페키지 안에 파일 ) 

 

< calculator2 > 

< 06_myPackage > 

결과 ( console ) 

 

 

- 폴더의 위치가 다른 모듈의 함수를 호출( 패키지 안에 패키지 안에 모듈 )

 

< calc > 

< package2 > 

결과 ( console ) 

'Anaconda > Python' 카테고리의 다른 글

[Python] 클래스(Class - 객체지향)  (0) 2020.07.28
[Python] 파이참(PyCharm) 다운로드  (0) 2020.07.28
[Python] 함수  (0) 2020.07.27
[Python] 반복문 (while, for)  (0) 2020.07.27
[Python] 조건문  (0) 2020.07.27

함수 

: 파이썬은 함수(function)라는 기능을 제공하는데 특정 용도의 코드를 한 곳에 모아 놓은 것을 뜻합니다. 그래서 함수는 처음 한 번만 작성해 놓으면 나중에 필요할 때 계속 불러 쓸 수 있습니다. 예를 들어 지금까지 사용했던 print, input 등도 모두 파이썬에서 미리 만들어 둔 함수입니다.

 

함수를 사용 장점 

 

- 코드의 용도를 구분할 수 있다.

- 코드를 재사용할 수 있다.

- 실수를 줄일 수 있다.

 

 

용어 정리

 

- 정의(Definition) : 어떤 이름을 가진 코드가 구체적으로 어떻게 동작 하는지를 ‘구체적으로 기술 하는 것’.

- 호출(Call) : 함수를 부르는 행위.
- 호출자(Caller) : 함수를 부르는 코드.
- 반환(Return) : 함수가 호출자에게 결과를 돌려주는 것.

 

 

함수 정의하기 

: 함수는 def에 함수 이름을 지정하고 ( )(괄호)와 :(콜론)을 붙인 뒤 다음 줄에 원하는 코드를 작성합니다. 

 

- 기본 형태 

def 함수이름():
     코드

함수 또한 자신이 영역을 가지는데 이때도 들여쓰기를 통해서 사용합니다.

 

 

함수 정의 + 호출 

 

 

1. 호출과 반환

my_abs( ) 안에 아무 값도 넣지 않기 때문에 error 가 난다.

 

- 올바른 실행 

 

 

- 함수의 이름을 출력하면 할당된 주소값 반환 

 

 

2. 기본값 매개변수(Default Argument Value)

 

3. 키워드 인자(Keyword Argument)

 

: 호출자가 매개변수의 이름을 일일이 저장해 데이터를 입합니다. 

+ 매개변수 이름으로 저장 가능 

 

- 주의) 매개변수 중 초기화 되어지지 않는 값이 존재 할 때, 값을 전달하지 않으면 error = name 데이터 미전달. 

해결) + name 데이터 추가 

 

- 매개변수의 이름으로 접근 할 때는 순서는 중요하지 않음. 

 

 

4. 가변 매개 변수 (Arbitrary Argument List)

 

- ( * ) 한개 일때 = tuple 

 

- 개수의 제한을 두지 않는 매개 변수로 전달 받는 형태를 ( * ) 한개 일때, tuple로 합니다. 데이터 자체를 확정지어서 읽어들입니다.

 

 

 

- ( ** ) 두개 일때 = dictionary 

key = value 의 형태

 

 

주의 ) 일반 매개변수와 ,가변 매개수가 함께 사용할 때는 이름을 같이 넣어서 호출 하면 error  


why ? 가능하게 되면 순서를 바꿔도 가능하게 되는 것인데, 가변인자인지 데이터가 잘못들어간 것인지 모호해집니다. 그렇기에 지원하지 않고 error를 냅니다. 

 

 

주의 ) ( * ) 일때 튜플로 반환 되므로 어떤것이 가변인자고, 일반매개변수 인지 알수 없기 때문에 error 를 냅니다. 

단, 정의의 문제는 아닙니다. (정의 가능)

 

해결) 매개변수의 이름을 넣어서 출력 

 

5.  호출자에게 반환하기 (return)

 

return 

1. 호출자에게 결과 전달 

2. 함수 즉시 종료 하고 호출한 쪽으로 이동

함수 즉시 종료 / 호출자에게 결과 전달
(한 함수 안에서 여러 개의 return 배치 가능)  

 

주의) None : 변수는 선언되었지만 아무런 값이 담기지 않고 사용될 경우 

* javascript - undefind

 

반환데이터 없이 '함수 종료' 의 의미로 사용.

 

반환 결과 없고, 함수 중간에 종료시킬 일도 없을 때, return문 생략 가능

 

6. 변수의 유효 범위 (scope)

 

1) 지역변수 O 

2) 함수 밖 변수 , 지연변수 X

3) global 변수 

 

: global 키워드: 전역변수, 지역변수의 생성을 막으며, 함수가 호출시 생성시 전체 코드에서 사용하여 변수의 번위를 확대 합니다. 

 

7. 함수를 변수에 담아 사용

 

- 함수를 변수에 담기 

 

- 서열 / 딕셔너리에도 변수로 담기

 

- 함수의 매개변수에 함수 전달 가능 

 

- 함수 내에서 함수를 반환

return 키워드를 통해서 함수를 반환 할 수 있도록 해줍니다. 

 

 

8. 중첩 함수 

 

주의 ) 중첩 함수는 외부에서 호출 불가능 

- pass : 기능의 구현을 잠시 보류 

+ Recent posts