110
Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
pass
Tôi đang cố gắng đặt một gợi ý loại trong Python trong một hàm, bạn có thể thêm nhiều loại gợi ý với something: str|bool='default value'
, nhưng, loại gợi ý cho None
là gì? :/
MBDEVPL
4.3054 Huy hiệu vàng28 Huy hiệu bạc42 Huy hiệu Đồng4 gold badges28 silver badges42 bronze badges
Đã hỏi ngày 5 tháng 10 năm 2013 lúc 20:54Oct 5, 2013 at 20:54
9
Từ ví dụ của bạn:
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
Tôi đã nhận thấy rằng trường hợp sử dụng của bạn là "một cái gì đó hoặc không có".
Kể từ phiên bản 3.5, Python hỗ trợ các chú thích loại qua mô -đun
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
0. Và trong trường hợp của bạn, cách chú thích được đề xuất là bằng cách sử dụng gợi ý def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
1. Điều này có ý nghĩa chính xác mà bạn đang tìm kiếm.Do đó, gợi ý cho
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
2 sẽ là:import typing
def foo[
hello: str='world', bar: str=None,
another_string_or_None: typing.Optional[str]=None]:
...
Đã trả lời ngày 3 tháng 10 năm 2016 lúc 7:59Oct 3, 2016 at 7:59
MBDEVPLMBDEVPLmbdevpl
4.3054 Huy hiệu vàng28 Huy hiệu bạc42 Huy hiệu Đồng4 gold badges28 silver badges42 bronze badges
3
Đã hỏi ngày 5 tháng 10 năm 2013 lúc 20:54
Từ ví dụ của bạn:
Tôi đã nhận thấy rằng trường hợp sử dụng của bạn là "một cái gì đó hoặc không có".Jun 8, 2021 at 3:46
Kể từ phiên bản 3.5, Python hỗ trợ các chú thích loại qua mô -đun
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
0. Và trong trường hợp của bạn, cách chú thích được đề xuất là bằng cách sử dụng gợi ý def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
1. Điều này có ý nghĩa chính xác mà bạn đang tìm kiếm.OddthinkingDo đó, gợi ý cho
2 sẽ là:19 gold badges82 silver badges120 bronze badgesdef foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
0
Đã trả lời ngày 3 tháng 10 năm 2016 lúc 7:59
>>> def nothing[nun: None] -> None:
... return nun
...
>>> nothing[None]
>>>
MBDEVPLMBDEVPL
Python 3.10 sẽ hỗ trợ ký hiệu mong muốn ban đầu của bạn:
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
3.Nguồn
>>> 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
Đã trả lời ngày 8 tháng 6 năm 2021 lúc 3:46
OddthinkingOdDthinking
23.4K19 Huy hiệu vàng82 Huy hiệu bạc120 Huy hiệu đồngJul 21, 2016 at 23:47
Nó chỉ là None
!OJFord
Hoặc ít nhất, nó có thể được.7 gold badges57 silver badges94 bronze badges
Vì các chú thích này là vô nghĩa đối với Python ngoài việc ở trong cú pháp/đúng, nên nó phù hợp với các công cụ.
if isinstance[x_var, type[None]]:
pass
Ví dụ, nếu bạn sử dụng máy chủ trang-Decorator, thì bạn sẽ cần sử dụng
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
5:x_var: typing.Union[str, None]
y_var: typing.Union[Dict, List, None]
Tiênecheck cũng cho phép bạn có phần rõ ràng hơn "Thêm nhiều loại gợi ý với" với
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
6 [hoặc], def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
7 [và], và nhiều hơn nữa bên cạnh.x_var: typing.Optional[str]
y_var: typing.Optional[typing.Union[Dict, List]]
Hãy coi chừng
def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
8 là một vị ngữ giống như NAND; Không phải những gì bạn đang tìm kiếm - không có đối số nào, nó sẽ chấp nhận bất kỳ loại nào, tương đương với def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
7 hoặc APT import typing
def foo[
hello: str='world', bar: str=None,
another_string_or_None: typing.Optional[str]=None]:
...
0 nhiều hơn.Jul 29, 2020 at 13:56
5
Đã trả lời ngày 21 tháng 7 năm 2016 lúc 23:47
Ojfordojford
9.7477 Huy hiệu vàng57 Huy hiệu bạc94 Huy hiệu ĐồngMar 21 at 15:13
oyd11oyd11oyd11
Tôi biết câu hỏi này được coi là được trả lời nhờ @MBDEVPL, tuy nhiên, tôi đã muốn nói thêm rằng
5 là cách bạn nhận được thực tế không cho loại, điều này có thể hữu ích, ví dụ như trong một def foo[
hello: str='world', bar: str=None,
another_string_or_None: str|????=None]:
...
2 như:1 gold badge7 silver badges12 bronze badgesimport typing
def foo[
hello: str='world', bar: str=None,
another_string_or_None: typing.Optional[str]=None]:
...