Làm thế nào để xác định loại biến trong Python?
Vì vậy, nếu bạn có một biến, ví dụ:
one = 1
Bạn muốn biết loại của nó?
Có những cách đúng đắn và sai cách để làm mọi thứ trong Python. Đây là cách đúng:
Sử dụng >>> type[one]
7
>>> type[one]
>>> type[one]
Bạn có thể sử dụng thuộc tính
>>> type[one]
8 để lấy tên của đối tượng. .>>> type[one].__name__
'int'
Không sử dụng >>> type[one].__name__
'int'
1
>>> type[one].__name__
'int'
Trong Python, những cái tên bắt đầu với dấu gạch dưới không phải là một phần của API công khai và đó là một thông lệ tốt nhất để người dùng tránh sử dụng chúng. [Ngoại trừ khi hoàn toàn cần thiết.] [Except when absolutely necessary.]
Vì
>>> type[one]
7 cung cấp cho chúng ta lớp đối tượng, chúng ta nên tránh nhận điều này trực tiếp. :>>> one.__class__
Đây thường là ý tưởng đầu tiên mọi người có khi truy cập loại đối tượng theo phương thức - họ đã tìm kiếm các thuộc tính, vì vậy loại có vẻ kỳ lạ. Ví dụ:
class Foo[object]:
def foo[self]:
self.__class__
Đừng. Thay vào đó, hãy loại [tự]:
class Foo[object]:
def foo[self]:
type[self]
Chi tiết triển khai của INT và Floats
Làm thế nào để tôi thấy loại biến cho dù nó không dấu 32 bit, đã ký 16 bit, v.v.?
Trong Python, các chi tiết cụ thể này là chi tiết thực hiện. Vì vậy, nói chung, chúng ta thường không lo lắng về điều này trong Python. Tuy nhiên, để đánh bại sự tò mò của bạn ...
Trong Python 2, int thường là một số nguyên có chữ ký bằng chiều rộng từ của triển khai [giới hạn bởi hệ thống]. Nó thường được thực hiện như một thời gian dài ở C. khi các số nguyên ngày càng lớn hơn thế này, chúng ta thường chuyển đổi chúng thành Python Longs [với độ chính xác không giới hạn, không bị nhầm lẫn với C Longs].
Ví dụ, trong một Python 2 32 bit, chúng ta có thể suy luận rằng int là một số nguyên có chữ ký 32 bit:
>>> import sys
>>> format[sys.maxint, '032b']
'01111111111111111111111111111111'
>>> format[-sys.maxint - 1, '032b'] # minimum value, see docs.
'-10000000000000000000000000000000'
Trong Python 3, int cũ biến mất, và chúng tôi chỉ sử dụng [Python's] dài như int, có độ chính xác không giới hạn.
Chúng tôi cũng có thể nhận được một số thông tin về phao của Python, thường được triển khai dưới dạng gấp đôi trong C:
>>> sys.float_info
sys.floatinfo[max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308,
min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15,
mant_dig=53, epsilon=2.2204460492503131e-16, radix=2, rounds=1]
Sự kết luận
Không sử dụng
>>> type[one].__name__
'int'
1, API không công khai về ngữ nghĩa, để có được loại biến. Sử dụng >>> type[one]
7 thay thế.Và đừng lo lắng quá nhiều về các chi tiết triển khai của Python. Tôi không phải tự mình giải quyết các vấn đề xung quanh vấn đề này. Bạn có thể cũng sẽ không, và nếu bạn thực sự làm, bạn nên biết đủ để không tìm đến câu trả lời này để làm gì.
Chúng tôi sử dụng hàm loại [] trong Python để xác định loại đối tượng Python cụ thể. Nó có một chức năng rất đơn giản và dễ hiểu cho điều đó. Không cần phải quảng cáo thêm nữa, hãy để Lừa đi ngay vào cú pháp.
Cú pháp của hàm python []
Python có rất nhiều chức năng tích hợp. Hàm
>>> type[one].__name__
'int'
5 được sử dụng để có được loại đối tượng.Cú pháp chức năng loại Python [] là:
type[object]
type[name, bases, dict]
Khi một đối số được chuyển đến hàm loại [], nó sẽ trả về loại đối tượng. Giá trị của nó giống như biến .__ Lớp actance biến.
Khi ba đối số được thông qua, nó sẽ trả về một đối tượng loại mới. Nó được sử dụng để tạo ra một lớp một cách linh hoạt khi đang bay.
- Chuỗi tên của nhóm trở thành tên lớp. Nó giống như thuộc tính __name__ của một lớp. string becomes the class name. It’s the same as the __name__ attribute of a class.
- Các cơ sở của người Viking Tuple chỉ định các lớp cơ sở. Nó giống như thuộc tính __base__ của lớp. tuple specifies the base classes. It’s the same as the __bases__ attribute of the class.
- Từ điển của Dict Dict giúp tạo ra cơ thể lớp. Nó giống như thuộc tính __dict__ của lớp. dictionary helps create the class body. It’s the same as the __dict__ attribute of the class.
Ví dụ về hàm loại [] trong Python
Hãy cùng xem xét một số ví dụ về việc sử dụng hàm loại [].
1. Tìm loại đối tượng Python
x = 10
print[type[x]]
s = 'abc'
print[type[s]]
from collections import OrderedDict
od = OrderedDict[]
print[type[od]]
class Data:
pass
d = Data[]
print[type[d]]
Output:
>>> type[one]
0Lưu ý rằng hàm loại [] trả về loại đối tượng với tên mô -đun. Vì tập lệnh Python của chúng tôi không có mô -đun, nên mô -đun của nó trở thành __main__.
2. Trích xuất chi tiết từ các lớp Python
Hãy nói rằng chúng tôi có các lớp học sau. Chúng tôi sẽ kéo siêu dữ liệu về các lớp bằng các thuộc tính của lớp, cơ sở, dict và tài liệu.
>>> type[one]
1Hãy để in một số thuộc tính của các lớp này.
>>> type[one]
2Output:
>>> type[one]
3Chúng ta có thể tạo các lớp tương tự bằng cách sử dụng hàm loại [].
>>> type[one]
4Output:
>>> type[one]
5Lưu ý rằng chúng ta có thể tạo các hàm trong lớp động bằng cách sử dụng hàm loại [].
Sử dụng trong đời thực của hàm [] hàm
Python là một ngôn ngữ được gõ động. Vì vậy, nếu chúng ta muốn biết loại đối số, chúng ta có thể sử dụng hàm loại []. Nếu bạn muốn đảm bảo rằng chức năng của bạn chỉ hoạt động trên các loại đối tượng cụ thể, hãy sử dụng hàm isInstance [].
Hãy nói rằng chúng tôi muốn tạo một chức năng để tính toán một cái gì đó trên hai số nguyên. Chúng ta có thể thực hiện nó theo cách sau.
>>> type[one]
6Hàm isInstance [] được sử dụng để xác thực loại đối số đầu vào. Hàm loại [] được sử dụng để in loại tham số khi xác thực không thành công.
Người giới thiệu
- loại [] API Doc
- Hàm isinstance [] python
- Kiểm tra loại Python