반응형

파이썬 버전 3의 표준 타입 계층 구조

파이썬 버전 3의 표준 타입 계층 구조

반응형
반응형


특히 가상 환경에 설치된 패키지는 목록을 저장해 두었다가 나중에 다시 설치할 수 있습니다. 

 

https://dojang.io/mod/page/view.php?id=2470

 

파이썬 코딩 도장: 47.11 가상환경 사용하기

파이썬을 사용하다 보면 pip로 패키지를 설치하게 되는데 이 패키지들은 파이썬 설치 폴더(디렉터리)의 Lib/site-packages 안에 저장됩니다. 그래서 pip로 설치한 패키지는 모든 파이썬 스크립트에서

dojang.io

글로벌 파이썬 환경에서 패키지가 호환되지 않는 경우
파이썬 가상 환경으로 독립된 공간을 구성


다음과 같이 pip freeze로 패키지 목록과 버전 정보를 requirements.txt 파일에 저장합니다
(git 등으로 버전 관리를 할 때 저장소에 설치된 패키지를 모두 추가하지 않고, requirements.txt 파일만 관리하면 됩니다).

(example) C:\project\example>pip freeze > requirements.txt

requirements.txt 파일의 내용대로 패키지를 설치하려면 pip install에서 -r 또는 --requirement 옵션을 사용합니다.

(example) C:\project\example>pip install -r requirements.txt


requirement.txt 파일의 내용대로 패키지를 삭제하려면 pip uninstall에서 -r 또는 --requirement 옵션을 사용합니다.


(example) C:\project\example>pip uninstall -r requirements.txt

 

반응형
반응형

FastAPI  프레임워크, 고성능, 간편한 학습, 빠른 코드 작성, 준비된 프로덕션

 

https://fastapi.tiangolo.com/ko/

 

FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.7+ based on standard Python type hints.

 

https://github.com/tiangolo/fastapi

 

GitHub - tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for production

FastAPI framework, high performance, easy to learn, fast to code, ready for production - GitHub - tiangolo/fastapi: FastAPI framework, high performance, easy to learn, fast to code, ready for produ...

github.com

FastAPI는 현대적이고, 빠르며(고성능), 파이썬 표준 타입 힌트에 기초한 Python3.6+의 API를 빌드하기 위한 웹 프레임워크입니다.

주요 특징으로:

  • 빠름: (Starlette과 Pydantic 덕분에) NodeJS  Go와 대등할 정도로 매우 높은 성능. 사용 가능한 가장 빠른 파이썬 프레임워크 중 하나.
  • 빠른 코드 작성: 약 200%에서 300%까지 기능 개발 속도 증가. *
  • 적은 버그: 사람(개발자)에 의한 에러 약 40% 감소. *
  • 직관적: 훌륭한 편집기 지원. 모든 곳에서 자동완성. 적은 디버깅 시간.
  • 쉬움: 쉽게 사용하고 배우도록 설계. 적은 문서 읽기 시간.
  • 짧음: 코드 중복 최소화. 각 매개변수 선언의 여러 기능. 적은 버그.
  • 견고함: 준비된 프로덕션 용 코드를 얻으십시오. 자동 대화형 문서와 함께.
  • 표준 기반: API에 대한 (완전히 호환되는) 개방형 표준 기반: OpenAPI (이전에 Swagger로 알려졌던) 및 JSON 스키마.

* 내부 개발팀의 프로덕션 애플리케이션을 빌드한 테스트에 근거한 측정

from typing import Union

from fastapi import FastAPI

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

골드 스폰서

 

 

 

 

 

 

 

 

 

 

다른 스폰서

의견들

"[...] 저는 요즘 FastAPI를 많이 사용하고 있습니다. [...] 사실 우리 팀의 마이크로소프트 ML 서비스 전부를 바꿀 계획입니다. 그중 일부는 핵심 Windows와 몇몇의 Office 제품들이 통합되고 있습니다."

Kabir Khan - 마이크로소프트 (ref)

"FastAPI 라이브러리를 채택하여 예측을 얻기 위해 쿼리를 실행 할 수 있는 REST 서버를 생성했습니다. [Ludwig을 위해]"

Piero Molino, Yaroslav Dudin 그리고 Sai Sumanth Miryala - 우버 (ref)

