정적으로 유형이 지정되고 컴파일된 Python 코드

6976 단어 python
Python은 C++와 같이 정적으로 유형이 지정되고 컴파일되는 언어와 달리 동적으로 유형이 지정되고 해석되는 프로그래밍 언어입니다. 하지만 그럴 수 있습니다!

유형 힌트를 사용하여 정적으로 유형이 지정된 방식으로 Python 코드를 작성하고 mypy 을 사용하여 유형 오류를 확인하고 Nuitka 을 사용하여 모든 Python을 컴파일할 수 있습니다.
따라서 두 가지를 혼합하면 정적으로 유형이 지정되고 컴파일된 Python 코드가 됩니다!

이것을 어떻게 달성할 수 있는지 봅시다.

  • mypy를 설치합니다.


    pip install mypy


  • 누이트카를 설치합니다.


    pip install nuitka
    (python3-devel을 먼저 설치해야 할 수도 있습니다.)

  • 그게 다야. 이제 코드 작성을 시작할 수 있습니다.

    예시



    이름이 문자열, 연령이 정수, 직업이 문자열, 급여가 실수인 Person 클래스를 정의해 봅시다.

    코드는 다음과 같습니다. main.py(또는 원하는 이름)라는 파일을 만듭니다.

    class Person:
        name: str
        age: int
        job: str
        salary: float
    
        def __init__(self, name: str, age: int, job: str, salary: float) -> None:
            self.name = name
            self.age = age
            self.job = job
            self.salary = salary
    
        def increase_salary(self, amount: float) -> None:
            self.salary += amount
    
        def __str__(self) -> str:
            return f"Hello, my name is {self.name}, I am {self.age} years old, and I am a {self.job}."
    
    
    adham: Person = Person(name="Adham", age=23, job="Engineer", salary=10000)
    
    amount: float = 5000
    
    adham.increase_salary(amount)
    
    print(adham)
    


    터미널에서 "python main.py"를 실행합니다.



    유형을 지정하기 위해 유형 힌트를 사용했지만 Python은 이러한 유형을 강제하지 않으며 str에 int 값을 줄 수 있으며 Python은 오류를 발생시키지 않습니다.
    예를 들어 변수 금액의 값을 문자열로 변경합니다.

    여기서 내 코드 편집기는 유형이 호환되지 않는다는 힌트를 주었지만 Python은 코드를 실행할 것이며 icrease_salary 메서드를 실행할 때 런타임에 오류만 발생합니다.


    그렇다면 코드를 실행하지 않고 이러한 유형 오류를 잡는 방법은 무엇일까요?
    이것은 mypy가 작동하는 곳입니다.

    터미널에서 "mypy main.py"를 실행합니다.



    mypy가 오류를 포착한 것을 볼 수 있습니다.
    amount 값을 다시 5000으로 변경하고 mypy를 다시 실행하면 다음과 같은 결과가 나타납니다.



    이제 코드에 유형 오류가 없다고 확신하므로 마침내 Nuitka를 사용하여 코드를 컴파일할 수 있습니다.

    터미널에서 "nuitka3 main.py"를 실행합니다.



    터미널에서 "./main.bin"을 실행하여 컴파일된 코드를 실행합니다.



    동일한 명령에서 check를 입력하고 코드를 컴파일하는 약간 더 쉬운 방법은 "mypy main.py && nuitka3 main.py"를 실행하는 것입니다.

    그러면 먼저 코드를 확인하고 올바른 경우 컴파일됩니다.

    그게 다야! 이제 Python++이 있습니다!

    좋은 웹페이지 즐겨찾기