없음을 암시하는 파이썬 3타입?
def foo(
hello: str='world', bar: str=None,
another_string_or_None: str|????=None):
pass
함수에서 파이썬에 유형 힌트를 설정하려고 하는데, 다음을 사용하여 둘 이상의 유형 힌트를 추가할 수 있습니다.something: str|bool='default value'
하지만, 암시하는 유형은 무엇입니까?None
? :/
예를 들어,
def foo(
hello: str='world', bar: str=None,
another_string_or_None: str|????=None):
...
귀하의 사용 사례가 "뭔가 또는 없음"이라는 것을 알게 되었습니다.
버전 3.5부터 Python은 모듈을 통해 형식 주석을 지원합니다.그리고 여러분의 경우, 주석을 다는 방법은 힌트를 사용하는 것이 좋습니다.이것은 당신이 찾고 있는 정확한 의미를 가지고 있습니다.
그러므로 힌트는another_string_or_None
다음과 같습니다.
import typing
def foo(
hello: str='world', bar: str=None,
another_string_or_None: typing.Optional[str]=None):
...
Python 3.10은 원하는 원래 표기법을 지원합니다.str | None
.
이건 그저.None
!
>>> def nothing(nun: None) -> None:
... return nun
...
>>> nothing(None)
>>>
아니면 적어도 그럴 수도 있습니다.
이러한 주석들은 구문이 정확한 것 이상으로 Python에게 의미가 없기 때문에 도구에 달려 있습니다.
예를 들어 type check-decorator를 사용하는 경우 다음을 사용해야 합니다.type(None)
:
>>> import typecheck as tc
>>>
>>> @tc.typecheck
>>> def nothing(nun: type(None)) -> type(None):
... return nun
...
>>> nothing(None)
>>> nothing(0)
typecheck.framework.InputParameterError: nothing() has got an incompatible value for nun: 0
>>> nothing(False)
typecheck.framework.InputParameterError: nothing() has got an incompatible value for nun: False
또한 Typecheck를 사용하여 "둘 이상의 유형 힌트 추가"를 보다 명확하게 할 수 있습니다.tc.any()
(또는),tc.all()
(AND), 그리고 훨씬 더 많은 것.
조심해요tc.none()
NAND와 유사한 술어입니다. 찾고 있는 것이 아닙니다. 인수가 없으면 다음과 같은 모든 유형을 허용합니다.tc.all()
아니면 더 적합한tc.anything
.
@mbdevpl 덕분에 이 질문이 답으로 간주된다는 것을 알지만, 저는 그것을 추가하고 싶었습니다.type(None)
None 유형에 대한 실제 값을 얻는 방법입니다. 예를 들어, 이것은 예를 들어 유용할 수 있습니다.if statement check
예:
if isinstance(x_var, type(None)):
pass
그 이후로python3.5
do를 사용할 수도 있습니다.Union
여기에 표시된 것처럼 없음을 가진 여러 유형:
x_var: typing.Union[str, None]
y_var: typing.Union[Dict, List, None]
이는 다음과 같습니다.
x_var: typing.Optional[str]
y_var: typing.Optional[typing.Union[Dict, List]]
PEP-0484에 따르면: "유형 힌트에 사용할 때, 다음과 같은 표현이 사용됩니다.None
와 동등한 것으로 간주됩니다.type(None)
."
다음을 위해 유형 힌트 서명으로 사용할 때 이 문제를 해결했습니다.@functools.singledispatch
그리고 논쟁에 주석을 달기None
기능 파견 장식가를 위해 작동합니다.
언급URL : https://stackoverflow.com/questions/19202633/python-3-type-hinting-for-none
'programing' 카테고리의 다른 글
UIViewController의 보기가 표시되는지 확인하는 방법 (0) | 2023.05.26 |
---|---|
Postgre 복사 중SQL 데이터베이스를 다른 서버로 (0) | 2023.05.26 |
부트스트랩 서버에 등록할 수 없습니다. (0) | 2023.05.26 |
Angular에서 템플릿의 변수를 선언하는 방법 (0) | 2023.05.26 |
PostgreSql 데이터베이스의 소유자를 변경하는 방법은 무엇입니까? (0) | 2023.05.26 |