"Netflix는 우리의 오픈 소스 배포판인 위기 관리 오케스트레이션 프레임워크를 발표할 수 있어 기쁩니다: 바로 Dispatch입니다! [FastAPI로 빌드]"

Kevin Glisson, Marc Vilanova, Forest Monsen - 넷플릭스 (ref)

"FastAPI가 너무 좋아서 구름 위를 걷는듯 합니다. 정말 즐겁습니다!"

Brian Okken - Python Bytes 팟캐스트 호스트 (ref)

"솔직히, 당신이 만든 것은 매우 견고하고 세련되어 보입니다. 여러 면에서 Hug가 이렇게 되었으면 합니다 - 그걸 만든 누군가를 보는 것은 많은 영감을 줍니다."

Timothy Crosley - Hug 제작자 (ref)

"REST API를 만들기 위해 현대적인 프레임워크를 찾고 있다면 FastAPI를 확인해 보십시오. [...] 빠르고, 쓰기 쉽고, 배우기도 쉽습니다 [...]"

"우리 API FastAPI로 바꿨습니다 [...] 아마 여러분도 좋아하실 것입니다 [...]"

Ines Montani - Matthew Honnibal - Explosion AI 설립자 - spaCy 제작자 (ref) - (ref)
반응형
반응형

Python 3 Cheat Sheet

https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf

반응형
반응형

Cheat-Sheets.org - 프로그램 커닝페이퍼

 

https://www.cheat-sheets.org/

 

Cheat-Sheets.org

All cheat sheets, round-ups, quick reference cards, quick reference guides and quick reference sheets in one page.

www.cheat-sheets.org

  python 3 cheat Sheet : https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf

https://overapi.com/python

 

Python Cheat Sheet | OverAPI.com

 

overapi.com

 

https://www.cheat-sheets.org/#Python

 

Cheat-Sheets.org

All cheat sheets, round-ups, quick reference cards, quick reference guides and quick reference sheets in one page.

www.cheat-sheets.org

반응형
반응형

Google Colaboratory - python 실습하기

https://colab.research.google.com/

 

Google Colaboratory

 

colab.research.google.com

 

https://research.google.com/colaboratory/faq.html

 

Google Colab

Colaboratory 자주 묻는 질문(FAQ) 기본 사항 Colaboratory란 무엇인가요? 줄여서 'Colab'이라고도 하는 Colaboratory는 Google 리서치팀에서 개발한 제품입니다. Colab을 사용하면 누구나 브라우저를 통해 임의의

research.google.com

Colaboratory

자주 묻는 질문(FAQ)

기본 사항

Colaboratory란 무엇인가요?link

줄여서 'Colab'이라고도 하는 Colaboratory는 Google 리서치팀에서 개발한 제품입니다. Colab을 사용하면 누구나 브라우저를 통해 임의의 Python 코드를 작성하고 실행할 수 있습니다. Colab은 특히 머신러닝, 데이터 분석, 교육에 적합합니다. 더 기술적으로 설명하면 Colab은 호스팅된 Jupyter 노트북 서비스로, 설정하지 않고 사용 가능하며 GPU를 포함한 컴퓨팅 리소스를 무료로 사용할 수 있습니다.

정말 무료인가요?link

예. Colab은 무료로 사용할 수 있습니다.

믿기 어려울 정도로 좋아 보이는데요. 어떤 제한사항이 있나요?link

Colab 리소스는 보장되거나 무제한으로 제공되지는 않으며 사용량 한도가 달라지기도 합니다. 이런 방식으로 운영해야 Colab에서 리소스를 무료로 제공할 수 있기 때문입니다. 자세한 내용은 리소스 한도를 참고하세요.

향상된 리소스를 더 안정적으로 사용하는 데 관심이 있다면 Colab Pro가 적합할 수 있습니다.

Colab 리소스는 상호작용 사용 사례에 우선 할당됩니다. 일괄 연산, 다른 사용자에게 부정적인 영향을 줄 수 있는 작업, 정책을 우회하는 작업 등은 금지됩니다. 다음은 Colab 런타임에서 허용되지 않는 사항입니다.

  • Colab과의 상호작용 연산과 관련이 없는 파일 호스팅, 미디어 게재 또는 기타 웹 서비스 제공
  • 토렌트 다운로드 또는 P2P 파일 공유 참여
  • 원격 데스크톱 또는 SSH 사용
  • 원격 프록시 연결
  • 암호화폐 채굴
  • 서비스 거부 공격 실행
  • 비밀번호 크래킹
  • 여러 계정을 사용하여 액세스 제한이나 리소스 사용 제한 우회
  • 딥페이크 생성

