Python3 함수에서 유형 메모(Function Annotations)
문제 설명:
def read_text(path: Path, encoding=None) -> str:
"""
Not Path.read_text for compatibility with Python 3.4.
"""
with path.open(encoding=encoding) as f:
return f.read()
이 코드를 보았을 때 순간 멍해졌다. 이것은 Python3의 최신 함수 유형 주석 특성이다. 그러나 인터넷에서 중국어 자료를 찾았는데 보고 알 수 있는 문장을 발견했다.https://zhuanlan.zhihu.com/p/37239021) 잘못 쓴 곳이 있다. "그러나 마찬가지로 이것들은 단지'주해'일 뿐 코드에 아무런 영향을 미치지 않는다."파이썬 유형의 주석을 검색하면 순위가 높아서 나를 참혹하게 만들었다. 다행히 나는 공식 문서[1]를 찾았고 공식 문서를 볼 것을 건의했다. 그래서 블로그를 써서 다른 사람이 이런 저급한 실수를 범하지 않도록 기록해 두었다.
솔루션:
사실 잘 이해됩니다.
:
형식으로 함수의 매개 변수 유형을 지정하고, ->
형식으로 함수의 반환값 유형을 지정합니다.Python 해석기는 이 주석들 때문에 추가 검사를 제공하지 않습니다. 어떤 종류의 검사 작업도 없습니다.즉, 이러한 유형의 주석을 넣든 안 넣든 당신의 코드에 아무런 영향을 주지 않는다는 것이다.그러나 다음과 같은 코드가 나타납니다. def load_model(self,
load_name: str,
load_epoch: int,
frozen_layer_count: int = 0,
allowed_characters_for_loaded_model: List[chr] = english_frequent_characters,
use_kenlm: bool = False,
reinitialize_trainable_loaded_layers: bool = False,
language_model_name_extension: str = ""):
매개 변수 주석 뒤에 = 번호가 있습니다. 매개 변수가 들어오지 않을 때 뒤에 있는 등호의 값을 기본으로 합니다. (기본 매개 변수에 해당합니다!!)
실험 증명:
함수 주석의 함수를 정의합니다. 일부 파라미터는 주석 형식에만 기본 파라미터가 없습니다.
def foobar(a: int , b: str = 'softmax', c: float = 3.2) -> tuple:
return a, b, c
다음 코드를 실행합니다.
a, b, c = foobar(a=1)
print(a, b, c)
출력:
1 softmax 3.2
따라서 기본 파라미터가 파라미터를 전송하지 않으면 자동으로 기본값을 선택합니다.
reference:
【1】https://www.python.org/dev/peps/pep-3107/
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.