Hướng dẫn typing python str or none - gõ python str hoặc không

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ì? :/

Hướng dẫn typing python str or none - gõ python str hoặc không

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

Hướng dẫn typing python str or none - gõ python str hoặc không

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.Oddthinking

Do đó, gợi ý cho

def foo(
        hello: str='world', bar: str=None,
        another_string_or_None: str|????=None):
    ...
2 sẽ là:19 gold badges82 silver badges120 bronze badges

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

Hướng dẫn typing python str or none - gõ python str hoặc không

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

Hướng dẫn typing python str or none - gõ python str hoặc không

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

Hướng dẫn typing python str or none - gõ python str hoặc không

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

def foo(
        hello: str='world', bar: str=None,
        another_string_or_None: str|????=None):
    ...
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
import typing

def foo(
        hello: str='world', bar: str=None,
        another_string_or_None: typing.Optional[str]=None):
    ...
2 như:1 gold badge7 silver badges12 bronze badges

Tôi có nên sử dụng gợi ý loại Python không?

Trong bài viết xuất sắc của mình, trạng thái của các gợi ý loại trong Python, Bernátbor đề nghị rằng nên sử dụng gợi ý loại của loại bất cứ khi nào các bài kiểm tra đơn vị đáng để viết.Thật vậy, gõ gợi ý đóng một vai trò tương tự như các bài kiểm tra trong mã của bạn: chúng giúp bạn như một nhà phát triển viết mã tốt hơn.type hints should be used whenever unit tests are worth writing.” Indeed, type hints play a similar role as tests in your code: they help you as a developer write better code.

Loại () trả về trong Python là gì?

Python loại () hàm loại () hoặc trả về loại đối tượng hoặc trả về một đối tượng loại mới dựa trên các đối số được truyền.either returns the type of the object or returns a new type object based on the arguments passed.

Bạn có thể chỉ định loại trong Python không?

Chỉ định một loại biến Có thể có những lúc bạn muốn chỉ định một loại trên một biến.Điều này có thể được thực hiện với đúc.Python là một ngôn ngữ định hướng đối tượng và do đó, nó sử dụng các lớp để xác định các loại dữ liệu, bao gồm cả các loại nguyên thủy của nó.This can be done with casting. Python is an object-orientated language, and as such it uses classes to define data types, including its primitive types.

Gõ Python có thể gọi là gì?

đánh máy.Có thể gọi là loại bạn sử dụng để chỉ ra một cuộc gọi.Hầu hết các loại Python hỗ trợ toán tử () là thuộc loại.ABC.Có thể gọi được.the type you use to indicate a callable. Most python types that support the () operator are of the type collections. abc. Callable .