유료 사용자를 위한 추가 제한사항은 여기에서 확인하시기 바랍니다.

Jupyter와 Colab 사이에는 어떤 차이점이 있나요?link

Jupyter는 Colab의 기반이 되어 주는 오픈소스 프로젝트입니다. Colab을 사용하면 아무것도 다운로드하거나 설치, 실행하지 않고도 Jupyter 메모장을 다른 사람과 공유할 수 있습니다.

Colab 사용하기

 

Google Colab Free GPU Tutorial

https://medium.com/deep-learning-turkey/google-colab-free-gpu-tutorial-e113627b9f5d

 

Google Colab Free GPU Tutorial

Now you can develop deep learning applications with Google Colaboratory -on the free Tesla K80 GPU- using Keras, Tensorflow and PyTorch.

medium.com

Hello! I will show you how to use Google Colab, Google’s free cloud service for AI developers. With Colab, you can develop deep learning applications on the GPU for free.

Thanks to KDnuggets!

I am happy to announce that this blog post was selected as KDnuggets Silver Blog for February 2018! Read this on KDnuggets.

What is Google Colab?

Google Colab is a free cloud service and now it supports free GPU!

You can;

  • improve your Python programming language coding skills.
  • develop deep learning applications using popular libraries such as Keras, TensorFlow, PyTorch, and OpenCV.

The most important feature that distinguishes Colab from other free cloud services is; Colab provides GPU and is totally free.

Detailed information about the service can be found on the faq page.

Getting Google Colab Ready to Use

Creating Folder on Google Drive

Since Colab is working on your own Google Drive, we first need to specify the folder we’ll work. I created a folder named “app” on my Google Drive. Of course, you can use a different name or choose the default Colab Notebooks folder instead of app folder.

I created an empty “app” folder

Creating New Colab Notebook

Create a new notebook via Right click > More > Colaboratory

Right click > More > Colaboratory

Rename notebook by means of clicking the file name.

Setting Free GPU

It is so simple to alter default hardware (CPU to GPU or vice versa); just follow Edit > Notebook settings or Runtime>Change runtime type and select GPU as Hardware accelerator.

Running Basic Python Codes with Google Colab

Now we can start using Google Colab.

I will run some Basic Data Types codes from Python Numpy Tutorial.

It works as expected :) If you do not know Python which is the most popular programming language for AI, I would recommend this simple and clean tutorial.

Running or Importing .py Files with Google Colab

Run these codes first in order to install the necessary libraries and perform authorization.

 

When you run the code above, you should see a result like this:

Click the link, copy verification code and paste it to text box.

After completion of the authorization process, you should see this:

Now you can reach you Google Drive with:

 

install Keras:

!pip install -q keras

upload mnist_cnn.py file to app folder which is located on your Google Drive.

mnist_cnn.py file

run the code below to train a simple convnet on the MNIST dataset.

!python3 "/content/drive/My Drive/app/mnist_cnn.py"

As you can see from the results, each epoch lasts only 11 seconds.

반응형
반응형

Python 3.14는 C++보다 빠를 것입니다

https://towardsdatascience.com/python-3-14-will-be-faster-than-c-a97edd01d65d

 

Python 3.14 will be faster than C++

Benchmarking the new and impressive Python 3.11

towardsdatascience.com

새롭고 인상적인 Python 3.11 벤치마킹

Python은 데이터 과학(DS) 및 기계 학습(ML)에서 가장 많이 사용되는 스크립팅 언어 중 하나입니다. ' 프로그래밍 언어의 인기도 '에 따르면 Python은 Google에서 가장 많이 검색되는 언어입니다. 다양한 DS/ML 솔루션을 함께 연결 하는 훌륭한 글루 언어일 뿐만 아니라 데이터로 거의 모든 작업을 수행할 수 있는 많은 라이브러리가 있습니다.

약 한 달 후에 우리는 Python의 새로운 연간 릴리스: 버전 3.11을 얻습니다. 이 버전의 주요 기능은 속도가 크게 향상되었기 때문에 이 새 버전에 대해 매우 흥분됩니다.

