Hướng dẫn how do you specify multiple return types in python? - làm cách nào để bạn chỉ định nhiều kiểu trả về trong python?

Từ các tài liệu

Lớp

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'
1

Loại công đoàn; Liên minh [X, Y] có nghĩa là X hoặc Y.Union[X, Y] means either X or Y.

Do đó, cách thích hợp để thể hiện nhiều hơn một loại dữ liệu trả về

from typing import Union


def foo(client_id: str) -> Union[list,bool]

Nhưng đừng lưu ý rằng việc gõ không được thực thi. Python tiếp tục vẫn là một ngôn ngữ được gõ động. Cú pháp chú thích đã được phát triển để giúp phát triển mã trước khi được phát hành vào sản xuất. Như PEP 484 tuyên bố, "Không có loại kiểm tra nào xảy ra vào thời gian chạy."

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'

Như bạn có thể thấy tôi đang vượt qua một giá trị INT và trả lại một str. Tuy nhiên,

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'
2 sẽ được đặt thành các giá trị tương ứng.

>>> foo.__annotations__ 
{'return': , 'a': }

Vui lòng đi qua PEP 483 để biết thêm về Gợi ý loại. Cũng xem các gợi ý loại trong Python 3.5 là gì ??

Vui lòng lưu ý rằng điều này chỉ có sẵn cho Python 3,5 trở lên. Điều này được đề cập rõ ràng trong PEP 484.Python 3.5 and upwards. This is mentioned clearly in PEP 484.


Từ Python 3.10 trở đi, có một cách mới để đại diện cho liên minh này. Xem Loại Liên minh:

Một đối tượng Liên minh giữ giá trị của | (BitWise hoặc) Hoạt động trên nhiều đối tượng loại. Những loại này được dự định chủ yếu cho các chú thích loại. Biểu thức loại liên minh cho phép loại cú pháp gợi ý loại sạch hơn so với gõ.union.

Như chúng ta có thể thấy, điều này hoàn toàn giống với

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'
1 trong các phiên bản trước. Ví dụ trước của chúng tôi có thể được sửa đổi để sử dụng ký hiệu này:

def foo(client_id: str) -> list | bool:

Bài viết này mô tả cách trả về nhiều giá trị từ một hàm trong Python.

  • Trả về nhiều giá trị bằng dấu phẩy
  • Trả lại
    >>> def foo(a:str) -> list:
    ...     return("Works")
    ... 
    >>> foo(1)
    'Works'
    
    4

Xem bài viết sau đây cho những điều cơ bản của các chức năng trong Python.

  • Xác định và gọi các chức năng trong Python (def, return)

Trả về nhiều giá trị bằng dấu phẩy

Trả lại

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'
4

Xem bài viết sau đây cho những điều cơ bản của các chức năng trong Python.

def test():
    return 'abc', 100

Xác định và gọi các chức năng trong Python (def, return)

Trong Python, bạn có thể trả về nhiều giá trị bằng cách đơn giản là chúng được phân tách bằng dấu phẩy.
Built-in Types - Tuples — Python 3.7.4 documentation

  • Ví dụ, xác định một hàm trả về một chuỗi và số nguyên như sau:

result = test()

print(result)
print(type(result))
# ('abc', 100)
# 

Trong Python, các giá trị phân tách bằng dấu phẩy được coi là các bộ đếm không có dấu ngoặc đơn, ngoại trừ khi được yêu cầu bởi cú pháp. Vì lý do này, hàm trong ví dụ trên trả về một tuple với mỗi giá trị dưới dạng một phần tử.

print(result[0])
print(type(result[0]))
# abc
# 

print(result[1])
print(type(result[1]))
# 100
# 

Lưu ý rằng đó thực sự là dấu phẩy tạo ra một tuple, không phải dấu ngoặc đơn. Các dấu ngoặc đơn là tùy chọn, ngoại trừ trong trường hợp tuple trống hoặc khi chúng cần thiết để tránh sự mơ hồ của cú pháp. Các loại tích hợp - Tuples - Python 3.7.4 Tài liệu

# print(result[2])
# IndexError: tuple index out of range

Một tuple với một yếu tố yêu cầu một dấu phẩy trong Python

  • Mỗi phần tử có một loại được xác định trong hàm.

a, b = test()

print(a)
# abc

print(b)
# 100

Tất nhiên, việc chỉ định một chỉ mục vượt quá số lượng giá trị trả về được xác định làm tăng lỗi.

def test2():
    return 'abc', 100, [0, 1, 2]

a, b, c = test2()

print(a)
# abc

print(b)
# 100

print(c)
# [0, 1, 2]

Trả lại >>> def foo(a:str) -> list: ... return("Works") ... >>> foo(1) 'Works' 4

Xem bài viết sau đây cho những điều cơ bản của các chức năng trong Python.

>>> def foo(a:str) -> list:
...     return("Works")
... 
>>> foo(1)
'Works'
0

Làm cách nào để trả lại nhiều loại trong Python?

Trả về nhiều giá trị bằng dấu phẩy trong Python, bạn có thể trả về nhiều giá trị bằng cách trả về chúng được phân tách bằng dấu phẩy. Trong Python, các giá trị phân tách bằng dấu phẩy được coi là các bộ đếm không có dấu ngoặc đơn, ngoại trừ khi được yêu cầu bởi cú pháp.return them separated by commas. In Python, comma-separated values are considered tuples without parentheses, except where required by syntax.

Bạn có thể có nhiều câu lệnh trả về trong một chức năng Python không?

Các hàm Python không bị hạn chế để có một tuyên bố trả lại duy nhất.Nếu một hàm nhất định có nhiều hơn một câu lệnh trả về, thì cái đầu tiên gặp phải sẽ xác định kết thúc thực thi của hàm và cả giá trị trả về của nó.. If a given function has more than one return statement, then the first one encountered will determine the end of the function's execution and also its return value.

Bạn có thể trả lại hai biến trong Python không?

Các hàm Python có thể trả về nhiều biến.Các biến này có thể được lưu trữ trực tiếp trong các biến.Một hàm không bắt buộc để trả về một biến, nó có thể trả về 0, một, hai hoặc nhiều biến.Đây là một thuộc tính duy nhất của Python, các ngôn ngữ lập trình khác như C ++ hoặc Java không hỗ trợ điều này theo mặc định.. These variables can be stored in variables directly. A function is not required to return a variable, it can return zero, one, two or more variables. This is a unique property of Python, other programming languages such as C++ or Java do not support this by default.

Làm thế nào để bạn xác định một loại trong Python?

Loại cũng có thể được gọi bằng cách sử dụng cú pháp: loại (tên, cơ sở, dict).Ba tham số được truyền cho loại (), tức là, tên, cơ sở và dict là các thành phần tạo nên một định nghĩa lớp.Tên đại diện cho tên lớp, các cơ sở là lớp cơ sở và Dict là từ điển của các thuộc tính lớp cơ sở.type(name, bases, dict). The three parameters passed to type()i.e., name, bases and dict are the components that make up a class definition. The name represents the class name, the bases is the base class, and dict is the dictionary of base class attributes.