LinkedIn에서 나는 이미 새 버전을 테스트하는 두 사람의 게시물을 보았고 그 결과는 놀라웠습니다. 그러나 Python 3.11이 진정으로 얼마나 빠른지 느낄 수 있는 가장 좋은 방법은 테스트를 직접 실행하는 것입니다.

이 게시물에서는 Python 3.11에 대한 단계별 분석을 공유합니다. 모든 코드는 내 github 페이지 에서 사용할 수 있습니다 .

Unsplash  Spencer Davis 사진

프로그래밍 언어를 벤치마킹하는 것은 결코 쉬운 일이 아닙니다. x 가 y 보다 빠르다는 것을 읽을 때 항상 결과를 소금 한 알로 받아들여야 합니다. 알고리즘의 한 구현은 x 보다 더 좋을 수 있고 다른 구현은 y 에서 더 나을 수 있습니다 . 벤치마크의 경우 Python에 대해 Python을 테스트할 때 조금 더 간단하지만 약간만 영향을 받는 언어의 요소를 선택했을 수 있습니다. 이를 염두에 두고 내가 벤치마킹에 사용한 알고리즘인 Monte Carlo 방법을 사용한 Pi 추정을 제시하고자 합니다.

이 알고리즘의 아이디어는 간단하지만 대학에서 수학 과정에서 처음 보았을 때 마음이 흔들렸습니다. 크기가 2r 인 정사각형이 있고 이 정사각형에 반지름이 r 인 원을 맞춥니다 . 이제 평면에서 숫자를 생성하는 난수 생성기를 사용합니다. <-r, r>, <-r, r> . 원에 있는 점과 정사각형에 있는 점 사이의 비율(읽기: 모든 점)은 면적 비율의 근사치로 Pi를 근사하는 데 사용할 수 있습니다. 이것은 방정식에서 조금 더 명확합니다.

그림 1: Pi를 추정하기 위한 Monte Carlo 방법의 파생. 두 영역 간의 비율은 Pi/4이므로 Pi는 N_circle/N_all의 약 4배입니다. (저자의 이미지).

Python에서는 테스트를 반복하고 평균을 취할 수 있도록 테스트 스크립트에서 실제 추정치를 분할했습니다. 여기에 표시되지는 않았지만 명령줄 인터페이스(CLI)에서 인수를 구문 분석하는 표준 라이브러리인 Argparse 를 사용하여 스크립트를 매개변수화했습니다 . Python 코드는 다음과 같습니다.

def estimate_pi(
    n_points: int,
    show_estimate: bool,
) -> None:
    """
    Simple Monte Carlo Pi estimation calculation.
    Parameters
    ----------
    n_points
        number of random numbers used to for estimation.
    show_estimate
        if True, will show the estimation of Pi, otherwise
        will not output anything.
    """
    within_circle = 0

    for _ in range(n_points):
        x, y = (random.uniform(-1, 1) for v in range(2))
        radius_squared = x**2 + y**2

        if radius_squared <= 1:
            within_circle += 1

    pi_estimate = 4 * within_circle / n_points

    if not show_estimate:
        print("Final Estimation of Pi=", pi_estimate)


def run_test(
    n_points: int,
    n_repeats: int,
    only_time: bool,
) -> None:
    """
    Perform the tests and measure required time.
    Parameters
    ----------
    n_points
        number of random numbers used to for estimation.
    n_repeats
        number of times the test is repeated.
    only_time
        if True will only print the time, otherwise
        will also show the Pi estimate and a neat formatted
        time.
    """
    start_time = time.time()

    for _ in range(n_repeats):
        estimate_pi(n_points, only_time)

    if only_time:
        print(f"{(time.time() - start_time)/n_repeats:.4f}")
    else:
        print(
            f"Estimating pi took {(time.time() - start_time)/n_repeats:.4f} seconds per run."
        )
view rawsingle_test_run_PARTLY.py hosted with ❤ by GitHub

이 스크립트는 실행할 준비가 되었지만 현재 설치된(또는 활성화된) 버전뿐만 아니라 다양한 버전의 Python을 테스트하는 데 이 스크립트를 사용하려고 합니다. 여러 버전의 Python을 테스트하는 가장 쉬운 방법은 Docker를 사용하는 것입니다. Python은 많은 도커 이미지를 유지 관리 합니다. 당연히 모든 버전이 지원되지만 2.7 또는 3.2와 같은 EOL(End-of-Life) 버전도 지원됩니다. 버전 3.11과 같은 릴리스 후보에 대한 이미지도 있습니다. Docker를 사용하려면 Docker가 설치되어 있어야 합니다. Linux와 Mac에서는 비교적 쉽습니다. Windows에서는 확실하지 않지만 어렵지는 않을 것입니다. 도커 CLI만 설치하는 것이 좋습니다. 데스크탑은 저에게 너무 부풀려져 있습니다. 컨테이너화된 Python 환경에서 로컬 스크립트를 실행하려면 다음을 실행하십시오.

도커 실행 -it --rm \ 
  -v $PWD/your_script.py:/your_script.py \ 
  python:3.11-rc-slim \ 
  python /yourscript.py

다양한 버전에 대한 테스트를 자동화하기 위해 물론 Python도 사용합니다. 이 스크립트는 특정 Python 버전으로 컨테이너를 시작하는 하위 프로세스 를 시작하고 나중에 결과를 수집합니다. 특별한 것은 없습니다:

def test_version(image: str) -> float:
    """
    Run single_test on Python Docker image.
    Parameter
    ---------
    image
        full name of the the docker hub Python image.
    Returns
    -------
    run_time
        runtime in seconds per test loop.
    """
    output = subprocess.run([
            'docker',
            'run',
            '-it',
            '--rm',
            '-v',
            f'{cwd}/{SCRIPT}:/{SCRIPT}',
            image,
            'python',
            f'/{SCRIPT}',
            '--n_points',
            str(N_POINTS),
            '--n_repeats',
            str(N_REPEATS),
            '--only-time',
        ],
        capture_output=True,
        text=True,
    )

    avg_time = float(output.stdout.strip())

    return avg_time


# Get test time for current Python version
base_time = test_version(NEW_IMAGE['image'])
print(f"The new {NEW_IMAGE['name']} took {base_time} seconds per run.\n")

# Compare to previous Python versions
for item in TEST_IMAGES:
    ttime = test_version(item['image'])
    print(
        f"{item['name']} took {ttime} seconds per run."
        f"({NEW_IMAGE['name']} is {(ttime / base_time) - 1:.1%} faster)"
    )
view rawrun_main_test_py11.py hosted with ❤ by GitHub

이러한 테스트를 실행할 때 절대값은 프로세서(CPU 과중)에 따라 시스템마다 다릅니다. 다음은 마지막 7개의 주요 Python 버전에 대한 결과입니다.

새로운 Python 3.11은 실행당 6.4605초가 걸렸습니다.Python 3.5는 11.3014초가 소요되었습니다.(Python 3.11은 74.9% 빠름) 
Python 3.6은 11.4332초가 소요되었습니다.(Python 3.11은 77.0% 더 빠름) 
Python 3.7은 10.7465초가 소요되었습니다 
. (Python 3.11은 74.9% 빠름) 3.11은 65.5% 빠름) 
Python 3.9는 10.9537초가 소요되었습니다.(Python 3.11은 69.5% 빠름) 
Python 3.10은 8.8467초가 소요되었습니다.(Python 3.11은 36.9% 빠름)

벤치마크는 Python 3.11의 경우 평균 6.46초가 소요되었습니다. 이를 이전 버전(3.10)과 비교하면 거의 37% 더 빠릅니다. 꽤 인상적입니다! 버전 3.9와 3.10 간에 거의 동일한 차이가 있어 3.11이 거의 70% 빨라졌습니다! 나는 그림 2에서 모든 시간을 플로팅했습니다.

그림 2: 테스트한 모든 Python 버전의 평균 루프 시간. (저자의 이미지).

속도에 대해 이야기할 때 항상 한 사람이 말합니다. 속도를 원하면 C를 사용하지 마십시오.

C는 Python보다 훨씬 빠릅니다! — 그 한 사람

내 C는 녹슬었지만 어쨌든 시도해 볼 생각입니다. 좋은 시간 측정 라이브러리(크로노)와 함께 제공되는 GNU C++를 사용했습니다. 아래 코드를 찾으십시오.

#include <stdlib.h>
#include <stdio.h>
#include <chrono>
#include <array>

#define N_POINTS 10000000
#define N_REPEATS 10

float estimate_pi(int n_points) {
   double x, y, radius_squared, pi;
   int within_circle=0;

   for (int i=0; i < n_points; i++) {
      x = (double)rand() / RAND_MAX;
      y = (double)rand() / RAND_MAX;

      radius_squared = x*x + y*y;
      if (radius_squared <= 1) within_circle++;
   }

   pi=(double)within_circle/N_POINTS * 4;
   return pi;
}

int main() {
    double avg_time = 0;

    srand(42);

    for (int i=0; i < N_REPEATS; i++) {
        auto begin = std::chrono::high_resolution_clock::now();
        double pi = estimate_pi(N_POINTS);
        auto end = std::chrono::high_resolution_clock::now();
        auto elapsed = std::chrono::duration_cast<std::chrono::nanoseconds>(end - begin);
        avg_time += elapsed.count() * 1e-9;
        printf("Pi is approximately %g and took %.5f seconds to calculate.\n", pi, elapsed.count() * 1e-9);
    }

    printf("\nEach loop took on average %.5f seconds to calculate.\n", avg_time / N_REPEATS);
}
view rawpi_estimate.c hosted with ❤ by GitHub

우리 모두 알고 있듯이 C++는 컴파일된 언어이므로 소스를 사용하려면 먼저 컴파일해야 합니다. 일반이 build-essentials설치된 경우 다음을 입력할 수 있습니다.

g++ -o pi_estimate pi_estimate.c

컴파일 후 빌드 실행 파일을 실행하기만 하면 됩니다. 출력은 다음과 같아야 합니다.

Pi는 약 3.14227이고 계산하는 데 0.25728초가 걸렸습니다. 
Pi는 약 3.14164이고 계산하는 데 0.25558초가 걸렸습니다. 
Pi는 약 3.1423이며 계산하는 데 0.25740초가 소요되었습니다. 
Pi는 약 3.14108이고 계산하는 데 0.25737초가 걸렸습니다. 
Pi는 약 3.14261이며 계산하는 데 0.25664초가 소요되었습니다.각 루프는 계산하는 데 평균 0.25685초가 걸렸습니다.

그리고 우리는 그것이 정말로 (읽기: REALLY) 빠르기 때문에 그 한 사람 과 동의해야 합니다 . 이전에 Python에서 프로그래밍한 것과 동일한 루프를 수행하는 데 0.257초밖에 걸리지 않았습니다. 이것을 그림 3과 같이 이전 플롯의 선으로 추가해 보겠습니다.

그림 3: C++로 컴파일된 동일한 벤치마크와 비교한 Python 버전. (저자의 이미지).

이제 이전 수치를 조금 더 오래 감상한 후 Python이 얻은 추진력을 분명히 볼 수 있습니다. 버전 3.9 이후로 Python은 속도가 약 35% 증가했습니다. Python 개발자는 다음 몇 가지 버전에서 상당한 속도 증가가 있을 것이라고 언급했으므로 이 속도가 유지될 것이라고 가정할 수 있습니다(  , 매우 안전한 가정).

이제 문제는 이 모멘텀이 고정된 상태에서 Python이 C++의 시간을 언제 능가할 것인가입니다. 이를 위해 우리는 물론 외삽을 사용하여 다음 Python 버전의 루프 시간을 예측할 수 있습니다. 이는 그림 4에서 볼 수 있습니다.

그림 4: Python 속도 추정 -> Python 3.14는 속도 면에서 C++를 능가합니다. 놀라운! (저자의 이미지).

결과는 정말 놀랍습니다! 이 속도를 유지하면 Python 3.14가 C++보다 빠를 것입니다. 정확히는 루프 시간이 -0.232 초가 되므로 계산을 하기 직전에 완료됩니다. 시공간 연속체에 구멍이 있는 것처럼 보이지만 이러한 계산은 확고합니다. 그러므로 우리는 아인슈타인과 친구들의 작업에 의문을 제기해야 할 수도 있다고 생각합니다.

반응형
반응형

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

파이썬 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 이 문서는 프로그래밍 언어에 관한 것입니다. 그리스 신화의 괴물에 대해서는 피톤 문서를, 미사일에 대해서는 파이톤 5 미사일 문서를 참고하십시오. 파이썬Py

ko.wikipedia.org

파이썬[3](영어: Python)은 1991년[4] 네덜란드계 프로그래머 귀도 반 로섬[5]이 발표한 고급 프로그래밍 언어로, 플랫폼에 독립적이며 인터프리터식, 객체지향적, 동적 타이핑(dynamically typed) 대화형 언어이다. 파이썬이라는 이름은 귀도가 좋아하는 코미디인〈Monty Python's Flying Circus〉에서 따온 것이다. 이름에서 고대신화에 나오는 커다란 뱀을 연상하는 경우도 있겠지만, 이와는 무관하다. 다만 로고에는 뱀 두마리가 형상화되어 있다.

파이썬은 비영리의 파이썬 소프트웨어 재단이 관리하는 개방형, 공동체 기반 개발 모델을 가지고 있다.

 

파이썬은 초보자부터 전문가까지 사용자층을 보유하고 있다. 동적 타이핑(dynamic typing) 범용 프로그래밍 언어로,   루비와 자주 비교된다. 다양한 플랫폼에서 쓸 수 있고, 라이브러리(모듈)가 풍부하여, 대학을 비롯한 여러 교육 기관, 연구 기관 및 산업계에서 이용이 증가하고 있다. 또 파이썬은 순수한 프로그램 언어로서의 기능 외에도 다른 언어로 쓰인 모듈들을 연결하는 접착제 언어로써 자주 이용된다. 실제 파이썬은 많은 상용 응용 프로그램에서 스크립트 언어로 채용되고 있다. 도움말 문서도 정리가 잘 되어 있으며, 유니코드 문자열을 지원해서 다양한 언어의 문자 처리에도 능하다.

 
구문이 강조된 파이썬 코드 예제

파이썬은 기본적으로 해석기(인터프리터) 위에서 실행될 것을 염두에 두고 설계되었다.

  • 주요 특징
    • 동적 타이핑(dynamic typing). (실행 시간에 자료형을 검사한다.)
    • 객체의 멤버에 무제한으로 접근할 수 있다. (속성이나 전용의 메서드 훅을 만들어 제한할 수는 있음.)
    • 모듈, 클래스, 객체와 같은 언어의 요소가 내부에서 접근할 수 있고, 리플렉션을 이용한 기술을 쓸 수 있다.
  • 해석 프로그램의 종류
    • Cython: C로 작성된 인터프리터.
    • 스택리스 파이썬: C 스택을 사용하지 않는 인터프리터.
    • 자이썬: 자바 가상 머신용 인터프리터. 과거에는 제이파이썬(JPython)이라고 불렸다.
    • IronPython: .NET 플랫폼용 인터프리터.
    • PyPy: 파이썬으로 작성된 파이썬 인터프리터.

현대의 파이썬은 여전히 인터프리터 언어처럼 동작하나 사용자가 모르는 사이에 스스로 파이썬 소스 코드를 컴파일하여 바이트 코드(Byte code)를 만들어 냄으로써 다음에 수행할 때에는 빠른 속도를 보여 준다.

파이썬에서는 들여쓰기를 사용해서 블록을 구분하는 독특한 문법을 채용하고 있다. 이 문법은 파이썬에 익숙한 사용자나 기존 프로그래밍 언어에서 들여쓰기의 중요성을 높이 평가하는 사용자에게는 잘 받아들여지고 있지만, 다른 언어의 사용자에게서는 프로그래머의 코딩 스타일을 제한한다는 비판도 많다. 이 밖에도 실행 시간에서뿐 아니라 네이티브 이진 파일을 만들어 주는 C/C++ 등의 언어에 비해 수행 속도가 느리다는 단점이 있다. 그러나 사업 분야 등 일반적인 컴퓨터 응용 환경에서는 속도가 그리 중요하지 않고, 빠른 속도를 요하는 프로그램의 경우에도 프로토타이핑한 뒤 빠른 속도가 필요한 부분만 골라서 C 언어 등으로 모듈화할 수 있다(ctypes, SWIG, SIP 등의 래퍼 생성 프로그램들이 많이 있다). 또한 Pyrex, Psyco, NumPy 등을 이용하면 수치를 빠르게 연산할 수 있기 때문에 과학, 공학 분야에서도 많이 이용되고 있다. 점차적인 중요성의 강조로 대한민국에서도 점차 그 활용도가 커지고 있다.

 

https://ko.wikipedia.org/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC%EC%9D%98_%EC%97%AD%EC%82%AC

 

파이썬의 역사 - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 파이썬의 로고 (1990년대~2006년) 프로그래밍 언어 파이썬은 1980년대 말에 구상되었으며[1] 그 구현체는 1989년 12월[2] 예외 처리가 가능하고 아메바 운영 체제와 통

ko.wikipedia.org

 
파이썬의 로고 (1990년대~2006년)

프로그래밍 언어 파이썬은 1980년대 말에 구상되었으며[1] 그 구현체는 1989년 12월[2] 예외 처리가 가능하고 아메바 운영 체제와 통신이 가능한 ABC의 후속 프로그래밍 언어로서 CWI(Centrum Wiskunde & Informatica)의 귀도 반 로섬에 의해 시작되었다.[3]

파이썬 2.0은 2000년 10월 16일 출시되었으며 메모리 관리를 위한 사이클 감지 쓰레기 수집기(참조 카운팅뿐 아니라), 유니코드 지원을 포함한 새롭고 수많은 주요 기능들이 포함되었다. 그러나 가장 중대한 변화는 개발 프로세스 그 자체로서, 더 투명하고 공동체의 지원을 받는 프로세스로의 전환이다.[4]

파이썬 3.0은 메이저급의 하위 호환성이 없는 릴리스로서 2008년 12월 3일 출시되었으며[5] 이는 수많은 테스트 기간을 거친 뒤에 개발되었다. 주요 기능들 중 다수가 하위 호환이 가능한 파이썬 2.6, 2.7로 백포팅되고 있다.[6]

2018년 7월 12일, 귀도 반 로섬은 리더의 자리에서 내려왔다.[7]

버전 표[편집]

출시 전 내용:

버전최신 버전발표일제품 지원 종료일보안 지원 종료일

0.9 0.9.9[2] 1991-02-20[2] 1993-07-29[a][2]
1.0 1.0.4[2] 1994-01-26[2] 1994-02-15[a][2]
1.1 1.1.1[2] 1994-10-11[2] 1994-11-10[a][2]
1.2   1995-04-13[2] 지원 안함
1.3   1995-10-13[2] 지원 안함
1.4   1996-10-25[2] 지원 안함
1.5 1.5.2[8] 1998-01-03[2] 1999-04-13[a][2]
1.6 1.6.1[8] 2000-09-05[9] 2000-09[a][8]
2.0 2.0.1[10] 2000-10-16[11] 2001-06-22[a][10]
2.1 2.1.3[10] 2001-04-15[12] 2002-04-09[a][10]
2.2 2.2.3[10] 2001-12-21[13] 2003-05-30[a][10]
2.3 2.3.7[10] 2003-06-29[14] 2008-03-11[a][10]
2.4 2.4.6[10] 2004-11-30[15] 2008-12-19[a][10]
2.5 2.5.6[10] 2006-09-19[16] 2011-05-26[a][10]
2.6 2.6.9[17] 2008-10-01[17] 2010-08-24[b][17] 2013-10-29[17]
2.7 2.7.18[18] 2010-07-03[18] 2020-01-01[c][18]
3.0 3.0.1[10] 2008-12-03[17] 2009-02-13[19]
3.1 3.1.5[20] 2009-06-27[20] 2011-06-12[21] 2012-06[20]
3.2 3.2.6[22] 2011-02-20[22] 2013-05-13[b][22] 2016-02-20[22]
3.3 3.3.7[23] 2012-09-29[23] 2014-03-08[b][23] 2017-09-29[23]
3.4 3.4.10[24] 2014-03-16[24] 2017-08-09[25] 2019-03-18[a][24]
3.5 3.5.10[26] 2015-09-13[26] 2017-08-08[27] 2020-09-13[28]
3.6 3.6.12[29] 2016-12-23[29] 2018-12-24[b][29] 2021-12[29]
3.7 3.7.9[30] 2018-06-27[30] 2020-06-27[b][30] 2023-06[30]
3.8 3.8.6[31] 2019-10-14[31] 2021-04[31] 2024-10[31]
3.9 3.9.0[32] 2020-10-05[32] 2022-05[33] 2025-10[32][33]
3.10 3.10.0[34] 2021-10-25[34] 2023-05[34] 2026-10[34]
범례:
오래된 버전
오래된 버전, 지원 중
최신 버전
최신 미리보기 버전
배포 예정
 
 

내용주:

  1.  이동:            최신 버전 발표일
  2.  이동:     최신 비보안 전용 발표 날짜
  3.  공식 지원은 2020-01-01에 종료되었지만 2.7.18를 2020-04-20에 발표.[18]

차트[편집]

반응형

+ Recent posts