Loại ngày và giờ trong python là gì?

Các mô-đun được mô tả trên trang này cung cấp nhiều loại dữ liệu chuyên biệt như ngày và giờ, mảng loại cố định, hàng đợi heap, hàng đợi được đồng bộ hóa và bộ

Show

Python cũng cung cấp một số kiểu dữ liệu dựng sẵn, cụ thể là dict, list, set và freezeset, và tuple. Lớp str được sử dụng để chứa các chuỗi Unicode và lớp byte được sử dụng để chứa dữ liệu nhị phân

Ngày giờ. Các kiểu ngày giờ cơ bản

Mô-đun datetime cung cấp các lớp để thao tác ngày và giờ theo cả hai cách đơn giản và phức tạp. Mặc dù số học ngày và giờ được hỗ trợ, trọng tâm của việc triển khai là trích xuất thuộc tính hiệu quả để định dạng và thao tác đầu ra. Đối với chức năng liên quan, xem thêm mô-đun thời gian và lịch

Có hai loại đối tượng ngày và giờ. “ngây thơ” và “nhận thức”

Một đối tượng nhận biết có đủ kiến ​​thức về các điều chỉnh thời gian chính trị và thuật toán hiện hành, chẳng hạn như múi giờ và thông tin về thời gian tiết kiệm ánh sáng ban ngày, để định vị chính nó so với các đối tượng nhận biết khác. Một đối tượng nhận thức được sử dụng để biểu thị một thời điểm cụ thể không thể giải thích được

Một đối tượng ngây thơ không chứa đủ thông tin để định vị chính nó một cách rõ ràng so với các đối tượng ngày/giờ khác. Việc một đối tượng ngây thơ đại diện cho UTC (Giờ quốc tế phối hợp), giờ địa phương hay thời gian ở một số múi giờ khác hoàn toàn tùy thuộc vào chương trình, giống như việc một số cụ thể đại diện cho mét, dặm hay khối lượng là tùy thuộc vào chương trình. Các đối tượng ngây thơ dễ hiểu và dễ làm việc với cái giá phải trả là bỏ qua một số khía cạnh của thực tế

Đối với các ứng dụng yêu cầu các đối tượng nhận biết, các đối tượng ngày giờ và thời gian có một thuộc tính thông tin múi giờ tùy chọn, tzinfo, có thể được đặt thành một thể hiện của một lớp con của lớp tzinfo trừu tượng. Các đối tượng tzinfo này nắm bắt thông tin về phần bù từ thời gian UTC, tên múi giờ và liệu Giờ tiết kiệm ánh sáng ban ngày có hiệu lực hay không. Lưu ý rằng chỉ có một lớp tzinfo cụ thể, lớp múi giờ, được cung cấp bởi mô-đun datetime. Lớp múi giờ có thể biểu thị các múi giờ đơn giản với độ lệch cố định từ UTC, chẳng hạn như chính UTC hoặc các múi giờ EST và EDT của Bắc Mỹ. Hỗ trợ các múi giờ ở mức độ chi tiết sâu hơn tùy thuộc vào ứng dụng. Các quy tắc điều chỉnh thời gian trên toàn thế giới mang tính chính trị hơn là hợp lý, thay đổi thường xuyên và không có tiêu chuẩn nào phù hợp cho mọi ứng dụng ngoài UTC

Mô-đun datetime xuất các hằng số sau

datetime.MINYEAR
Số năm nhỏ nhất được phép trong đối tượng ngày tháng hoặc ngày giờ. NĂM là 1.
datetime.MAXYEAR
Số năm lớn nhất được phép trong một đối tượng ngày hoặc giờ. TỐI ĐA NĂM là 9999

datetime Các loại có sẵn

class datetime.date
Một ngày ngây thơ được lý tưởng hóa, giả sử lịch Gregorian hiện tại luôn luôn và sẽ luôn như vậy, có hiệu lực. Thuộc tính. năm, tháng và ngày.
class datetime.time
Thời gian lý tưởng hóa, không phụ thuộc vào bất kỳ ngày cụ thể nào, giả sử rằng mỗi ngày có chính xác 24*60*60 giây (không có khái niệm “giây nhuận” ở đây). Thuộc tính. giờ, phút, giây, micro giây và tzinfo.
class datetime.datetime
Một sự kết hợp của một ngày và một thời gian. Thuộc tính. năm, tháng, ngày, giờ, phút, giây, micro giây và tzinfo.
class datetime.timedelta
Thời lượng thể hiện sự khác biệt giữa hai phiên bản ngày, giờ hoặc ngày giờ đối với độ phân giải micro giây.
class datetime.tzinfo
Một lớp cơ sở trừu tượng cho các đối tượng thông tin múi giờ. Chúng được sử dụng bởi các lớp ngày giờ và thời gian để cung cấp khái niệm điều chỉnh thời gian có thể tùy chỉnh (ví dụ: để tính múi giờ và/hoặc thời gian tiết kiệm ánh sáng ban ngày).
class datetime.timezone
Một lớp triển khai lớp cơ sở trừu tượng tzinfo dưới dạng phần bù cố định từ UTC

Các đối tượng của các loại này là bất biến

Các đối tượng của loại ngày luôn ngây thơ

Một đối tượng kiểu time hoặc datetime có thể ngây thơ hoặc nhận biết. Một đối tượng datetime d nhận biết nếu d. tzinfo không phải là Không và d. tzinfo. utcoffset(d) không trả về Không có. Nếu d. tzinfo là Không, hoặc nếu d. tzinfo không phải là Không có nhưng d. tzinfo. utcoffset(d) trả về Không, d ngây thơ. Một đối tượng thời gian t nhận thức được nếu t. tzinfo không phải là Không và t. tzinfo. utcoffset(None) không trả về Không có. Nếu không, t là ngây thơ

Sự khác biệt giữa ngây thơ và nhận thức không áp dụng cho các đối tượng timedelta

quan hệ phân lớp

________số 8

ngày giờ. đối tượng múi giờ

Một đối tượng timedelta đại diện cho một khoảng thời gian, sự khác biệt giữa hai ngày hoặc thời gian

class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
Tất cả đối số là tùy chọn và mặc định là 0. Các đối số có thể là số nguyên hoặc số float và có thể dương hoặc âm.

Chỉ ngày, giây và micro giây được lưu trữ nội bộ. Các đối số được chuyển đổi thành các đơn vị đó.

  • Một phần nghìn giây được chuyển đổi thành 1000 micro giây.
  • Một phút được chuyển thành 60 giây
  • Một giờ được chuyển đổi thành 3600 giây
  • Một tuần được chuyển đổi thành bảy ngày
và ngày, giây và micro giây sau đó được chuẩn hóa sao cho biểu diễn là duy nhất, với

  • 0
  • 0 <= seconds < 3600*24 (số giây trong một ngày)
  • -999999999 <= ngày <= 999999999
Nếu bất kỳ đối số nào là số float và có micro giây phân số, thì micro giây phân số còn lại từ tất cả các đối số sẽ được kết hợp và tổng của chúng được làm tròn đến micro giây gần nhất bằng cách sử dụng bộ ngắt kết nối nửa vòng đến chẵn. Nếu không có đối số nào là float, quá trình chuyển đổi và chuẩn hóa là chính xác (không có thông tin nào bị mất).

Nếu giá trị chuẩn hóa của ngày nằm ngoài phạm vi đã chỉ định, giá trị này sẽ được tăng lên.

Lưu ý rằng việc chuẩn hóa các giá trị âm có thể gây ngạc nhiên lúc đầu. Ví dụ:

______10

Thuộc tính lớp là

múi giờ. minĐối tượng timedelta âm nhất, timedelta(-999999999). múi giờ. max Đối tượng timedelta tích cực nhất, timedelta(days=999999999, hours=23, minutes=59, seconds=59, microseconds=999999). múi giờ. độ phân giảiSự khác biệt nhỏ nhất có thể giữa các đối tượng timedelta không bằng nhau, timedelta(micro giây=1)

Lưu ý rằng, do chuẩn hóa, timedelta. tối đa > -timedelta. tối thiểu. -timedelta. max không thể biểu diễn dưới dạng đối tượng timedelta

Thuộc tính phiên bản (chỉ đọc)

Thuộc tính Giá trị ngàyTừ -999999999 đến 999999999 bao gồm giâyTừ 0 đến 86399 bao gồm micro giâyTừ 0 đến 999999 bao gồm

hoạt động được hỗ trợ

OperationResultNote1 = t2 + t3Tổng của t2 và t3. Sau đó t1-t2 == t3 và t1-t3 == t2 là đúng. 1. t1 = t2 - t3 Hiệu của t2 và t3. Sau đó t1 == t2 - t3 và t2 == t1 + t3 là đúng. 1. t1 = t2 * i hoặc t1 = i * t2Delta nhân với một số nguyên. Sau đó t1 // i == t2 là đúng, với điều kiện i. = 0. Nói chung, t1 * i == t1 * (i-1) + t1 là đúng. 1. t1 = t2 * f hoặc t1 = f * t2Delta nhân với số float. Kết quả được làm tròn đến bội số gần nhất của timedelta. độ phân giải sử dụng nửa vòng đến chẵn. f = t2 / t3Chia t2 cho t3. Trả về một đối tượng float. t1 = t2 / f hoặc t1 = t2 / iDelta chia cho số float hoặc int. Kết quả được làm tròn đến bội số gần nhất của timedelta. độ phân giải sử dụng nửa vòng đến chẵn. t1 = t2 // i or t1 = t2 // t3 Sàn nhà được tính và phần còn lại (nếu có) bị vứt đi. Trong trường hợp thứ hai, một số nguyên được trả về. 3. t1 = t2 % t3Phần còn lại được tính như một đối tượng timedelta. 3. q, r = divmod(t1, t2)Tính thương và số dư. q = t1 // t2 và r = t1 % t2. q là một số nguyên và r là một đối tượng timedelta. +t1Trả về một đối tượng timedelta có cùng giá trị. 2. -t1tương đương với timedelta(-t1. ngày, -t1. giây, -t1. micro giây) và đến t1* -1. 1. , 4. abs(t)tương đương với +t khi t. ngày >= 0, và đến -t khi t. ngày < 0. 2. str(t)Trả về một chuỗi ở dạng [D ngày[s], ][H]H. MM. SS[. UUUUUU], trong đó D âm cho t âm. 5. repr(t)Trả về một chuỗi có dạng datetime. timedelta(D[, S[, U]]), trong đó D âm cho t âm. 5

ghi chú

  • Điều này là chính xác, nhưng có thể tràn
  • Điều này là chính xác và không thể tràn
  • Chia cho 0 tăng
  • -timedelta. max không thể biểu diễn dưới dạng đối tượng timedelta
  • Các biểu diễn chuỗi của các đối tượng timedelta được chuẩn hóa tương tự như biểu diễn bên trong của chúng. Điều này dẫn đến kết quả hơi bất thường đối với timedelta âm. Ví dụ
datetime.MAXYEAR
1

Ngoài các hoạt động được liệt kê ở trên, các đối tượng timedelta hỗ trợ một số phép cộng và phép trừ nhất định với các đối tượng ngày và giờ (xem bên dưới)

Thay đổi trong phiên bản 3. 2. Phép chia tầng và phép chia thực sự của một đối tượng timedelta cho một đối tượng timedelta khác hiện được hỗ trợ, cũng như các phép toán còn lại và hàm divmod(). Phép chia và phép nhân thực sự của đối tượng timedelta với đối tượng float hiện được hỗ trợ

So sánh các đối tượng timedelta được hỗ trợ với đối tượng timedelta đại diện cho khoảng thời gian nhỏ hơn được coi là timedelta nhỏ hơn. Để ngăn các so sánh kiểu hỗn hợp quay trở lại so sánh mặc định theo địa chỉ đối tượng, khi một đối tượng timedelta được so sánh với một đối tượng thuộc loại khác, TypeError sẽ được nâng lên trừ khi phép so sánh là == hoặc. =. Các trường hợp sau lần lượt trả về Sai hoặc Đúng

các đối tượng timedelta có thể băm (có thể sử dụng làm khóa từ điển), hỗ trợ chọn lọc hiệu quả và trong ngữ cảnh Boolean, một đối tượng timedelta được coi là đúng khi và chỉ khi nó không bằng timedelta(0)

Phương thức sơ thẩm

datetime.MAXYEAR
2Trả về tổng số giây có trong khoảng thời gian. Tương đương với td/timedelta(giây=1).

Lưu ý rằng trong khoảng thời gian rất lớn (hơn 270 năm trên hầu hết các nền tảng), phương pháp này sẽ mất đi độ chính xác tính bằng micrô giây.
datetime.MAXYEAR
3

ngày giờ. đối tượng ngày tháng

Một đối tượng ngày đại diện cho một ngày (năm, tháng và ngày) trong lịch lý tưởng hóa, lịch Gregorian hiện tại được mở rộng vô thời hạn theo cả hai hướng. Ngày 1 tháng 1 của năm 1 được gọi là ngày 1, ngày 2 tháng 1 của năm 1 được gọi là ngày 2, v.v. Điều này phù hợp với định nghĩa của lịch “proleptic Gregorian” trong cuốn sách Tính toán Lịch của Dershowitz và Reingold, trong đó nó là lịch cơ sở cho tất cả các phép tính. Xem cuốn sách để biết các thuật toán chuyển đổi giữa các thứ tự Gregorian proleptic và các hệ thống lịch khác

datetime.MAXYEAR
4Tất cả đối số là bắt buộc. Các đối số có thể là số nguyên, trong các phạm vi sau.

  • MINYEAR
  • 1 <= tháng <= 12
  • 1 <= ngày <= số ngày trong tháng và năm đã cho
Nếu một đối số bên ngoài các phạm vi được đưa ra, được nâng lên

Các hàm tạo khác, tất cả các phương thức của lớp

datetime.MAXYEAR
5Trả về ngày địa phương tương ứng với dấu thời gian POSIX, chẳng hạn như được trả về theo thời gian. thời gian(). Điều này có thể gây ra lỗi OverflowError, nếu dấu thời gian nằm ngoài phạm vi giá trị được hỗ trợ bởi hàm localtime() của nền tảng C và lỗi localtime(). Điều này thường bị giới hạn trong các năm từ 1970 đến 2038. Lưu ý rằng trên các hệ thống không phải POSIX bao gồm các giây nhuận trong khái niệm dấu thời gian, các giây nhuận sẽ bị bỏ qua bởi fromtimestamp().
datetime.MAXYEAR
6Trả về ngày tương ứng với thứ tự tiên sinh Gregorian, trong đó ngày 1 tháng 1 của năm 1 có thứ tự 1. được nâng lên trừ khi 1 <= thứ tự <= ngày. tối đa. thứ tự (). Đối với bất kỳ ngày d, ngày. từ thường(d. toordinal()) == d

Thuộc tính lớp

ngày tháng. minNgày, ngày có thể biểu thị sớm nhất(MINYEAR, 1, 1). ngày tháng. maxNgày, ngày đại diện mới nhất(MAXYEAR, 12, 31). ngày tháng. độ phân giảiSự khác biệt nhỏ nhất có thể giữa các đối tượng ngày không bằng nhau, timedelta(days=1)

Thuộc tính phiên bản (chỉ đọc)

ngày tháng. nămTừ MINYEAR đến MAXYEAR. ngày tháng. thángTừ 1 đến 12 bao gồm. ngày tháng. ngàyGiữa 1 và số ngày trong tháng nhất định của năm nhất định

hoạt động được hỗ trợ

OperationResultNotesdate2 = date1 + timedeltadate2 là timedelta. ngày ngày bị xóa khỏi ngày1. 1. date2 = date1 - timedeltaTính toán date2 sao cho date2 + timedelta == date1. 2. timedelta = date1 - date2Xem ghi chú 3. 3. date1 < date2date1 được coi là nhỏ hơn date2 khi date1 đứng trước date2 về mặt thời gian

ghi chú

  • date2 được di chuyển về phía trước theo thời gian nếu timedelta. ngày > 0 hoặc lùi lại nếu timedelta. ngày < 0. Sau đó date2 - date1 == timedelta. ngày. múi giờ. giây và timedelta. micro giây bị bỏ qua. được nâng lên nếu date2. năm sẽ nhỏ hơn MINYEAR hoặc lớn hơn MAXYEAR
  • Điều này không hoàn toàn tương đương với date1 + (-timedelta), bởi vì -timedelta trong sự cô lập có thể tràn trong trường hợp date1 - timedelta không. múi giờ. giây và timedelta. micro giây bị bỏ qua
  • Điều này là chính xác và không thể tràn. múi giờ. giây và timedelta. micro giây là 0 và date2 + timedelta == date1 sau
  • Nói cách khác, date1 < date2 khi và chỉ khi date1. toordinal() < date2. thứ tự (). Để ngăn so sánh quay trở lại sơ đồ so sánh địa chỉ đối tượng mặc định, so sánh ngày thường tăng nếu so sánh khác cũng không phải là đối tượng ngày. Tuy nhiên, NotImplemented được trả về thay vào đó nếu bộ so sánh khác có thuộc tính timetuple(). Móc này cung cấp cho các loại đối tượng ngày khác cơ hội thực hiện so sánh kiểu hỗn hợp. Nếu không, khi một đối tượng ngày được so sánh với một đối tượng thuộc loại khác, TypeError sẽ xuất hiện trừ khi phép so sánh là == hoặc. =. Các trường hợp sau lần lượt trả về Sai hoặc Đúng

Ngày có thể được sử dụng làm khóa từ điển. Trong ngữ cảnh Boolean, tất cả các đối tượng ngày được coi là đúng

Phương thức sơ thẩm

datetime.MAXYEAR
7Trả về một ngày có cùng giá trị, ngoại trừ những tham số được cung cấp giá trị mới theo bất kỳ đối số từ khóa nào được chỉ định. Ví dụ: nếu d == ngày (2002, 12, 31), thì d. thay thế (ngày = 26) == ngày (2002, 12, 26).
datetime.MAXYEAR
8Quay lại thời gian. struct_time chẳng hạn như được trả về theo thời gian. giờ địa phương(). Giờ, phút và giây là 0 và cờ DST là -1. đ. timetuple() tương đương với thời gian. struct_time((d. năm, d. tháng, d. ngày, 0, 0, 0, d. ngày trong tuần(), yday, -1)), trong đó yday = d. toordinal () - ngày (d. Năm thứ 11). toordinal() + 1 là số ngày trong năm hiện tại bắt đầu bằng 1 cho ngày 1 tháng 1.
datetime.MAXYEAR
9Trả về thứ tự Gregorian proleptic của ngày, trong đó ngày 1 tháng 1 của năm 1 có thứ tự 1. Đối với bất kỳ đối tượng ngày nào d, ngày. từ thường(d. toordinal()) == d.
class datetime.date
0Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 0 và Chủ Nhật là 6. Ví dụ: ngày(2002, 12, 4). ngày trong tuần() == 2, thứ tư. Xem thêm isoweekday().
class datetime.date
1Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 1 và Chủ Nhật là 7. Ví dụ: ngày(2002, 12, 4). isoweekday() == 3, Thứ Tư. Xem thêm ngày trong tuần(), isocalWiki().
class datetime.date
2Trả về bộ 3, (năm ISO, số tuần ISO, ngày trong tuần ISO).

Lịch ISO là một biến thể được sử dụng rộng rãi của lịch Gregorian. xem http. //www. Nhân Viên. khoa học. ưu. nl/~gent0113/calendar/isocalendar. htm cho một lời giải thích tốt.

Năm ISO bao gồm 52 hoặc 53 tuần đầy đủ và trong đó một tuần bắt đầu vào Thứ Hai và kết thúc vào Chủ Nhật. Tuần đầu tiên của một năm ISO là tuần dương lịch (Gregorian) đầu tiên của một năm có ngày thứ Năm. Đây được gọi là tuần số 1 và năm ISO của ngày thứ Năm đó giống với năm Gregorian của nó.

Ví dụ: năm 2004 bắt đầu vào Thứ Năm, vì vậy tuần đầu tiên của năm ISO 2004 bắt đầu vào Thứ Hai, ngày 29 tháng 12 năm 2003 và kết thúc vào Chủ Nhật, ngày 4 tháng 1 năm 2004, vì vậy ngày đó(2003, 12, . isocalendar() == (2004, 1, 1) và ngày (2004, 1, 4). đẳng lịch() == (2004, 1, 7).
class datetime.date
3Trả về một chuỗi biểu thị ngày ở định dạng ISO 8601, 'YYYY-MM-DD'. Ví dụ, ngày(2002, 12, 4). isoformat() == '2002-12-04'.
class datetime.date
4Đối với ngày d, str(d) tương đương với d. isoformat().
class datetime.date
5Trả về một chuỗi đại diện cho ngày, ví dụ date(2002, 12, 4). ctime() == 'Thứ 4 ngày 4 tháng 12 00. 00. 00 2002'. đ. ctime() tương đương với thời gian. ctime(thời gian. mktime(d. timetuple())) trên các nền tảng có hàm gốc C ctime() (thời gian nào. ctime() gọi, nhưng ngày nào. ctime() không gọi) phù hợp với tiêu chuẩn C.
class datetime.date
6Trả về một chuỗi đại diện cho ngày, được kiểm soát bởi một chuỗi định dạng rõ ràng. Mã định dạng đề cập đến giờ, phút hoặc giây xem 0 giá trị. Để biết danh sách đầy đủ các chỉ thị định dạng, hãy xem hành vi strftime() và strptime().
class datetime.date
7Giống như ngày. strftime(). Điều này giúp có thể chỉ định chuỗi định dạng cho đối tượng ngày tháng khi sử dụng str. định dạng(). Để biết danh sách đầy đủ các chỉ thị định dạng, hãy xem hành vi strftime() và strptime().

Ví dụ về đếm số ngày đến một sự kiện

class datetime.date
8

Ví dụ làm việc với ngày tháng

class datetime.date
9

ngày giờ. đối tượng ngày giờ

Đối tượng datetime là một đối tượng duy nhất chứa tất cả thông tin từ đối tượng ngày và đối tượng thời gian. Giống như một đối tượng ngày, datetime giả sử lịch Gregorian hiện tại được mở rộng theo cả hai hướng;

Người xây dựng

class datetime.time
0Các đối số năm, tháng và ngày là bắt buộc. tzinfo có thể là Không có hoặc một thể hiện của lớp con tzinfo. Các đối số còn lại có thể là số nguyên, trong các khoảng sau.

  • MINYEAR
  • 1 <= tháng <= 12
  • 1 <= ngày <= số ngày trong tháng và năm đã cho
  • 0 <= giờ < 24
  • 0 <= phút < 60
  • 0 <= giây < 60
  • 0 <= micro giây < 1000000
Nếu một đối số bên ngoài các phạm vi được đưa ra, được nâng lên

Các hàm tạo khác, tất cả các phương thức của lớp

class datetime.time
1Trả về thời gian địa phương hiện tại, với tzinfo Không có. Điều này tương đương với datetime. fromtimestamp(thời gian. thời gian()). Xem thêm now(), fromtimestamp().
class datetime.time
2Trả về ngày giờ địa phương hiện tại. Nếu đối số tùy chọn tz là Không có hoặc không được chỉ định, thì điều này giống như hôm nay (), nhưng, nếu có thể, cung cấp độ chính xác cao hơn mức có thể nhận được khi trải qua một khoảng thời gian. time() dấu thời gian (ví dụ: điều này có thể thực hiện được trên các nền tảng cung cấp chức năng C gettimeofday()).

Nếu không thì tz phải là một thể hiện của một lớp con tzinfo, và ngày giờ hiện tại được chuyển đổi thành múi giờ của tz. Trong trường hợp này, kết quả tương đương với tz. fromutc(ngày giờ. utcnow(). thay thế (tzinfo=tz)). Xem thêm hôm nay(), utcnow().
class datetime.time
3Trả về ngày và giờ UTC hiện tại, với tzinfo Không có. Điều này giống như now(), nhưng trả về ngày và giờ UTC hiện tại, dưới dạng một đối tượng thời gian ngây thơ. Có thể nhận được thời gian UTC hiện tại đã biết bằng cách gọi datetime. bây giờ (múi giờ. utc). Xem thêm ngay bây giờ().
class datetime.time
4Trả về ngày và giờ địa phương tương ứng với dấu thời gian POSIX, chẳng hạn như được trả về theo thời gian. thời gian(). Nếu đối số tùy chọn tz là Không có hoặc không được chỉ định, thì dấu thời gian được chuyển đổi thành ngày và giờ cục bộ của nền tảng và đối tượng ngày giờ được trả về là ngây thơ.

Nếu không thì tz phải là một thể hiện của lớp con tzinfo và dấu thời gian được chuyển thành múi giờ của tz. Trong trường hợp này, kết quả tương đương với tz. fromutc(ngày giờ. utcfromtimestamp(dấu thời gian). thay thế (tzinfo=tz)).

fromtimestamp() có thể tăng , nếu dấu thời gian nằm ngoài phạm vi giá trị được các hàm localtime() hoặc gmtime() của nền tảng C hỗ trợ và lỗi localtime() hoặc gmtime(). Điều này thường bị giới hạn trong các năm từ 1970 đến 2038. Lưu ý rằng trên các hệ thống không phải POSIX bao gồm giây nhuận trong khái niệm dấu thời gian, giây nhuận bị bỏ qua bởi fromtimestamp(), và sau đó có thể có hai dấu thời gian khác nhau một giây tạo ra các đối tượng ngày giờ giống hệt nhau. Xem thêm utcfromtimestamp().

Đã thay đổi trong phiên bản 3. 3. Tăng thay vì nếu dấu thời gian nằm ngoài phạm vi giá trị được hỗ trợ bởi các hàm localtime() hoặc gmtime() của nền tảng C. Tăng thay vì lỗi localtime() hoặc gmtime().
class datetime.time
5Trả về ngày giờ UTC tương ứng với dấu thời gian POSIX, với tzinfo Không có. Điều này có thể tăng , nếu dấu thời gian nằm ngoài phạm vi giá trị được hỗ trợ bởi hàm gmtime() của nền tảng C và khi gmtime() gặp lỗi. Điều này thường bị giới hạn trong các năm từ 1970 đến 2038. Xem thêm fromtimestamp().

Trên nền tảng tuân thủ POSIX, utcfromtimestamp(dấu thời gian) tương đương với biểu thức sau.

______36
class datetime.time
7Trả về ngày giờ tương ứng với thứ tự Gregorian tiên sinh, trong đó ngày 1 tháng 1 của năm 1 có thứ tự 1. được nâng lên trừ khi 1

Thuộc tính lớp

ngày giờ. minNgày giờ, ngày giờ có thể biểu thị sớm nhất(MINYEAR, 1, 1, tzinfo=None). ngày giờ. maxNgày giờ, ngày giờ có thể biểu thị mới nhất(MAXYEAR, 12, 31, 23, 59, 59, 999999, tzinfo=None). ngày giờ. độ phân giảiSự khác biệt nhỏ nhất có thể giữa các đối tượng ngày giờ không bằng nhau, timedelta(microseconds=1)

Thuộc tính phiên bản (chỉ đọc)

ngày giờ. nămTừ MINYEAR đến MAXYEAR. ngày giờ. thángTừ 1 đến 12 bao gồm. ngày giờ. ngàyGiữa 1 và số ngày trong tháng nhất định của năm nhất định. ngày giờ. hourIn range(24). ngày giờ. phútTrong phạm vi(60). ngày giờ. giâyTrong phạm vi(60). ngày giờ. micro giâyTrong phạm vi(1000000). ngày giờ. tzinfoĐối tượng được truyền dưới dạng đối số tzinfo cho hàm tạo datetime hoặc Không có nếu không có đối số nào được truyền

hoạt động được hỗ trợ

OperationResultdatetime2 = datetime1 + timedelta1. datetime2 = datetime1 - timedelta2. timedelta = datetime1 - datetime23. datetime1 < datetime2So sánh datetime với datetime;
  • datetime2 là khoảng thời gian của timedelta bị xóa khỏi datetime1, tiến về phía trước nếu timedelta. ngày > 0 hoặc lùi lại nếu timedelta. ngày < 0. Kết quả có thuộc tính tzinfo giống như thời gian đầu vào và datetime2 - datetime1 == timedelta sau. được nâng lên nếu datetime2. năm sẽ nhỏ hơn MINYEAR hoặc lớn hơn MAXYEAR. Lưu ý rằng không có điều chỉnh múi giờ nào được thực hiện ngay cả khi đầu vào là một đối tượng nhận biết
  • Tính datetime2 sao cho datetime2 + timedelta == datetime1. Ngoài ra, kết quả có thuộc tính tzinfo giống như ngày giờ đầu vào và không có điều chỉnh múi giờ nào được thực hiện ngay cả khi đầu vào biết. Điều này không hoàn toàn tương đương với datetime1 + (-timedelta), bởi vì -timedelta trong sự cô lập có thể tràn trong trường hợp datetime1 - timedelta không
  • Việc trừ một ngày giờ từ một ngày giờ chỉ được xác định nếu cả hai toán hạng đều ngây thơ hoặc nếu cả hai đều biết. Nếu một người biết và người kia ngây thơ, TypeError sẽ xuất hiện.

    Nếu cả hai đều ngây thơ hoặc cả hai đều biết và có cùng thuộc tính tzinfo, thì thuộc tính tzinfo sẽ bị bỏ qua và kết quả là một đối tượng timedelta t sao cho datetime2 + t == datetime1. Không có điều chỉnh múi giờ nào được thực hiện trong trường hợp này.

    Nếu cả hai đều nhận biết và có các thuộc tính tzinfo khác nhau, thì a-b hoạt động như thể a và b lần đầu tiên được chuyển đổi thành thời gian biểu UTC ngây thơ trước. Kết quả là (a. thay thế (tzinfo=Không) - a. utcoffset()) - (b. thay thế (tzinfo=Không) - b. utcoffset()) ngoại trừ việc triển khai không bao giờ bị tràn.
  • datetime1 được coi là nhỏ hơn datetime2 khi datetime1 trước datetime2 về thời gian.

    Nếu một bộ so sánh ngây thơ và bộ kia nhận thức được, thì TypeError sẽ xuất hiện nếu cố gắng so sánh đơn hàng. Để so sánh bình đẳng, các trường hợp ngây thơ không bao giờ bằng các trường hợp nhận thức.

    Nếu cả hai đối tượng so sánh đều biết và có cùng thuộc tính tzinfo, thuộc tính tzinfo chung sẽ bị bỏ qua và thời gian dữ liệu cơ sở được so sánh. Nếu cả hai bộ so sánh đều nhận biết và có các thuộc tính tzinfo khác nhau, thì các bộ so sánh trước tiên được điều chỉnh bằng cách trừ đi độ lệch UTC của chúng (thu được từ self. utcoffset()).

    Lưu ý. Để ngăn việc so sánh quay trở lại lược đồ so sánh địa chỉ đối tượng mặc định, so sánh ngày giờ thường tăng TypeError nếu đối tượng so sánh khác cũng không phải là đối tượng ngày giờ. Tuy nhiên, thay vào đó, được trả về nếu bộ so sánh khác có thuộc tính timetuple(). Móc này cung cấp cho các loại đối tượng ngày khác cơ hội thực hiện so sánh kiểu hỗn hợp. Nếu không, khi một đối tượng datetime được so sánh với một đối tượng thuộc loại khác, TypeError sẽ xuất hiện trừ khi phép so sánh là == hoặc. =. Các trường hợp sau lần lượt trả về Sai hoặc Đúng.

các đối tượng datetime có thể được sử dụng làm khóa từ điển. Trong bối cảnh Boolean, tất cả các đối tượng ngày giờ được coi là đúng

Phương thức sơ thẩm

class datetime.datetime
0Trả về đối tượng ngày có cùng năm, tháng và ngày.
class datetime.datetime
1Trả về đối tượng thời gian có cùng giờ, phút, giây và micro giây. tzinfo là Không có. Xem thêm phương thức timetz().
class datetime.datetime
2Trả về đối tượng thời gian có cùng thuộc tính giờ, phút, giây, micro giây và tzinfo. Xem thêm phương pháp time().
class datetime.datetime
3Trả về một ngày giờ với các thuộc tính giống nhau, ngoại trừ những thuộc tính được cung cấp giá trị mới theo bất kỳ đối số từ khóa nào được chỉ định. Lưu ý rằng tzinfo=None có thể được chỉ định để tạo một ngày giờ ngây thơ từ một ngày giờ đã biết mà không chuyển đổi dữ liệu ngày và giờ.
class datetime.datetime
4Trả về một đối tượng datetime với thuộc tính tzinfo mới tz, điều chỉnh dữ liệu ngày và giờ để kết quả có cùng thời gian UTC với chính nó, nhưng theo giờ địa phương của tz.

Nếu được cung cấp, tz phải là một thể hiện của lớp con tzinfo và các phương thức utcoffset() và dst() của nó không được trả về Không có. bản thân phải nhận thức được (bản thân. tzinfo không được là Không, và tự. utcoffset() không được trả về Không có).

Nếu được gọi mà không có đối số (hoặc với tz=None) thì múi giờ địa phương của hệ thống được giả định. Thuộc tính tzinfo của phiên bản datetime đã chuyển đổi sẽ được đặt thành phiên bản múi giờ với tên vùng và phần bù thu được từ HĐH.

Nếu bản thân. tzinfo là tz, tự. astimezone(tz) bằng chính mình. không thực hiện điều chỉnh dữ liệu ngày hoặc giờ. Mặt khác, kết quả là giờ địa phương ở múi giờ tz, biểu thị cùng thời gian UTC với chính mình. sau astz = dt. múi giờ astz(tz), astz - astz. utcoffset() thường sẽ có cùng dữ liệu ngày và giờ với dt - dt. utcoffset(). Cuộc thảo luận về lớp tzinfo giải thích các trường hợp tại các ranh giới chuyển tiếp Giờ tiết kiệm ánh sáng ban ngày mà điều này không thể đạt được (một vấn đề chỉ xảy ra nếu tz mô hình hóa cả thời gian tiêu chuẩn và thời gian ban ngày).

Nếu bạn chỉ muốn đính kèm một đối tượng múi giờ tz vào một datetime dt mà không điều chỉnh dữ liệu ngày và giờ, hãy sử dụng dt. thay thế (tzinfo=tz). Nếu bạn chỉ muốn xóa đối tượng múi giờ khỏi dt datetime nhận biết mà không chuyển đổi dữ liệu ngày và giờ, hãy sử dụng dt. thay thế (tzinfo=Không có).

Lưu ý rằng tzinfo mặc định. phương thức fromutc() có thể được ghi đè trong lớp con tzinfo để ảnh hưởng đến kết quả được trả về bởi astimezone(). Bỏ qua các trường hợp lỗi, astimezone() hoạt động như.

______45_______46Nếu tzinfo là Không, trả về Không, nếu không thì tự trả về. tzinfo. utcoffset(self) và đưa ra một ngoại lệ nếu cái sau không trả về Không có hoặc một đối tượng timedelta đại diện cho một số nguyên phút có độ lớn nhỏ hơn một ngày.
class datetime.datetime
7Nếu tzinfo là Không, trả về Không, nếu không thì tự trả về. tzinfo. dst(self) và đưa ra một ngoại lệ nếu cái sau không trả về Không có hoặc một đối tượng timedelta đại diện cho một số nguyên phút có độ lớn nhỏ hơn một ngày.
class datetime.datetime
8Nếu tzinfo là Không, trả về Không, nếu không thì tự trả về. tzinfo. tzname(self), đưa ra một ngoại lệ nếu cái sau không trả về Không hoặc một đối tượng chuỗi.
class datetime.datetime
9Trở lại một thời gian. struct_time chẳng hạn như được trả về theo thời gian. giờ địa phương(). đ. timetuple() tương đương với thời gian. struct_time((d. năm, d. tháng, d. ngày, d. giờ, d. phút, d. thứ hai, d. ngày trong tuần(), yday, dst)), trong đó yday = d. toordinal () - ngày (d. Năm thứ 11). toordinal() + 1 là số ngày trong năm hiện tại bắt đầu bằng 1 cho ngày 1 tháng 1. Cờ tm_isdst của kết quả được đặt theo phương thức dst(). tzinfo là Không có hoặc dst() trả về Không có, tm_isdst được đặt thành -1; .
class datetime.timedelta
0Nếu ví dụ datetime d là ngây thơ, thì điều này cũng giống như d. timetuple() ngoại trừ việc tm_isdst bị buộc về 0 bất kể d là gì. dst() trả về. DST không bao giờ có hiệu lực trong thời gian UTC.

Nếu d biết, d được chuẩn hóa thành thời gian UTC, bằng cách trừ d. utcoffset(), và một thời gian. struct_time cho thời gian chuẩn hóa được trả về. tm_isdst bị buộc thành 0. Lưu ý rằng có thể xảy ra lỗi OverflowError nếu d. năm là MINYEAR hoặc MAXYEAR và điều chỉnh UTC vượt qua ranh giới năm.
class datetime.timedelta
1Trả lại thứ tự Gregorian proleptic của ngày. Cũng giống như bản thân. ngày tháng(). thứ tự ().
class datetime.timedelta
2Trả lại dấu thời gian POSIX tương ứng với phiên bản datetime. Giá trị trả về là một số float tương tự như giá trị được trả về theo thời gian. thời gian().

Các phiên bản datetime ngây thơ được giả định là đại diện cho giờ địa phương và phương pháp này dựa vào hàm mktime() của nền tảng C để thực hiện chuyển đổi. Vì datetime hỗ trợ phạm vi giá trị rộng hơn mktime() trên nhiều nền tảng, nên phương thức này có thể gây ra lỗi OverflowError cho những thời điểm xa trong quá khứ hoặc xa trong tương lai.

Đối với các trường hợp thời gian đã biết, giá trị trả về được tính như sau.

class datetime.timedelta
3
class datetime.timedelta
4Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 0 và Chủ nhật là 6. Cũng giống như bản thân. ngày tháng(). ngày trong tuần(). Xem thêm isoweekday().
class datetime.timedelta
5Trả về ngày trong tuần dưới dạng số nguyên, trong đó Thứ Hai là 1 và Chủ Nhật là 7. Cũng giống như bản thân. ngày tháng(). isoweekday(). Xem thêm ngày trong tuần(), isocalWiki().
class datetime.timedelta
6Trả về 3 bộ, (năm ISO, số tuần ISO, ngày trong tuần ISO). Cũng giống như bản thân. ngày tháng(). isocalendar().
class datetime.timedelta
7Trả về một chuỗi biểu thị ngày và giờ ở định dạng ISO 8601, YYYY-MM-DDTHH. MM. SS. mmmmmm hoặc, nếu micro giây là 0, YYYY-MM-DDTHH. MM. SS

Nếu utcoffset() không trả về Không có, một chuỗi 6 ký tự sẽ được thêm vào, cung cấp phần bù UTC theo giờ và phút (đã ký). YYYY-MM-DDTHH. MM. SS. mmmmmm+HH. MM hoặc, nếu micro giây là 0, YYYY-MM-DDTHH. MM. SS+HH. MM

Đối số tùy chọn sep (mặc định là 'T') là dấu phân tách một ký tự, được đặt giữa phần ngày và giờ của kết quả. Ví dụ:

______58
class datetime.timedelta
9Đối với trường hợp ngày giờ d, str(d) tương đương với d. isoformat(' ').
class datetime.tzinfo
0Trả về một chuỗi biểu thị ngày và giờ, ví dụ datetime(2002, 12, 4, 20, 30, 40). ctime() == 'Thứ tư ngày 4 tháng 12 năm 20. 30. 40 2002'. đ. ctime() tương đương với thời gian. ctime(thời gian. mktime(d. timetuple())) trên các nền tảng có hàm gốc C ctime() (thời gian nào. ctime() gọi, nhưng datetime nào. ctime() không gọi) phù hợp với tiêu chuẩn C.
class datetime.tzinfo
1Trả về một chuỗi đại diện cho ngày và giờ, được kiểm soát bởi một chuỗi định dạng rõ ràng. Để biết danh sách đầy đủ các chỉ thị định dạng, hãy xem hành vi strftime() và strptime().
class datetime.tzinfo
2Giống như ngày giờ. strftime(). Điều này cho phép chỉ định chuỗi định dạng cho đối tượng ngày giờ khi sử dụng str. định dạng(). Để biết danh sách đầy đủ các chỉ thị định dạng, hãy xem hành vi strftime() và strptime().

Ví dụ làm việc với đối tượng datetime

class datetime.tzinfo
3

Sử dụng datetime với tzinfo

class datetime.tzinfo
4

ngày giờ. thời gian

Đối tượng thời gian biểu thị thời gian trong ngày (cục bộ), không phụ thuộc vào bất kỳ ngày cụ thể nào và có thể điều chỉnh thông qua đối tượng tzinfo

class datetime.tzinfo
5Tất cả các đối số là tùy chọn. tzinfo có thể là Không có hoặc một thể hiện của lớp con tzinfo. Các đối số còn lại có thể là số nguyên, trong các khoảng sau.

  • 0
  • 0 <= phút < 60
  • 0 <= giây < 60
  • 0 <= micro giây < 1000000
Nếu một đối số bên ngoài các phạm vi đó được đưa ra, ValueError sẽ được nâng lên. Tất cả mặc định là 0 ngoại trừ tzinfo, mặc định là Không có

Thuộc tính lớp

thời gian. minThời gian biểu diễn sớm nhất, time(0, 0, 0, 0). thời gian. maxThời gian biểu thị mới nhất, thời gian(23, 59, 59, 999999). thời gian. độ phân giảiSự khác biệt nhỏ nhất có thể giữa các đối tượng thời gian không bằng nhau, timedelta(micro giây=1), mặc dù lưu ý rằng các đối tượng thời gian số học không được hỗ trợ

Thuộc tính phiên bản (chỉ đọc)

thời gian. hourIn range(24). thời gian. phútTrong phạm vi(60). thời gian. giâyTrong phạm vi(60). thời gian. micro giâyTrong phạm vi(1000000). thời gian. tzinfoĐối tượng được truyền dưới dạng đối số tzinfo cho hàm tạo thời gian hoặc Không có nếu không có đối số nào được truyền

hoạt động được hỗ trợ

  • so sánh thời gian với thời gian, trong đó a được coi là nhỏ hơn b khi a đứng trước b về thời gian. Nếu một người so sánh ngây thơ và người kia nhận thức được, TypeError sẽ xuất hiện nếu cố gắng so sánh đơn hàng. Để so sánh bình đẳng, các trường hợp ngây thơ không bao giờ bằng các trường hợp nhận thức.

    Nếu cả hai đối tượng so sánh đều biết và có cùng thuộc tính tzinfo, thuộc tính tzinfo chung sẽ bị bỏ qua và thời gian cơ sở được so sánh. Nếu cả hai bộ so sánh đều nhận biết và có các thuộc tính tzinfo khác nhau, thì các bộ so sánh trước tiên được điều chỉnh bằng cách trừ đi độ lệch UTC của chúng (thu được từ self. utcoffset()). Để ngăn các so sánh kiểu hỗn hợp quay trở lại so sánh mặc định theo địa chỉ đối tượng, khi một đối tượng thời gian được so sánh với một đối tượng thuộc loại khác, TypeError sẽ xuất hiện trừ khi phép so sánh là == hoặc. =. Các trường hợp sau lần lượt trả về Sai hoặc Đúng.
  • băm, sử dụng như khóa dict
  • "pickling" hiệu quả (tuần tự hóa đối tượng)
  • trong bối cảnh Boolean, một đối tượng thời gian được coi là đúng khi và chỉ khi, sau khi chuyển đổi nó thành phút và trừ đi utcoffset() (hoặc 0 nếu đó là Không), kết quả là khác không

Phương thức sơ thẩm

class datetime.tzinfo
6Trả về thời gian có cùng giá trị, ngoại trừ các thuộc tính được cung cấp giá trị mới theo bất kỳ đối số từ khóa nào được chỉ định. Lưu ý rằng tzinfo=None có thể được chỉ định để tạo thời gian ngây thơ từ thời điểm nhận biết mà không cần chuyển đổi dữ liệu thời gian.
class datetime.tzinfo
7Trả về một chuỗi biểu thị thời gian ở định dạng ISO 8601, HH. MM. SS. mmmmmm hoặc, nếu tự. micro giây là 0, HH. MM. SS. Nếu utcoffset() không trả về Không có, thì một chuỗi 6 ký tự sẽ được thêm vào, cung cấp phần bù UTC theo giờ và phút (đã ký). hộ. MM. SS. mmmmmm+HH. MM hoặc, nếu tự. micro giây là 0, HH. MM. SS+HH. MM
class datetime.tzinfo
8Trong thời gian t, str(t) tương đương với t. isoformat().
class datetime.tzinfo
9Trả về một chuỗi đại diện cho thời gian, được kiểm soát bởi một chuỗi định dạng rõ ràng. Để biết danh sách đầy đủ các chỉ thị định dạng, hãy xem hành vi strftime() và strptime().
class datetime.timezone
0Giống như thời gian. strftime(). Điều này cho phép chỉ định chuỗi định dạng cho đối tượng thời gian khi sử dụng str. định dạng(). Để biết danh sách đầy đủ các chỉ thị định dạng, hãy xem hành vi strftime() và strptime().
class datetime.timezone
1Nếu tzinfo là Không, trả về Không, nếu không thì tự trả về. tzinfo. utcoffset(None) và đưa ra một ngoại lệ nếu cái sau không trả về Không hoặc một đối tượng timedelta đại diện cho một số phút có độ lớn nhỏ hơn một ngày.
class datetime.timezone
2Nếu tzinfo là Không, trả về Không, nếu không thì tự trả về. tzinfo. dst(None) và đưa ra một ngoại lệ nếu cái sau không trả về Không có hoặc một đối tượng timedelta đại diện cho một số phút có độ lớn nhỏ hơn một ngày.
class datetime.timezone
3Nếu tzinfo là Không, trả về Không, nếu không thì tự trả về. tzinfo. tzname(None) hoặc đưa ra một ngoại lệ nếu cái sau không trả về Không hoặc một đối tượng chuỗi

Ví dụ

class datetime.timezone
4

ngày giờ. Đối tượng tzinfo

tzinfo là một lớp cơ sở trừu tượng, có nghĩa là lớp này không được khởi tạo trực tiếp. Bạn cần lấy được một lớp con cụ thể và (ít nhất) cung cấp các triển khai của các phương thức tzinfo tiêu chuẩn cần thiết cho các phương thức datetime mà bạn sử dụng. Mô-đun datetime cung cấp một lớp con cụ thể đơn giản của múi giờ tzinfo có thể biểu thị các múi giờ có độ lệch cố định từ UTC, chẳng hạn như chính UTC hoặc EST và EDT của Bắc Mỹ

Một thể hiện của (một lớp con cụ thể của) tzinfo có thể được chuyển đến các hàm tạo cho các đối tượng ngày giờ và thời gian. Các đối tượng thứ hai xem các thuộc tính của chúng là theo giờ địa phương và đối tượng tzinfo hỗ trợ các phương thức tiết lộ phần bù giờ địa phương từ UTC, tên của múi giờ và phần bù DST, tất cả đều liên quan đến đối tượng ngày hoặc giờ được truyền cho chúng

Yêu cầu đặc biệt đối với dưa chua. Một lớp con tzinfo phải có một phương thức __init__() có thể được gọi mà không có đối số, nếu không, nó có thể được chọn nhưng có thể không được giải nén lại. Đây là yêu cầu kỹ thuật có thể nới lỏng trong tương lai

Một lớp con cụ thể của tzinfo có thể cần triển khai các phương thức sau. Chính xác những phương pháp nào là cần thiết phụ thuộc vào việc sử dụng các đối tượng datetime đã biết. Nếu nghi ngờ, hãy thực hiện tất cả chúng

class datetime.timezone
5

Trả về phần bù của giờ địa phương từ UTC, tính bằng phút về phía đông của UTC. Nếu giờ địa phương ở phía tây của UTC, điều này sẽ là âm. Lưu ý rằng đây được dự định là tổng phần bù từ UTC; . Nếu không biết phần bù UTC, hãy trả về Không có. Mặt khác, giá trị được trả về phải là một đối tượng timedelta chỉ định toàn bộ số phút trong phạm vi -1439 đến 1439 (1440 = 24*60; độ lớn của phần bù phải nhỏ hơn một ngày). Hầu hết các triển khai của utcoffset() có thể sẽ giống như một trong hai

class datetime.timezone
6

Nếu utcoffset() không trả về Không, thì dst() cũng không trả về Không. Việc triển khai mặc định của utcoffset() làm tăng NotImplementedError

class datetime.timezone
7

Trả lại điều chỉnh giờ mùa hè (DST), tính bằng phút về phía đông của UTC hoặc Không có nếu thông tin DST không được biết. Trả về timedelta(0) nếu DST không có hiệu lực. Nếu DST có hiệu lực, hãy trả về phần bù dưới dạng đối tượng timedelta (xem utcoffset() để biết chi tiết). Lưu ý rằng phần bù DST, nếu có, đã được thêm vào phần bù UTC được trả về bởi utcoffset(), do đó, không cần tham khảo dst() trừ khi bạn muốn nhận thông tin DST riêng. Ví dụ, ngày giờ. timetuple() gọi phương thức dst() của thuộc tính tzinfo để xác định cách đặt cờ tm_isdst và tzinfo. fromutc() gọi dst() để tính đến các thay đổi của DST khi vượt qua các múi giờ

Một thể hiện tz của lớp con tzinfo mô hình hóa cả thời gian tiêu chuẩn và thời gian ban ngày phải nhất quán theo nghĩa này

class datetime.timezone
8

phải trả về cùng một kết quả cho mọi datetime dt với dt. tzinfo == tz Đối với các lớp con tzinfo lành mạnh, biểu thức này mang lại "độ lệch chuẩn" của múi giờ, không phụ thuộc vào ngày hoặc giờ mà chỉ phụ thuộc vào vị trí địa lý. Việc thực hiện datetime. astimezone() dựa vào điều này, nhưng không thể phát hiện vi phạm; . Nếu một lớp con tzinfo không thể đảm bảo điều này, thì nó có thể ghi đè lên cài đặt mặc định của tzinfo. fromutc() hoạt động chính xác với astimezone() bất kể

Hầu hết các triển khai của dst() có thể sẽ giống như một trong hai

class datetime.timezone
9

hoặc

object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
0

Việc triển khai mặc định của dst() làm tăng NotImplementedError

object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
1

Trả về tên múi giờ tương ứng với đối tượng datetime dt, dưới dạng một chuỗi. Không có gì về tên chuỗi được xác định bởi mô-đun datetime và không có yêu cầu nào về ý nghĩa cụ thể của nó. Ví dụ: “GMT”, “UTC”, “-500”, “-5. 00”, “EDT”, “US/Eastern”, “America/New York” đều là những câu trả lời hợp lệ. Trả về Không nếu tên chuỗi không được biết. Lưu ý rằng đây chủ yếu là một phương thức chứ không phải là một chuỗi cố định vì một số lớp con tzinfo sẽ muốn trả về các tên khác nhau tùy thuộc vào giá trị cụ thể của dt được truyền, đặc biệt nếu lớp tzinfo chiếm thời gian ban ngày

Việc triển khai mặc định của tzname() làm tăng NotImplementedError

Các phương thức này được gọi bởi một đối tượng ngày giờ hoặc thời gian, để đáp lại các phương thức cùng tên của chúng. Đối tượng datetime chuyển chính nó làm đối số và đối tượng time chuyển Không làm đối số. Do đó, các phương thức của lớp con tzinfo nên được chuẩn bị để chấp nhận đối số dt là Không có hoặc của lớp datetime

Khi Không được thông qua, người thiết kế lớp sẽ quyết định phản hồi tốt nhất. Ví dụ: trả về Không là phù hợp nếu lớp muốn nói rằng các đối tượng thời gian không tham gia vào các giao thức tzinfo. Có thể hữu ích hơn khi utcoffset(None) trả về phần bù UTC tiêu chuẩn, vì không có quy ước nào khác để khám phá phần bù tiêu chuẩn

Khi một đối tượng datetime được truyền để phản hồi một phương thức datetime, dt. tzinfo là đối tượng giống như self. các phương thức tzinfo có thể dựa vào điều này, trừ khi mã người dùng gọi trực tiếp các phương thức tzinfo. Mục đích là các phương thức tzinfo diễn giải dt theo giờ địa phương và không cần lo lắng về các đối tượng trong các múi giờ khác

Có một phương thức tzinfo nữa mà một lớp con có thể muốn ghi đè

object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
2Cái này được gọi từ ngày giờ mặc định. triển khai astimezone(). Khi được gọi từ đó, dt. tzinfo là chính nó và dữ liệu ngày và giờ của dt được xem là thể hiện thời gian UTC. Mục đích của fromutc() là điều chỉnh dữ liệu ngày và giờ, trả về một ngày giờ tương đương theo giờ địa phương của chính bạn.

Hầu hết các lớp con tzinfo đều có thể kế thừa triển khai fromutc() mặc định mà không gặp sự cố. Nó đủ mạnh để xử lý các múi giờ có độ lệch cố định và các múi giờ chiếm cả thời gian tiêu chuẩn và thời gian ban ngày và cả thời gian sau ngay cả khi thời gian chuyển đổi DST khác nhau trong các năm khác nhau. Một ví dụ về múi giờ mà việc triển khai defawill nult fromutc() có thể không xử lý chính xác trong mọi trường hợp là trường hợp mà độ lệch tiêu chuẩn (từ UTC) phụ thuộc vào ngày và giờ cụ thể đã trôi qua, điều đó có thể xảy ra vì lý do chính trị. Việc triển khai mặc định của astimezone() và fromutc() có thể không tạo ra kết quả như bạn muốn nếu kết quả là một trong những giờ nằm ​​giữa thời điểm bù trừ tiêu chuẩn thay đổi.

Bỏ qua mã cho các trường hợp lỗi, triển khai fromutc() mặc định hoạt động như.

______83

Ví dụ các lớp tzinfo

object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
4

Lưu ý rằng có những sự tinh tế không thể tránh khỏi hai lần mỗi năm trong phân lớp tzinfo chiếm cả thời gian tiêu chuẩn và thời gian ban ngày, tại các điểm chuyển tiếp DST. Để cụ thể, hãy xem xét Miền Đông Hoa Kỳ (UTC -0500), nơi EDT bắt đầu sau 1 phút. 59 (EST) vào Chủ nhật thứ hai của tháng 3 và kết thúc vào phút sau 1. 59 (EDT) vào Chủ nhật đầu tiên của tháng 11

object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
5

Khi DST bắt đầu (dòng “bắt đầu”), đồng hồ treo tường địa phương nhảy từ 1. 59 đến 3. 00. Một bức tường thời gian của mẫu 2. MM không thực sự có ý nghĩa vào ngày đó, vì vậy múi giờ astime(Eastern) sẽ không mang lại kết quả với giờ == 2 vào ngày DST bắt đầu. Để astimezone() đảm bảo điều này, tzinfo. phương thức dst() phải xem xét thời gian trong “giờ mất tích” (2. MM cho phương Đông) vào ban ngày

Khi DST kết thúc (dòng “kết thúc”), có khả năng xảy ra sự cố tồi tệ hơn. có một giờ không thể đánh vần rõ ràng theo giờ địa phương. giờ cuối cùng của thời gian ban ngày. Ở phương Đông, đó là thời gian của mẫu 5. MM UTC vào ngày thời gian ban ngày kết thúc. Đồng hồ treo tường địa phương nhảy từ 1. 59 (thời gian ban ngày) trở lại 1. 00 (giờ chuẩn) lại. Giờ địa phương của mẫu 1. MM không rõ ràng. astimezone() bắt chước hành vi của đồng hồ địa phương bằng cách ánh xạ hai giờ UTC liền kề vào cùng một giờ địa phương sau đó. Trong ví dụ phương Đông, thời gian UTC có dạng 5. MM và 6. MM cả ánh xạ tới 1. MM khi chuyển đổi sang phương Đông. Để astimezone() đảm bảo điều này, tzinfo. phương thức dst() phải coi thời gian trong “giờ lặp lại” là thời gian tiêu chuẩn. Điều này được sắp xếp dễ dàng, như trong ví dụ, bằng cách biểu thị thời gian chuyển đổi DST theo giờ địa phương tiêu chuẩn của múi giờ

Các ứng dụng không thể chịu được sự mơ hồ như vậy nên tránh sử dụng các lớp con tzinfo lai;

ngày giờ. đối tượng múi giờ

Lớp múi giờ là một lớp con của tzinfo, mỗi phiên bản đại diện cho một múi giờ được xác định bởi phần bù cố định từ UTC. Lưu ý rằng các đối tượng của lớp này không thể được sử dụng để biểu thị thông tin múi giờ ở những vị trí sử dụng các độ lệch khác nhau trong các ngày khác nhau trong năm hoặc khi các thay đổi lịch sử đã được thực hiện đối với thời gian dân sự

object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
6Đối số offset phải được chỉ định làm đối tượng timedelta thể hiện sự khác biệt giữa giờ địa phương và UTC. Nó phải hoàn toàn nằm giữa -timedelta(hours=24) và timedelta(hours=24) và đại diện cho một số nguyên của phút, nếu không thì ValueError sẽ tăng lên.

Đối số tên là tùy chọn. Nếu được chỉ định, nó phải là một chuỗi được sử dụng làm giá trị được trả về bởi phương thức tzname(dt). Mặt khác, tzname(dt) trả về một chuỗi 'UTCsHH. MM’, trong đó s là dấu hiệu của phần bù, HH và MM là hai chữ số của phần bù. giờ và bù đắp. phút tương ứng.
object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
7Trả về giá trị cố định được chỉ định khi tạo phiên bản múi giờ. Đối số dt bị bỏ qua. Giá trị trả về là một trường hợp timedelta bằng với sự khác biệt giữa giờ địa phương và UTC.
object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
8Trả về giá trị cố định được chỉ định khi tạo phiên bản múi giờ hoặc một chuỗi 'UTCsHH. MM’, trong đó s là dấu hiệu của phần bù, HH và MM là hai chữ số của phần bù. giờ và bù đắp. phút tương ứng.
object
    timedelta
    tzinfo
        timezone
    time
    date
        datetime
9Luôn trả về Không có.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
0Trả dt + offset. Đối số dt phải là một phiên bản thời gian nhận biết, với tzinfo được đặt thành self.

Thuộc tính lớp

class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
1Múi giờ UTC, múi giờ(timedelta(0))

hành vi strftime() và strptime()

tất cả các đối tượng date, datetime và time đều hỗ trợ phương thức strftime(format) để tạo một chuỗi biểu thị thời gian dưới sự kiểm soát của một chuỗi định dạng rõ ràng. Nói rộng ra, đ. strftime(fmt) hoạt động giống như thời gian của mô-đun thời gian. strftime(fmt, d. timetuple()) mặc dù không phải tất cả các đối tượng đều hỗ trợ phương thức timetuple()

Ngược lại, ngày giờ. Phương thức lớp strptime() tạo một đối tượng datetime từ một chuỗi đại diện cho ngày và giờ và một chuỗi định dạng tương ứng. ngày giờ. strptime(date_string, format) tương đương với datetime(*(time. strptime(chuỗi ngày, định dạng)[0. 6]))

Đối với các đối tượng thời gian, không nên sử dụng các mã định dạng cho năm, tháng và ngày vì các đối tượng thời gian không có các giá trị như vậy. Nếu chúng được sử dụng, 1900 được thay thế cho năm và 1 cho tháng và ngày

Đối với các đối tượng ngày tháng, không nên sử dụng các mã định dạng giờ, phút, giây và micro giây vì các đối tượng ngày tháng không có các giá trị như vậy. Nếu chúng được sử dụng, 0 được thay thế cho chúng

Toàn bộ mã định dạng được hỗ trợ khác nhau giữa các nền tảng, bởi vì Python gọi hàm strftime() của thư viện C của nền tảng và các biến thể nền tảng là phổ biến. Để xem toàn bộ mã định dạng được hỗ trợ trên nền tảng của bạn, hãy tham khảo tài liệu strftime

Sau đây là danh sách tất cả các mã định dạng mà tiêu chuẩn C (phiên bản 1989) yêu cầu và chúng hoạt động trên tất cả các nền tảng có triển khai C tiêu chuẩn. Lưu ý rằng phiên bản 1999 của tiêu chuẩn C đã thêm các mã định dạng bổ sung

DirectiveMeaningExampleNotes%aWeekday là tên viết tắt của ngôn ngữ. Sun mon,. , Sat (en_US);
Vì vậy, Mo,. , Sa (de_DE)1. %AWeekday là tên đầy đủ của ngôn ngữ. Chủ nhật thứ hai,. , Thứ bảy (en_US);
Sonntag, Montag,. , Samstag (de_DE)1. %wWeekday dưới dạng số thập phân, trong đó 0 là Chủ nhật và 6 là Thứ bảy. 0, 1,. , 6%ngày trong tháng dưới dạng số thập phân không đệm. 01, 02,. , 31%bMonth là tên viết tắt của ngôn ngữ. Tháng một, tháng hai,. , Dec (en_US);
Jan, Feb,. , Dez (de_DE)1. %BMonth là tên đầy đủ của ngôn ngữ. Tháng một tháng hai,. , Tháng 12 (en_US);
Tháng 1, Tháng 2,. , Tháng mười hai (de_DE)1. %mMonth dưới dạng số thập phân không đệm. 01, 02,. , 12%năm không có thế kỷ dưới dạng số thập phân không đệm. 00, 01,. , 99%Năm với thế kỷ dưới dạng số thập phân. 0001, 0002,. , 2013, 2014,. , 9998, 99992. %HHour (đồng hồ 24 giờ) dưới dạng số thập phân không đệm. 00, 01,. , 23%IHour (đồng hồ 12 giờ) dưới dạng số thập phân không đệm. 01, 02,. , 12%pLocale tương đương với AM hoặc PM. AM, PM (en_US);
am, pm (de_DE)1. , 3. %MMinute dưới dạng số thập phân không đệm. 00, 01,. , 59%SSThứ hai dưới dạng số thập phân không đệm. 00, 01,. , 594. %fMicrosecond dưới dạng số thập phân, không đệm ở bên trái. 000000, 000001,. , 9999995. Phần bù %zUTC ở dạng +HHMM hoặc -HHMM (chuỗi trống nếu đối tượng là ngây thơ). (trống), +0000, -0400, +10306. %Timezone name (chuỗi trống nếu đối tượng ngây thơ). (trống), UTC, EST, CST%jNgày của năm dưới dạng số thập phân không đệm. 001, 002,. , 366%UWeek số của năm (Chủ nhật là ngày đầu tiên của tuần) dưới dạng số thập phân không đệm. Tất cả các ngày trong một năm mới trước Chủ nhật đầu tiên được coi là trong tuần 0. 00, 01,. , 537. %Số tuần của năm (Thứ hai là ngày đầu tiên của tuần) dưới dạng số thập phân. Tất cả các ngày trong năm mới trước ngày thứ Hai đầu tiên được coi là trong tuần 0. 00, 01,. , 537. Đại diện ngày và giờ thích hợp của %cLocale. Thứ ba 16 tháng 8 21. 30. 00 1988 (en_US);
Ngày 16 tháng 8, 21. 30. 00 1988 (de_DE)1. Đại diện ngày thích hợp của %xLocale. 16/08/88 (Không có);
16/08/1988 (en_US);
16. 08. 1988 (de_DE)1. Biểu diễn thời gian thích hợp của %XLocale. 21. 30. 00 (en_US);
21. 30. 00 (de_DE)1. %%Một ký tự '%' theo nghĩa đen. %

ghi chú

  • Vì định dạng phụ thuộc vào ngôn ngữ hiện tại nên cần cẩn thận khi đưa ra các giả định về giá trị đầu ra. Thứ tự trường khác nhau (ví dụ: “tháng/ngày/năm” so với “ngày/tháng/năm”) và đầu ra có thể chứa các ký tự Unicode được mã hóa bằng cách sử dụng mã hóa mặc định của ngôn ngữ (ví dụ: nếu ngôn ngữ hiện tại là ja_JP, thì mặc định . getlocale() để xác định mã hóa của ngôn ngữ hiện tại)
  • Phương thức strptime() có thể phân tích các năm trong phạm vi [1, 9999] đầy đủ, nhưng các năm < 1000 phải được điền bằng 0 cho chiều rộng 4 chữ số
  • Khi được sử dụng với phương thức strptime(), lệnh %p chỉ ảnh hưởng đến trường giờ đầu ra nếu lệnh %I được sử dụng để phân tích giờ
  • Không giống như mô-đun thời gian, mô-đun ngày giờ không hỗ trợ giây nhuận
  • Khi được sử dụng với phương thức strptime(), lệnh %f chấp nhận từ một đến sáu chữ số và số không ở bên phải. %f là một phần mở rộng cho tập hợp các ký tự định dạng trong tiêu chuẩn C (nhưng được triển khai riêng trong các đối tượng ngày giờ và do đó luôn có sẵn)
  • Đối với một đối tượng ngây thơ, mã định dạng %z và %Z được thay thế bằng các chuỗi rỗng. Đối với một đối tượng nhận thức. %z. utcoffset() được chuyển đổi thành một chuỗi 5 ký tự có dạng +HHMM hoặc -HHMM, trong đó HH là chuỗi 2 chữ số cho biết số giờ bù giờ UTC và MM là chuỗi 2 chữ số cho biết số giờ bù giờ UTC . Ví dụ: nếu utcoffset() trả về timedelta(hours=-3, minutes=-30), %z được thay thế bằng chuỗi '-0330'.

    %Z. Nếu tzname() trả về Không, %Z được thay thế bằng một chuỗi rỗng. Mặt khác, %Z được thay thế bằng giá trị trả về, phải là một chuỗi.
  • Khi được sử dụng với phương thức strptime(), %U và %W chỉ được sử dụng trong các phép tính khi ngày trong tuần và năm được chỉ định

Lịch. làm việc với ngày dương lịch

Mô-đun này cho phép bạn xuất lịch như chương trình Unix cal và cung cấp thêm các chức năng hữu ích liên quan đến lịch. Theo mặc định, các lịch này có Thứ Hai là ngày đầu tiên trong tuần và Chủ nhật là ngày cuối cùng (quy ước của Châu Âu). Sử dụng setfirstweekday() để đặt ngày đầu tuần thành Chủ nhật (6) hoặc bất kỳ ngày nào khác trong tuần. Các tham số chỉ định ngày được đưa ra dưới dạng số nguyên. Đối với chức năng liên quan, xem thêm mô-đun ngày giờ và thời gian

Hầu hết các chức năng và lớp này dựa trên mô-đun datetime sử dụng lịch được lý tưởng hóa, lịch Gregorian hiện tại được mở rộng theo cả hai hướng. Điều này phù hợp với định nghĩa của lịch "proleptic Gregorian"

class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
2Tạo đối tượng Lịch. firstweekday là một số nguyên xác định ngày đầu tuần. 0 là thứ hai (mặc định), 6 là chủ nhật.

Đối tượng Lịch cung cấp một số phương thức có thể được sử dụng để chuẩn bị dữ liệu lịch cho định dạng. Lớp này không tự thực hiện bất kỳ định dạng nào. Đây là công việc của các lớp con.

Phiên bản lịch có các phương pháp sau

class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
3Trả về một trình vòng lặp cho các số ngày trong tuần sẽ được sử dụng trong một tuần. Giá trị đầu tiên từ iterator sẽ giống với giá trị của thuộc tính firstweekday.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
4Trả về một iterator cho tháng tháng (1-12) trong năm năm. Trình lặp này trả về tất cả các ngày (dưới dạng datetime. đối tượng ngày tháng) cho tháng và tất cả các ngày trước khi bắt đầu tháng hoặc sau khi kết thúc tháng bắt buộc phải có một tuần đầy đủ.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
5Trả về một iterator cho tháng tháng trong năm năm tương tự như itermonthdates(). Các ngày được trả về sẽ là các bộ dữ liệu bao gồm số ngày và số ngày trong tuần.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
6Trả về một iterator cho tháng tháng trong năm năm tương tự như itermonthdates(). Ngày trả về sẽ là số ngày.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
7Trả về danh sách các tuần trong tháng tháng của năm dưới dạng tuần đầy đủ. Tuần là danh sách bảy ngày giờ. đối tượng ngày tháng.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
8Trả về danh sách các tuần trong tháng tháng của năm dưới dạng tuần đầy đủ. Tuần là danh sách bảy bộ số ngày và số thứ trong tuần.
class datetime.timedelta(days=0,  seconds=0,  microseconds=0,  milliseconds=0,  minutes=0,  hours=0,  weeks=0)
9Trả về danh sách các tuần trong tháng tháng của năm dưới dạng tuần đầy đủ. Tuần là danh sách bảy số ngày.
datetime.MAXYEAR
00Trả lại dữ liệu cho năm đã chỉ định sẵn sàng để định dạng. Giá trị trả về là danh sách các hàng tháng. Mỗi hàng tháng chứa tối đa chiều rộng tháng (mặc định là 3). Mỗi tháng có từ 4 đến 6 tuần và mỗi tuần có 1–7 ngày. Ngày là ngày giờ. đối tượng ngày tháng.
datetime.MAXYEAR
01Trả lại dữ liệu cho năm đã chỉ định sẵn sàng để định dạng (tương tự như yeardatescalendar()). Các mục nhập trong danh sách tuần là bộ số ngày và số ngày trong tuần. Số ngày bên ngoài tháng này là số không.
datetime.MAXYEAR
02Trả lại dữ liệu cho năm đã chỉ định sẵn sàng để định dạng (tương tự như yeardatescalendar()). Các mục trong danh sách tuần là số ngày. Số ngày bên ngoài tháng này là số không

Lịch. Lớp Văn bản Lịch

datetime.MAXYEAR
03Lớp này có thể tạo lịch văn bản thuần túy

Các phiên bản TextCalendar có các phương thức sau

datetime.MAXYEAR
04Trả về lịch của một tháng trong một chuỗi nhiều dòng. Nếu w được cung cấp, nó chỉ định chiều rộng của các cột ngày, được căn giữa. Nếu l được đưa ra, nó chỉ định số dòng mỗi tuần sử dụng. Phụ thuộc vào ngày trong tuần đầu tiên như được chỉ định trong hàm tạo hoặc được đặt bởi phương thức setfirstweekday().
datetime.MAXYEAR
05In lịch của một tháng được trả về bởi formatmonth().
datetime.MAXYEAR
06Trả về lịch m-cột cho cả năm dưới dạng chuỗi nhiều dòng. Các tham số tùy chọn w, l và c lần lượt dành cho chiều rộng cột ngày, số dòng mỗi tuần và số khoảng cách giữa các cột tháng. Phụ thuộc vào ngày trong tuần đầu tiên như được chỉ định trong hàm tạo hoặc được đặt bởi phương thức setfirstweekday(). Năm sớm nhất có thể tạo lịch phụ thuộc vào nền tảng.
datetime.MAXYEAR
07In lịch cả năm được trả về bởi formatyear()

Lịch. Lớp Lịch HTML

datetime.MAXYEAR
08Lớp này có thể tạo lịch HTML

Các phiên bản HTMLCalendar có các phương thức sau

datetime.MAXYEAR
09Trả lại lịch của một tháng dưới dạng bảng HTML. Nếu withyear là true thì năm sẽ được đưa vào tiêu đề, nếu không thì chỉ tên tháng sẽ được sử dụng.
datetime.MAXYEAR
10Trả lại lịch của một năm dưới dạng bảng HTML. chiều rộng (mặc định là 3) chỉ định số tháng trên mỗi hàng.
datetime.MAXYEAR
11Trả lịch một năm dưới dạng trang HTML hoàn chỉnh. chiều rộng (mặc định là 3) chỉ định số tháng trên mỗi hàng. css là tên của biểu định kiểu xếp tầng sẽ được sử dụng. Không ai có thể được thông qua nếu không sử dụng biểu định kiểu. Mã hóa chỉ định mã hóa sẽ được sử dụng cho đầu ra (mặc định là mã hóa mặc định của hệ thống).
datetime.MAXYEAR
12Lớp con này của TextCalendar có thể được truyền tên ngôn ngữ trong hàm tạo và trả về tên tháng và ngày trong tuần ở ngôn ngữ đã chỉ định. Nếu ngôn ngữ này bao gồm mã hóa, tất cả các chuỗi chứa tên tháng và ngày trong tuần sẽ được trả về dưới dạng unicode.
datetime.MAXYEAR
13Lớp con này của HTMLCalendar có thể được chuyển tên ngôn ngữ trong hàm tạo và trả về tên tháng và ngày trong tuần ở ngôn ngữ đã chỉ định. Nếu ngôn ngữ này bao gồm mã hóa, tất cả các chuỗi chứa tên tháng và ngày trong tuần sẽ được trả về dưới dạng unicode

Ghi chú. Các phương thức formatweekday() và formatmonthname() của hai lớp này tạm thời thay đổi ngôn ngữ hiện tại thành ngôn ngữ đã cho. Vì ngôn ngữ hiện tại là cài đặt toàn quy trình nên chúng không an toàn cho luồng

chức năng lịch

Đối với lịch văn bản đơn giản, mô-đun lịch cung cấp các chức năng sau

datetime.MAXYEAR
14Đặt ngày trong tuần (0 là Thứ Hai, 6 là Chủ Nhật) để bắt đầu mỗi tuần. Các giá trị THỨ HAI, THỨ BA, THỨ TƯ, THỨ NĂM, THỨ SÁU, THỨ BẢY và CHỦ NHẬT được cung cấp để thuận tiện. Ví dụ: để đặt ngày trong tuần đầu tiên thành Chủ nhật.

______115
datetime.MAXYEAR
16Trả về cài đặt hiện tại cho ngày trong tuần bắt đầu mỗi tuần.
datetime.MAXYEAR
17Trả về True nếu năm là năm nhuận, nếu không thì False.
datetime.MAXYEAR
18Trả về số năm nhuận trong phạm vi từ y1 đến y2 (không bao gồm), trong đó y1 và y2 là năm.

Hàm này hoạt động cho các phạm vi kéo dài một thế kỷ thay đổi.
datetime.MAXYEAR
19Trả về ngày trong tuần (0 là Thứ Hai) cho năm (1970–. ), tháng (1–12), ngày (1–31).
datetime.MAXYEAR
20Trả về tiêu đề chứa tên các ngày trong tuần được viết tắt. N chỉ định độ rộng tính bằng ký tự cho một ngày trong tuần.
datetime.MAXYEAR
21Trả về ngày trong tuần của ngày đầu tiên trong tháng và số ngày trong tháng, cho năm và tháng đã chỉ định.
datetime.MAXYEAR
22Trả về ma trận đại diện cho lịch của một tháng. Mỗi hàng đại diện cho một tuần; . Mỗi tuần bắt đầu bằng Thứ Hai trừ khi được đặt bởi setfirstweekday().
datetime.MAXYEAR
23In lịch của một tháng như được trả về theo tháng().
datetime.MAXYEAR
24Trả về lịch của một tháng trong một chuỗi nhiều dòng bằng cách sử dụng định dạngmonth() của lớp TextCalendar.
datetime.MAXYEAR
25In lịch cả năm được trả về bởi calendar().
datetime.MAXYEAR
26Trả về lịch 3 cột cho cả năm dưới dạng chuỗi nhiều dòng bằng cách sử dụng định dạngyear() của lớp TextCalendar.
datetime.MAXYEAR
27Một hàm không liên quan nhưng tiện dụng, lấy một bộ thời gian, chẳng hạn như được trả về bởi hàm gmtime() trong mô-đun thời gian và trả về giá trị dấu thời gian Unix tương ứng, giả sử một kỷ nguyên là năm 1970 và mã hóa POSIX. Trên thực tế, thời gian. gmtime() và timegm() là nghịch đảo của nhau.

Mô-đun lịch xuất các thuộc tính dữ liệu sau

datetime.MAXYEAR
28Một mảng đại diện cho các ngày trong tuần ở miền địa phương hiện tại.
datetime.MAXYEAR
29Một mảng đại diện cho các ngày trong tuần được viết tắt ở ngôn ngữ hiện tại.
datetime.MAXYEAR
30Một mảng đại diện cho các tháng trong năm ở miền địa phương hiện tại. Điều này tuân theo quy ước thông thường của tháng 1 là tháng số 1, vì vậy nó có độ dài là 13 và month_name[0] là chuỗi rỗng.
datetime.MAXYEAR
31Một mảng đại diện cho các tháng viết tắt của năm ở miền địa phương hiện tại. Điều này tuân theo quy ước thông thường của tháng 1 là tháng số 1, vì vậy nó có độ dài là 13 và month_abbr[0] là chuỗi rỗng

bộ sưu tập. kiểu dữ liệu vùng chứa

Mô-đun này triển khai các kiểu dữ liệu bộ chứa chuyên dụng cung cấp các lựa chọn thay thế cho các bộ chứa, dict, list, set và tuple tích hợp sẵn cho mục đích chung của Python

bộ sưu tập. Đối tượng ChainMap

Một lớp ChainMap được cung cấp để nhanh chóng liên kết nhiều ánh xạ để chúng có thể được coi là một đơn vị duy nhất. Nó thường nhanh hơn nhiều so với việc tạo một từ điển mới và chạy nhiều lệnh gọi update()

Lớp này có thể mô phỏng các phạm vi lồng nhau và rất hữu ích trong việc tạo khuôn mẫu

datetime.MAXYEAR
32A ChainMap nhóm nhiều ký tự hoặc ánh xạ khác lại với nhau để tạo một chế độ xem duy nhất, có thể cập nhật. Nếu không có bản đồ nào được chỉ định, một từ điển trống duy nhất sẽ được cung cấp để một chuỗi mới luôn có ít nhất một bản đồ.

Các ánh xạ cơ bản được lưu trữ trong một danh sách. Danh sách đó là công khai và có thể được truy cập hoặc cập nhật bằng thuộc tính bản đồ. Không có trạng thái nào khác.

Tra cứu liên tục tìm kiếm các ánh xạ bên dưới cho đến khi tìm thấy khóa. Ngược lại, ghi, cập nhật và xóa chỉ hoạt động trên ánh xạ đầu tiên.

ChainMap kết hợp các ánh xạ cơ bản theo tham chiếu. Vì vậy, nếu một trong những ánh xạ cơ bản được cập nhật, những thay đổi đó sẽ được phản ánh trong ChainMap.

Tất cả các phương thức từ điển thông thường đều được hỗ trợ. Ngoài ra, còn có một thuộc tính bản đồ, một phương thức để tạo các ngữ cảnh con mới và một thuộc tính để truy cập tất cả trừ ánh xạ đầu tiên.

datetime.MAXYEAR
33Một danh sách ánh xạ có thể cập nhật của người dùng. Danh sách được sắp xếp từ tìm kiếm đầu tiên đến tìm kiếm cuối cùng. Đây là trạng thái được lưu trữ duy nhất và có thể được sửa đổi để thay đổi ánh xạ nào được tìm kiếm. Danh sách phải luôn chứa ít nhất một ánh xạ.
datetime.MAXYEAR
34Trả về một ChainMap mới chứa một bản đồ mới, theo sau là tất cả các bản đồ trong phiên bản hiện tại. Nếu m được chỉ định, nó sẽ trở thành bản đồ mới ở đầu danh sách các ánh xạ; . new_child() tương đương với. ChainMap({}, *d. bản đồ). Phương pháp này được sử dụng để tạo các ngữ cảnh con có thể được cập nhật mà không làm thay đổi giá trị trong bất kỳ ánh xạ gốc nào.
datetime.MAXYEAR
35Property trả về một ChainMap mới chứa tất cả các bản đồ trong phiên bản hiện tại ngoại trừ bản đồ đầu tiên. Điều này hữu ích cho việc bỏ qua bản đồ đầu tiên trong tìm kiếm. Các trường hợp sử dụng tương tự như các trường hợp đối với từ khóa nonlocal được sử dụng trong các phạm vi lồng nhau. Các trường hợp sử dụng cũng song song với các trường hợp sử dụng hàm super() tích hợp. Một tham chiếu đến d. cha mẹ tương đương với. ChainMap(*d. bản đồ[1. ])

bộ sưu tập. Các ví dụ và công thức ChainMap

Phần này cho thấy các cách tiếp cận khác nhau để làm việc với bản đồ chuỗi

Ví dụ mô phỏng chuỗi tra cứu nội bộ của Python

datetime.MAXYEAR
36

Ví dụ về việc cho phép các đối số dòng lệnh do người dùng chỉ định được ưu tiên hơn các biến môi trường, các biến này sẽ được ưu tiên hơn các giá trị mặc định

datetime.MAXYEAR
37

Các mẫu ví dụ để sử dụng lớp ChainMap để mô phỏng các bối cảnh lồng nhau

datetime.MAXYEAR
38

Lớp ChainMap chỉ thực hiện các cập nhật (ghi và xóa) đối với ánh xạ đầu tiên trong chuỗi trong khi tra cứu tìm kiếm toàn bộ chuỗi. Tuy nhiên, nếu muốn ghi và xóa sâu, có thể dễ dàng tạo một lớp con cập nhật các khóa được tìm thấy sâu hơn trong chuỗi

datetime.MAXYEAR
39

bộ sưu tập. đối tượng truy cập

Một công cụ truy cập được cung cấp để hỗ trợ kiểm đếm thuận tiện và nhanh chóng. Ví dụ

datetime.MAXYEAR
40
datetime.MAXYEAR
41A Counter là lớp con dict để đếm các đối tượng có thể băm. Nó là một bộ sưu tập không có thứ tự trong đó các phần tử được lưu trữ dưới dạng khóa từ điển và số lượng của chúng được lưu trữ dưới dạng giá trị từ điển. Số lượng được phép là bất kỳ giá trị số nguyên nào kể cả số không hoặc số âm. Lớp Counter tương tự như túi hoặc nhiều lớp trong các ngôn ngữ khác

Các phần tử được tính từ một lần lặp hoặc được khởi tạo từ một ánh xạ (hoặc bộ đếm) khác

datetime.MAXYEAR
42

Các đối tượng bộ đếm có giao diện từ điển ngoại trừ việc chúng trả về số 0 cho các mục bị thiếu thay vì tăng KeyError

datetime.MAXYEAR
43

Đặt số đếm thành 0 không xóa phần tử khỏi bộ đếm. Sử dụng del để loại bỏ nó hoàn toàn

datetime.MAXYEAR
44

Các đối tượng truy cập hỗ trợ ba phương thức ngoài những phương thức có sẵn cho tất cả các từ điển

datetime.MAXYEAR
45Trả lại một trình vòng lặp qua các phần tử lặp lại mỗi phần tử nhiều lần bằng số lượng của nó. Các phần tử được trả về theo thứ tự tùy ý. Nếu số lượng của một phần tử nhỏ hơn một, các phần tử () sẽ bỏ qua nó.

______146
datetime.MAXYEAR
47Trả về danh sách n phần tử phổ biến nhất và số lượng của chúng từ phổ biến nhất đến ít nhất. Nếu n không được chỉ định, most_common() trả về tất cả các phần tử trong bộ đếm. Các phần tử có số lượng bằng nhau được sắp xếp tùy ý.

______148
datetime.MAXYEAR
49Các phần tử được trừ khỏi một lần lặp hoặc từ một ánh xạ (hoặc bộ đếm) khác. thích chính tả. update() nhưng trừ đi số lượng thay vì thay thế chúng. Cả đầu vào và đầu ra có thể bằng 0 hoặc âm.

______150

Các phương thức từ điển thông thường có sẵn cho các đối tượng Bộ đếm ngoại trừ hai phương thức hoạt động khác nhau đối với bộ đếm

datetime.MAXYEAR
51Phương thức lớp này không được triển khai cho các đối tượng Bộ đếm.
datetime.MAXYEAR
52Các phần tử được tính từ một lần lặp hoặc phần bổ sung từ một ánh xạ (hoặc bộ đếm) khác. thích chính tả. update() nhưng thêm số lượng thay vì thay thế chúng. Ngoài ra, iterable dự kiến ​​​​là một chuỗi các phần tử, không phải là một chuỗi các cặp (khóa, giá trị)

Các mẫu phổ biến để làm việc với các đối tượng Counter

datetime.MAXYEAR
53

Một số phép toán được cung cấp để kết hợp các đối tượng Bộ đếm để tạo ra nhiều bộ (bộ đếm có số lượng lớn hơn 0). Phép cộng và phép trừ kết hợp các bộ đếm bằng cách cộng hoặc trừ số lượng các phần tử tương ứng. Giao lộ và liên kết trả lại số lượng tối thiểu và tối đa tương ứng. Mỗi hoạt động có thể chấp nhận đầu vào có số lượng đã ký, nhưng đầu ra sẽ loại trừ các kết quả có số lượng bằng 0 hoặc ít hơn

datetime.MAXYEAR
54

Phép cộng và phép trừ đơn vị là các phím tắt để cộng một bộ đếm trống hoặc trừ một bộ đếm trống

datetime.MAXYEAR
55

Ghi chú. Bộ đếm chủ yếu được thiết kế để hoạt động với các số nguyên dương để biểu thị số lượng đang chạy; . Để trợ giúp với các trường hợp sử dụng đó, phần này ghi lại các hạn chế về phạm vi và loại tối thiểu

  • Bản thân lớp Counter là một lớp con từ điển không có giới hạn về khóa và giá trị của nó. Các giá trị được dự định là các số đại diện cho số lượng, nhưng bạn có thể lưu trữ bất kỳ thứ gì trong trường giá trị
  • Phương thức most_common() chỉ yêu cầu các giá trị có thể sắp xếp được
  • Đối với các hoạt động tại chỗ, chẳng hạn như c[key] += 1, loại giá trị chỉ cần hỗ trợ cộng và trừ. Vì vậy, phân số, số thực và số thập phân sẽ hoạt động và các giá trị âm được hỗ trợ. Điều này cũng đúng với cập nhật () và trừ () cho phép các giá trị âm và 0 cho cả đầu vào và đầu ra
  • Các phương thức multiset chỉ được thiết kế cho các trường hợp sử dụng có giá trị dương. Các đầu vào có thể âm hoặc bằng 0, nhưng chỉ các đầu ra có giá trị dương mới được tạo. Không có hạn chế về loại, nhưng loại giá trị cần hỗ trợ cộng, trừ và so sánh
  • Phương thức phần tử () yêu cầu số nguyên. Nó bỏ qua số không và số âm

bộ sưu tập. đối tượng deque

datetime.MAXYEAR
56Trả về một đối tượng deque mới được khởi tạo từ trái sang phải (sử dụng ) với dữ liệu từ iterable. Nếu iterable không được chỉ định, deque mới trống.

Deques là sự tổng quát hóa của ngăn xếp và hàng đợi (tên được phát âm là “bộ bài” và là viết tắt của “hàng đợi hai đầu”). Deques hỗ trợ nối thêm và bật hiệu quả bộ nhớ, an toàn cho luồng từ hai bên của deque với hiệu suất O(1) xấp xỉ như nhau theo cả hai hướng.

Mặc dù các đối tượng danh sách hỗ trợ các thao tác tương tự, nhưng chúng được tối ưu hóa cho các thao tác có độ dài cố định nhanh và phát sinh chi phí di chuyển bộ nhớ O(n) cho các thao tác pop(0) và insert(0, v) làm thay đổi cả hai .

Nếu maxlen không được chỉ định hoặc là Không có, deques có thể phát triển đến độ dài tùy ý. Mặt khác, deque được giới hạn ở độ dài tối đa được chỉ định. Khi deque có độ dài giới hạn đầy, khi các mục mới được thêm vào, một số mục tương ứng sẽ bị loại bỏ ở đầu đối diện. Bounded length deques cung cấp chức năng tương tự như bộ lọc đuôi trong Unix. Chúng cũng hữu ích để theo dõi các giao dịch và các nhóm dữ liệu khác chỉ quan tâm đến hoạt động gần đây nhất.

Các đối tượng Deque hỗ trợ các phương thức sau

datetime.MAXYEAR
57Thêm x vào bên phải của deque.
datetime.MAXYEAR
58Thêm x vào bên trái của deque.
datetime.MAXYEAR
59Xóa tất cả các phần tử khỏi deque để lại nó với độ dài 0.
datetime.MAXYEAR
60Đếm số phần tử deque bằng x.
datetime.MAXYEAR
61Mở rộng phía bên phải của deque bằng cách nối thêm các phần tử từ đối số có thể lặp lại.
datetime.MAXYEAR
62Mở rộng phía bên trái của deque bằng cách nối thêm các phần tử từ iterable. Lưu ý, chuỗi nối trái dẫn đến đảo ngược thứ tự các phần tử trong đối số có thể lặp lại.
datetime.MAXYEAR
63Xóa và trả lại một phần tử từ phía bên phải của deque. Nếu không có phần tử nào, sẽ tăng IndexError.
datetime.MAXYEAR
64Xóa và trả lại một phần tử từ phía bên trái của deque. Nếu không có phần tử nào, sẽ tăng IndexError.
datetime.MAXYEAR
65Đã xóa lần xuất hiện đầu tiên của giá trị. Nếu không tìm thấy, tăng một.
datetime.MAXYEAR
66Đảo ngược các phần tử của deque tại chỗ và sau đó trả về Không có.
datetime.MAXYEAR
67Xoay n bước deque sang phải. Nếu n âm, xoay sang trái. Xoay một bước sang phải tương đương với. đ. appendleft(d. nhạc pop())

Các đối tượng Deque cũng cung cấp một thuộc tính chỉ đọc

datetime.MAXYEAR
68Kích thước tối đa của một deque hoặc Không có nếu không bị chặn

Ngoài những điều trên, deques hỗ trợ lặp lại, tẩy, len(d), đảo ngược(d), sao chép. bản sao (d), bản sao. deepcopy(d), thử nghiệm tư cách thành viên với toán tử in và tham chiếu chỉ số dưới như d[-1]. Truy cập được lập chỉ mục là O(1) ở cả hai đầu nhưng chậm lại thành O(n) ở giữa. Để truy cập ngẫu nhiên nhanh, hãy sử dụng danh sách thay thế

Ví dụ

datetime.MAXYEAR
69

bộ sưu tập. công thức nấu ăn

Phần này cho thấy các cách tiếp cận khác nhau để làm việc với deques

Bounded length deques cung cấp chức năng tương tự như bộ lọc đuôi trong Unix

datetime.MAXYEAR
70

Một cách tiếp cận khác để sử dụng deques là duy trì một chuỗi các phần tử được thêm gần đây bằng cách thêm vào bên phải và bật ra bên trái

datetime.MAXYEAR
71

Phương thức rotate() cung cấp một cách để thực hiện cắt và xóa deque. Ví dụ: một triển khai Python thuần túy của del d[n] dựa vào phương thức rotate() để định vị các phần tử sẽ được bật lên

datetime.MAXYEAR
72

Để thực hiện cắt deque, hãy sử dụng một cách tiếp cận tương tự áp dụng rotate() để đưa phần tử đích sang phía bên trái của deque. Xóa các mục cũ bằng popleft(), thêm các mục mới bằng extension(), sau đó đảo ngược vòng quay. Với các biến thể nhỏ trong cách tiếp cận đó, thật dễ dàng thực hiện các thao tác ngăn xếp theo phong cách Forth như dup, drop, swap, over, pick, rot và roll

bộ sưu tập. đối tượng defaultdict

datetime.MAXYEAR
73Trả về một đối tượng giống từ điển mới. defaultdict là một lớp con của lớp dict tích hợp. Nó ghi đè một phương thức và thêm một biến thể hiện có thể ghi. Các chức năng còn lại giống như đối với lớp dict và không được ghi lại ở đây.

Đối số đầu tiên cung cấp giá trị ban đầu cho thuộc tính default_factory; . Tất cả các đối số còn lại được xử lý giống như khi chúng được chuyển đến hàm tạo dict, bao gồm cả các đối số từ khóa.

các đối tượng defaultdict hỗ trợ phương thức sau ngoài các thao tác dict tiêu chuẩn

datetime.MAXYEAR
74Nếu thuộc tính default_factory là Không, điều này sẽ tạo ra một ngoại lệ với đối số là khóa.

Nếu default_factory không phải là Không có, thì nó được gọi mà không có đối số để cung cấp giá trị mặc định cho khóa đã cho, giá trị này được chèn vào từ điển cho khóa và được trả về.

Nếu gọi default_factory tạo ra một ngoại lệ thì ngoại lệ này sẽ được phổ biến không thay đổi.

Phương thức này được gọi bởi phương thức __getitem__() của lớp dict khi không tìm thấy khóa được yêu cầu; .

Lưu ý rằng __missing__() không được gọi cho bất kỳ thao tác nào ngoài __getitem__(). Điều này có nghĩa là get(), giống như các từ điển thông thường, sẽ trả về Không làm giá trị mặc định thay vì sử dụng default_factory.

các đối tượng defaultdict hỗ trợ biến đối tượng sau

datetime.MAXYEAR
75Thuộc tính này được sử dụng bởi phương thức __missing__();

bộ sưu tập. defaultdict Các ví dụ

Sử dụng danh sách làm default_factory, thật dễ dàng để nhóm một chuỗi các cặp khóa-giá trị thành một từ điển danh sách

datetime.MAXYEAR
76

Khi mỗi khóa được tìm thấy lần đầu tiên, nó chưa có trong ánh xạ; . Danh sách. append() sau đó gắn giá trị vào danh sách mới. Khi gặp lại các phím, quá trình tra cứu sẽ diễn ra bình thường (trả về danh sách cho phím đó) và danh sách. hoạt động append() thêm một giá trị khác vào danh sách. Kỹ thuật này đơn giản và nhanh hơn so với kỹ thuật tương đương sử dụng dict. thiết lập mặc định ()

datetime.MAXYEAR
77

Đặt default_factory thành int làm cho defaultdict hữu ích để đếm (như túi hoặc nhiều bộ trong các ngôn ngữ khác)

datetime.MAXYEAR
78

Khi một chữ cái được tìm thấy lần đầu tiên, nó bị thiếu trong ánh xạ, vì vậy hàm default_factory gọi int() để cung cấp số lượng mặc định bằng 0. Sau đó, thao tác tăng dần sẽ tạo số lượng cho mỗi chữ cái

Hàm int() luôn trả về 0 là trường hợp đặc biệt của hàm hằng. Một cách nhanh hơn và linh hoạt hơn để tạo các hàm hằng là sử dụng hàm lambda có thể cung cấp bất kỳ giá trị hằng nào (không chỉ 0)

datetime.MAXYEAR
79

Đặt default_factory thành set làm cho defaultdict hữu ích để xây dựng từ điển các bộ

datetime.MAXYEAR
80

bộ sưu tập. namedtuple() Hàm xuất xưởng cho các bộ dữ liệu có trường được đặt tên

Các bộ dữ liệu được đặt tên gán ý nghĩa cho từng vị trí trong một bộ dữ liệu và cho phép mã tự ghi lại, dễ đọc hơn. Chúng có thể được sử dụng ở bất cứ nơi nào sử dụng bộ dữ liệu thông thường và chúng thêm khả năng truy cập các trường theo tên thay vì chỉ mục vị trí

datetime.MAXYEAR
81Trả về một lớp con bộ dữ liệu mới có tên typename. Lớp con mới được sử dụng để tạo các đối tượng giống như bộ dữ liệu có các trường có thể truy cập được bằng cách tra cứu thuộc tính và có thể lập chỉ mục và có thể lặp lại. Các thể hiện của lớp con cũng có một chuỗi tài liệu hữu ích (với typename và field_names) và một phương thức __repr__() hữu ích liệt kê các nội dung của bộ theo định dạng name=value.

Các_tên_trường là một chuỗi với mỗi tên trường được phân tách bằng khoảng trắng và/hoặc dấu phẩy, ví dụ: 'x y' hoặc 'x, y'. Ngoài ra, field_names là một chuỗi các chuỗi chẳng hạn như ['x', 'y'].

Bất kỳ mã định danh Python hợp lệ nào cũng có thể được sử dụng cho tên trường ngoại trừ tên bắt đầu bằng dấu gạch dưới. Số nhận dạng hợp lệ bao gồm các chữ cái, chữ số và dấu gạch dưới nhưng không bắt đầu bằng chữ số hoặc dấu gạch dưới và không thể là một từ khóa như lớp, cho, trả lại, toàn cầu, vượt qua hoặc nâng cao.

Nếu đổi tên là đúng, tên trường không hợp lệ sẽ tự động được thay thế bằng tên vị trí. Ví dụ: ['abc', 'def', 'ghi', 'abc'] được chuyển đổi thành ['abc', '_1', 'ghi', '_3'], loại bỏ từ khóa def và tên trường trùng lặp abc.

Nếu dài dòng là đúng, định nghĩa lớp sẽ được in sau khi nó được tạo. Tùy chọn này đã lỗi thời; . Các phiên bản bộ dữ liệu được đặt tên không có từ điển cho mỗi phiên bản, vì vậy chúng nhẹ và không yêu cầu nhiều bộ nhớ hơn các bộ dữ liệu thông thường.
datetime.MAXYEAR
82

Các bộ dữ liệu được đặt tên đặc biệt hữu ích để gán tên trường cho các bộ dữ liệu kết quả được trả về bởi các mô-đun csv hoặc sqlite3

datetime.MAXYEAR
83

Ngoài các phương thức kế thừa từ các bộ dữ liệu, các bộ dữ liệu được đặt tên hỗ trợ ba phương thức bổ sung và hai thuộc tính. Để tránh xung đột với tên trường, tên phương thức và thuộc tính bắt đầu bằng dấu gạch dưới

datetime.MAXYEAR
84Phương thức lớp tạo một phiên bản mới từ một trình tự hiện có hoặc có thể lặp lại.

______185
datetime.MAXYEAR
86Trả lại một OrderedDict mới ánh xạ tên trường tới các giá trị tương ứng của chúng. Lưu ý, phương pháp này hiện không còn cần thiết nữa vì có thể đạt được hiệu ứng tương tự bằng cách sử dụng hàm vars() tích hợp.

______187
datetime.MAXYEAR
88Trả lại phiên bản mới của bộ được đặt tên thay thế các trường đã chỉ định bằng các giá trị mới.

______189
datetime.MAXYEAR
90Một chuỗi có mã nguồn thuần Python được sử dụng để tạo lớp tuple có tên. Nguồn làm cho tuple được đặt tên tự ghi lại. Nó có thể được in, thực thi bằng cách sử dụng hàm exec() hoặc được lưu vào một tệp và được nhập.
datetime.MAXYEAR
91Tuple chuỗi liệt kê tên trường. Hữu ích cho việc xem xét nội quan và để tạo các loại bộ dữ liệu được đặt tên mới từ các bộ dữ liệu được đặt tên hiện có.

____192

Để truy xuất một trường có tên được lưu trữ trong một chuỗi, hãy sử dụng hàm getattr()

datetime.MAXYEAR
93

Để chuyển đổi một từ điển thành một bộ dữ liệu được đặt tên, hãy sử dụng toán tử sao đôi (như được mô tả trong Giải nén danh sách đối số)

datetime.MAXYEAR
94

Vì một bộ có tên là một lớp Python thông thường, nên dễ dàng thêm hoặc thay đổi chức năng với một lớp con. Đây là cách thêm trường được tính toán và định dạng in có chiều rộng cố định

________ 195 ________ 196

Lớp con được hiển thị ở trên đặt __slots__ thành một bộ trống. Điều này giúp giữ cho yêu cầu bộ nhớ ở mức thấp bằng cách ngăn việc tạo từ điển cá thể

Phân lớp không hữu ích để thêm các trường mới, được lưu trữ. Thay vào đó, hãy tạo một loại bộ dữ liệu có tên mới từ thuộc tính _fields

datetime.MAXYEAR
97

Giá trị mặc định có thể được triển khai bằng cách sử dụng _replace() để tùy chỉnh phiên bản nguyên mẫu

datetime.MAXYEAR
98

Các hằng số được liệt kê có thể được triển khai với các bộ dữ liệu được đặt tên, nhưng sẽ đơn giản và hiệu quả hơn khi sử dụng một khai báo lớp đơn giản

datetime.MAXYEAR
99

bộ sưu tập. đối tượng OrderedDict

Từ điển có thứ tự giống như từ điển thông thường nhưng chúng nhớ thứ tự các mục được chèn vào. Khi lặp lại một từ điển đã sắp xếp, các mục được trả về theo thứ tự các khóa của chúng được thêm vào lần đầu tiên

class datetime.date
00Trả về một thể hiện của lớp con dict, hỗ trợ các phương thức dict thông thường. OrderedDict là một lệnh ghi nhớ thứ tự các phím được chèn lần đầu tiên. Nếu một mục mới ghi đè lên một mục hiện có, vị trí chèn ban đầu sẽ không thay đổi. Xóa một mục nhập và chèn lại nó sẽ di chuyển nó đến cuối

phương pháp

class datetime.date
01Phương thức popitem() cho các từ điển có thứ tự trả về và xóa một cặp (khóa, giá trị). Các cặp được trả về theo thứ tự LIFO nếu giá trị cuối cùng là đúng hoặc thứ tự FIFO nếu sai.
class datetime.date
02Di chuyển khóa hiện có đến một trong hai đầu của từ điển đã đặt hàng. Mục được di chuyển đến cuối bên phải nếu cuối cùng là đúng (mặc định) hoặc đến đầu nếu cuối cùng là sai. Tăng nếu khóa không tồn tại.

______203

Ngoài các phương pháp ánh xạ thông thường, các từ điển có thứ tự cũng hỗ trợ phép lặp ngược sử dụng Reverse()

Các bài kiểm tra bình đẳng giữa các đối tượng OrderedDict phân biệt thứ tự và được triển khai dưới dạng danh sách (od1. mục())==danh sách(od2. mặt hàng()). Kiểm tra bằng nhau giữa các đối tượng OrderedDict và các đối tượng Ánh xạ khác không phân biệt thứ tự như các từ điển thông thường. Điều này cho phép các đối tượng OrderedDict được thay thế ở bất kỳ nơi nào sử dụng từ điển thông thường

Hàm tạo OrderedDict và phương thức update() đều chấp nhận các đối số từ khóa, nhưng thứ tự của chúng bị mất do hàm của Python gọi các đối số từ khóa truyền vào ngữ nghĩa bằng cách sử dụng một từ điển không có thứ tự thông thường

bộ sưu tập. Các ví dụ và công thức OrderedDict

Vì một từ điển được sắp xếp ghi nhớ thứ tự chèn của nó, nó có thể được sử dụng kết hợp với sắp xếp để tạo một từ điển được sắp xếp

class datetime.date
04

Các từ điển được sắp xếp mới duy trì thứ tự sắp xếp của chúng khi các mục nhập bị xóa. Nhưng khi các khóa mới được thêm vào, các khóa sẽ được thêm vào cuối và sắp xếp không được duy trì

Cũng dễ dàng tạo một biến thể từ điển theo thứ tự ghi nhớ thứ tự các phím được chèn lần cuối. Nếu một mục mới ghi đè lên một mục hiện có, vị trí chèn ban đầu sẽ được thay đổi và di chuyển đến cuối

class datetime.date
05

Một từ điển có thứ tự có thể được kết hợp với lớp Counter để bộ đếm ghi nhớ các phần tử thứ tự được gặp lần đầu tiên

class datetime.date
06

bộ sưu tập. đối tượng UserDict

Lớp UserDict hoạt động như một trình bao bọc xung quanh các đối tượng từ điển. Nhu cầu về lớp này được thay thế một phần bằng khả năng phân lớp trực tiếp từ dict;

class datetime.date
07Một lớp mô phỏng từ điển. Nội dung của phiên bản được lưu giữ trong một từ điển thông thường, có thể truy cập được thông qua thuộc tính dữ liệu của phiên bản UserDict. Nếu dữ liệu ban đầu được cung cấp, dữ liệu được khởi tạo với nội dung của nó;

Ngoài việc hỗ trợ các phương thức và thao tác ánh xạ, các phiên bản UserDict còn cung cấp thuộc tính sau

class datetime.date
08Một từ điển thực được sử dụng để lưu trữ nội dung của lớp UserDict

bộ sưu tập. Đối tượng danh sách người dùng

Lớp này hoạt động như một lớp bao quanh các đối tượng danh sách. Đây là một lớp cơ sở hữu ích cho các lớp giống như danh sách của bạn, lớp này có thể kế thừa từ chúng và ghi đè các phương thức hiện có hoặc thêm các phương thức mới. Bằng cách này, người ta có thể thêm các hành vi mới vào danh sách

Nhu cầu về lớp này được thay thế một phần bằng khả năng phân lớp trực tiếp từ danh sách;

class datetime.date
09Một lớp mô phỏng danh sách. Nội dung của phiên bản được giữ trong một danh sách thông thường, có thể truy cập được thông qua thuộc tính dữ liệu của các phiên bản UserList. Nội dung của thể hiện ban đầu được đặt thành một bản sao của danh sách, mặc định là danh sách trống []. danh sách là bất kỳ lần lặp nào, ví dụ: danh sách Python thực hoặc đối tượng UserList

Ngoài việc hỗ trợ các phương thức và hoạt động của các chuỗi có thể thay đổi, các phiên bản UserList cung cấp thuộc tính sau

class datetime.date
08Một đối tượng danh sách thực được sử dụng để lưu trữ nội dung của lớp UserList

yêu cầu phân lớp. Các lớp con của Danh sách người dùng dự kiến ​​sẽ cung cấp một hàm tạo có thể được gọi mà không có đối số hoặc một đối số. Liệt kê các hoạt động trả về một chuỗi mới cố gắng tạo một thể hiện của lớp triển khai thực tế. Để làm như vậy, nó giả sử rằng hàm tạo có thể được gọi với một tham số duy nhất, đó là một đối tượng chuỗi được sử dụng làm nguồn dữ liệu

Nếu một lớp dẫn xuất không muốn tuân thủ yêu cầu này, thì tất cả các phương thức đặc biệt được hỗ trợ bởi lớp này cần phải được ghi đè;

bộ sưu tập. đối tượng UserString

Lớp UserString hoạt động như một lớp bao quanh các đối tượng chuỗi. Nhu cầu về lớp này được thay thế một phần bằng khả năng phân lớp trực tiếp từ str;

class datetime.date
11Một lớp mô phỏng chuỗi hoặc đối tượng chuỗi Unicode. Nội dung của cá thể được lưu giữ trong một đối tượng chuỗi thông thường, có thể truy cập được thông qua thuộc tính dữ liệu của cá thể UserString. Nội dung của thể hiện ban đầu được đặt thành một bản sao của trình tự. Trình tự là một thể hiện của byte, str, UserString (hoặc một lớp con) hoặc một trình tự tùy ý có thể được chuyển đổi thành một chuỗi bằng cách sử dụng hàm str() tích hợp

chia đôi. thuật toán chia đôi mảng

Mô-đun này cung cấp hỗ trợ để duy trì danh sách theo thứ tự được sắp xếp mà không cần phải sắp xếp danh sách sau mỗi lần chèn. Đối với danh sách dài các mặt hàng có thao tác so sánh tốn kém, đây là một cải tiến so với cách tiếp cận phổ biến hơn. Mô-đun được gọi là chia đôi vì nó sử dụng thuật toán chia đôi cơ bản để thực hiện công việc của mình. Mã nguồn có thể hữu ích nhất như một ví dụ hoạt động của thuật toán (các điều kiện biên đã đúng. )

Các chức năng sau đây được cung cấp

class datetime.date
12Xác định vị trí điểm chèn cho x trong a để duy trì thứ tự đã sắp xếp. Các tham số lo và hi có thể được sử dụng để chỉ định một tập hợp con của danh sách cần được xem xét; . Nếu x đã có trong a, điểm chèn sẽ ở trước (ở bên trái) bất kỳ mục nhập hiện có nào. Giá trị trả về phù hợp để sử dụng làm tham số đầu tiên cho danh sách. insert() giả sử rằng a đã được sắp xếp.

Điểm chèn trả về i chia mảng a thành hai nửa sao cho all(val < x for val in a[lo. i]) cho bên trái và all(val >= x for val in a[i. hi]) cho phía bên phải.
class datetime.date
13Tương tự như bisect_left(), nhưng trả về một điểm chèn xuất hiện sau (ở bên phải) bất kỳ mục nhập hiện có nào của x trong một.

Điểm chèn trả về i chia mảng a thành hai nửa sao cho all(val

Sử dụng bisect để tìm kiếm danh sách được sắp xếp

Các hàm bisect() ở trên rất hữu ích để tìm điểm chèn nhưng có thể phức tạp hoặc khó sử dụng cho các tác vụ tìm kiếm thông thường. Năm chức năng sau đây cho thấy cách chuyển đổi chúng thành tra cứu tiêu chuẩn cho danh sách được sắp xếp

class datetime.date
16

ví dụ

Hàm bisect() có thể hữu ích cho việc tra cứu bảng số. Ví dụ này sử dụng bisect() để tra cứu điểm chữ cái cho điểm bài kiểm tra (giả sử) dựa trên một tập hợp các điểm ngắt số theo thứ tự. 90 trở lên là 'A', 80 đến 89 là 'B', v.v.

class datetime.date
17

Không giống như hàm sorted(), các hàm bisect() có các đối số khóa hoặc đảo ngược sẽ không hợp lý vì điều đó sẽ dẫn đến một thiết kế không hiệu quả (các lệnh gọi liên tiếp đến các hàm chia đôi sẽ không “nhớ” tất cả các lần tra cứu khóa trước đó

Thay vào đó, tốt hơn là tìm kiếm danh sách các khóa được tính toán trước để tìm chỉ mục của bản ghi được đề cập

class datetime.date
18

Mảng. mảng hiệu quả của các giá trị số

Mô-đun này xác định một loại đối tượng có thể biểu diễn gọn một mảng các giá trị cơ bản. ký tự, số nguyên, số dấu phẩy động. Mảng là kiểu dãy và hoạt động rất giống với danh sách, ngoại trừ kiểu đối tượng được lưu trữ trong chúng bị hạn chế. Loại được chỉ định tại thời điểm tạo đối tượng bằng cách sử dụng mã loại, là một ký tự đơn. Các loại mã sau đây được xác định

Loại mãC TypePython TypeKích thước tối thiểu tính bằng byteGhi chú'b'signed charint1'B'unsigned charint1'u'Py_UNICODEUnicode character21. 'h'signed shortint2'H'unsigned shortint2'i'signed intint2'I'unsigned intint2'l'signed longint4'L'unsigned longint4'q'signed long longint82. 'Q'unsign dài longint82. 'f'floatfloat4'd'doublefloat8

ghi chú

  • Mã loại 'u' tương ứng với ký tự unicode lỗi thời của Python (Py_UNICODE là wchar_t). Tùy thuộc vào nền tảng, nó có thể là 16 bit hoặc 32 bit.

    'u' sẽ bị xóa cùng với phần còn lại của API Py_UNICODE.
  • Mã loại 'q' và 'Q' chỉ khả dụng nếu trình biên dịch nền tảng C được sử dụng để xây dựng Python hỗ trợ C long long hoặc trên Windows, __int64

Biểu diễn thực tế của các giá trị được xác định bởi kiến ​​trúc máy (nói đúng ra là do triển khai C). Kích thước thực tế có thể được truy cập thông qua thuộc tính kích thước vật phẩm

Mô-đun xác định các loại sau

class datetime.date
19Một mảng mới có các mục bị hạn chế bởi mã kiểu và được khởi tạo từ giá trị khởi tạo tùy chọn, phải là một danh sách, một đối tượng dạng byte hoặc có thể lặp lại trên các phần tử thuộc loại thích hợp.

Nếu được cung cấp một danh sách hoặc chuỗi, trình khởi tạo được chuyển đến phương thức fromlist(), frombytes() hoặc fromunicode() của mảng mới (xem bên dưới) để thêm các mục ban đầu vào mảng. Mặt khác, trình khởi tạo có thể lặp lại được chuyển đến phương thức mở rộng ().
class datetime.date
20Một chuỗi với tất cả các mã loại có sẵn.

Các đối tượng mảng hỗ trợ các hoạt động trình tự thông thường của lập chỉ mục, cắt, nối và nhân. Khi sử dụng phép gán lát, giá trị được gán phải là một đối tượng mảng có cùng mã loại; . Các đối tượng mảng cũng triển khai giao diện bộ đệm và có thể được sử dụng ở bất kỳ nơi nào hỗ trợ các đối tượng giống như byte

Các mục dữ liệu và phương pháp sau đây cũng được hỗ trợ

class datetime.date
21Ký tự mã kiểu được sử dụng để tạo mảng.
class datetime.date
22Độ dài tính bằng byte của một mục mảng trong biểu diễn bên trong.
class datetime.date
23Nối một mục mới có giá trị x vào cuối mảng.
class datetime.date
24Trả về một bộ (địa chỉ, độ dài) cung cấp địa chỉ bộ nhớ hiện tại và độ dài trong các phần tử của bộ đệm được sử dụng để chứa nội dung của mảng. Kích thước của bộ nhớ đệm theo byte có thể được tính như mảng. bộ đệm_info() * mảng. kích thước mục. Điều này đôi khi hữu ích khi làm việc với các giao diện I/O cấp thấp (và vốn không an toàn) yêu cầu địa chỉ bộ nhớ, chẳng hạn như một số hoạt động ioctl() nhất định. Các số được trả về có giá trị miễn là mảng tồn tại và không có thao tác thay đổi độ dài nào được áp dụng cho nó.

Lưu ý. Khi sử dụng các đối tượng mảng từ mã được viết bằng C hoặc C++ (cách duy nhất để sử dụng thông tin này một cách hiệu quả), sẽ hợp lý hơn khi sử dụng giao diện bộ đệm được hỗ trợ bởi các đối tượng mảng. Phương pháp này được duy trì để tương thích ngược và nên tránh trong mã mới.
class datetime.date
25 “Hoán đổi byte” tất cả các mục của mảng. Điều này chỉ được hỗ trợ cho các giá trị có kích thước 1, 2, 4 hoặc 8 byte; . Nó rất hữu ích khi đọc dữ liệu từ một tệp được ghi trên máy có thứ tự byte khác.
class datetime.date
26Trả về số lần xuất hiện của x trong mảng.
class datetime.date
27Nối các mục từ iterable vào cuối mảng. Nếu iterable là một mảng khác, nó phải có cùng mã loại; . Nếu iterable không phải là một mảng, thì nó phải là iterable và các phần tử của nó phải đúng loại để được thêm vào mảng.
class datetime.date
28Nối các mục từ chuỗi s, diễn giải chuỗi dưới dạng một mảng các giá trị máy (như thể nó đã được đọc từ tệp bằng phương thức fromfile()).
class datetime.date
29Đọc n mục (dưới dạng giá trị máy) từ đối tượng tệp f và nối chúng vào cuối mảng. Nếu có ít hơn n mục, được nâng lên, nhưng các mục có sẵn vẫn được chèn vào mảng. f phải là một đối tượng tệp tích hợp thực sự; .
class datetime.date
30Nối các mục từ danh sách. Điều này tương đương với for x trong danh sách. một. append(x) ngoại trừ nếu có lỗi kiểu, mảng sẽ không thay đổi.
class datetime.date
31Bí danh không dùng nữa cho frombytes().
class datetime.date
32Mở rộng mảng này với dữ liệu từ chuỗi unicode đã cho. Mảng phải là mảng kiểu 'u'; . sử dụng mảng. từ byte (chuỗi unicode. encode(enc)) để nối thêm dữ liệu Unicode vào một mảng thuộc loại khác.
class datetime.date
33Trả về i nhỏ nhất sao cho i là chỉ số của lần xuất hiện đầu tiên của x trong mảng.
class datetime.date
34Chèn một mục mới có giá trị x vào mảng trước vị trí i. Các giá trị âm được coi là có liên quan đến phần cuối của mảng.
class datetime.date
35Xóa mục có chỉ số i khỏi mảng và trả về mục đó. Đối số tùy chọn mặc định là -1, do đó, theo mặc định, mục cuối cùng được xóa và trả về.
class datetime.date
36Xóa lần xuất hiện đầu tiên của x khỏi mảng.
class datetime.date
37Đảo ngược thứ tự của các mục trong mảng.
class datetime.date
38Chuyển đổi mảng thành một mảng các giá trị máy và trả về biểu diễn byte (cùng một chuỗi byte sẽ được ghi vào tệp bằng phương thức tofile(). )
class datetime.date
39Ghi tất cả các mục (dưới dạng giá trị máy) vào đối tượng tệp f.
class datetime.date
40Chuyển đổi mảng thành một danh sách thông thường với các mục giống nhau.
class datetime.date
41Bí danh tobytes() không được dùng nữa.
class datetime.date
42Chuyển đổi mảng thành chuỗi unicode. Mảng phải là mảng kiểu 'u'; . sử dụng mảng. tobyte(). giải mã (enc) để lấy chuỗi unicode từ một mảng thuộc loại khác.

Khi một đối tượng mảng được in hoặc chuyển đổi thành một chuỗi, nó được biểu diễn dưới dạng mảng (mã kiểu, trình khởi tạo). Trình khởi tạo được bỏ qua nếu mảng trống, nếu không thì nó là một chuỗi nếu mã kiểu là 'u', nếu không thì nó là một danh sách các số. Chuỗi được đảm bảo có thể được chuyển đổi trở lại thành một mảng có cùng kiểu và giá trị bằng cách sử dụng eval(), miễn là hàm array() được nhập bằng cách sử dụng mảng nhập mảng. ví dụ

class datetime.date
43

liệt kê. hỗ trợ liệt kê

Một phép liệt kê là một tập hợp các tên tượng trưng (thành viên) được liên kết với các giá trị không đổi, duy nhất. Trong một phép liệt kê, các thành viên có thể được so sánh bằng danh tính và bản thân phép liệt kê có thể được lặp lại

enum Nội dung mô-đun

Mô-đun này định nghĩa hai lớp liệt kê có thể xác định các bộ tên và giá trị duy nhất. Enum và IntEnum. Nó cũng định nghĩa một decorator, unique()

class datetime.date
44Lớp cơ sở để tạo hằng số liệt kê. Xem phần API chức năng để biết cú pháp xây dựng thay thế.
class datetime.date
45Lớp cơ sở để tạo các hằng số liệt kê cũng là các lớp con của int.
class datetime.date
46 Trình trang trí lớp Enum đảm bảo chỉ một tên được liên kết với bất kỳ giá trị nào

Tạo một enum. liệt kê

Bảng liệt kê được tạo bằng cú pháp lớp, giúp chúng dễ đọc và dễ viết. Để định nghĩa một kiểu liệt kê, phân lớp Enum như sau

class datetime.date
47

ghi chú

  • Lớp Màu là một phép liệt kê (hoặc enum)
  • Thuộc tính Màu sắc. màu đỏ. màu xanh lá cây, vv. , là thành viên liệt kê (hoặc thành viên enum)
  • Các thành viên enum có tên và giá trị (tên của Color. đỏ là đỏ, giá trị của Color. màu xanh là 3, v.v. )

Ghi chú

Mặc dù chúng tôi sử dụng cú pháp lớp để tạo Enums, Enums không phải là lớp Python bình thường

Các thành viên liệt kê có các biểu diễn chuỗi có thể đọc được của con người

class datetime.date
48

trong khi đại diện của họ có thêm thông tin

class datetime.date
49

Loại của một thành viên liệt kê là điều tra mà nó thuộc về

class datetime.date
50

Thành viên Enum cũng có thuộc tính chứa tên vật phẩm của họ

class datetime.date
51

Phép liệt kê hỗ trợ phép lặp, theo thứ tự định nghĩa

class datetime.date
52

Các thành viên liệt kê có thể băm được, vì vậy chúng có thể được sử dụng trong từ điển và bộ

class datetime.date
53

Truy cập theo chương trình vào các thành viên liệt kê và thuộc tính của họ

Đôi khi, việc truy cập các thành viên trong bảng liệt kê theo chương trình là hữu ích (tôi. e. , tình huống mà Màu sắc. màu đỏ sẽ không hoạt động vì màu chính xác không được biết tại thời điểm viết chương trình). Enum cho phép truy cập như vậy

class datetime.date
54

Nếu bạn muốn truy cập các thành viên enum theo tên, hãy sử dụng quyền truy cập mục

class datetime.date
55

Nếu bạn có một thành viên enum và cần tên hoặc giá trị của nó

class datetime.date
56

Sao chép thành viên enum và giá trị

Có hai thành viên enum có cùng tên là không hợp lệ

class datetime.date
57

Tuy nhiên, hai thành viên enum được phép có cùng giá trị. Cho hai thành viên A và B có cùng giá trị (và A được xác định trước), B là bí danh của A. Tra cứu theo giá trị của giá trị của A và B trả về A. Tra cứu theo tên của B cũng trả về A

class datetime.date
58

Ghi chú. Cố gắng tạo một thành viên có cùng tên với một thuộc tính đã được xác định (một thành viên khác, một phương thức, v.v. ) hoặc cố gắng tạo thuộc tính có cùng tên với thành viên không được phép

Đảm bảo các giá trị liệt kê duy nhất

Theo mặc định, kiểu liệt kê cho phép nhiều tên làm bí danh cho cùng một giá trị. Khi hành vi này không được mong muốn, trình trang trí sau đây có thể đảm bảo mỗi giá trị chỉ được sử dụng một lần trong phép liệt kê

class datetime.date
59

Trình trang trí lớp dành riêng cho kiểu liệt kê. Nó tìm kiếm __members__ của một bảng liệt kê để thu thập bất kỳ bí danh nào mà nó tìm thấy;

class datetime.date
60

lặp lại

Lặp lại các thành viên của enum không cung cấp bí danh

class datetime.date
61

Thuộc tính đặc biệt __members__ là tên từ điển ánh xạ theo thứ tự cho các thành viên. Nó bao gồm tất cả các tên được xác định trong bảng liệt kê, kể cả các bí danh

class datetime.date
62

Thuộc tính __members__ có thể được sử dụng để truy cập theo chương trình chi tiết vào các thành viên liệt kê. Ví dụ: tìm tất cả các bí danh

class datetime.date
63

so sánh

Thành viên liệt kê được so sánh theo danh tính

class datetime.date
64

So sánh theo thứ tự giữa các giá trị liệt kê không được hỗ trợ. Thành viên Enum không phải là số nguyên (nhưng xem IntEnum bên dưới)

class datetime.date
65

So sánh bình đẳng được xác định mặc dù

class datetime.date
66

So sánh với các giá trị không liệt kê luôn so sánh không bằng nhau (một lần nữa, IntEnum được thiết kế rõ ràng để hoạt động khác đi, xem bên dưới)

class datetime.date
67

Các thành viên được phép và các thuộc tính của bảng liệt kê

Các ví dụ trên sử dụng số nguyên cho các giá trị liệt kê. Việc sử dụng số nguyên ngắn gọn và tiện dụng (và được cung cấp theo mặc định bởi API chức năng), nhưng không được thực thi nghiêm ngặt. Trong phần lớn các trường hợp sử dụng, người ta không quan tâm giá trị thực của một phép liệt kê là gì. Nhưng nếu giá trị là quan trọng, liệt kê có thể có giá trị tùy ý

Bảng liệt kê là các lớp Python và có thể có các phương thức và phương thức đặc biệt như bình thường. Nếu chúng ta có bảng liệt kê này

class datetime.date
68

sau đó

class datetime.date
69

Các quy tắc cho những gì được phép như sau. Tên _sunder_ (bắt đầu và kết thúc bằng một dấu gạch dưới) được đặt trước bởi enum và không thể sử dụng được;

Ghi chú. nếu phép liệt kê của bạn xác định __new__() và/hoặc __init__() thì bất kỳ (các) giá trị nào được trao cho thành viên enum sẽ được chuyển vào các phương thức đó

Phân lớp con bị hạn chế của liệt kê

Việc phân lớp một kiểu liệt kê chỉ được phép nếu kiểu liệt kê không xác định bất kỳ phần tử nào. Vì vậy, điều này bị cấm

class datetime.date
70

Nhưng điều này được cho phép

class datetime.date
71

Việc cho phép phân lớp các enum xác định thành viên sẽ dẫn đến vi phạm một số bất biến quan trọng của các loại và trường hợp. Mặt khác, thật hợp lý khi cho phép chia sẻ một số hành vi chung giữa một nhóm liệt kê. (Xem OrderedEnum để biết ví dụ. )

muối chua

Bảng liệt kê có thể được ngâm và giải nén

class datetime.date
72

Áp dụng các hạn chế thông thường đối với việc ngâm chua. Các enum có thể chọn phải được xác định ở cấp cao nhất của mô-đun vì việc giải nén yêu cầu chúng phải có thể nhập được từ mô-đun đó

Ghi chú

Với giao thức pickle phiên bản 4, có thể dễ dàng pickle enums lồng trong các lớp khác

Có thể sửa đổi cách các thành viên Enum được chọn/bỏ chọn bằng cách xác định __reduce_ex__() trong lớp liệt kê

enum API chức năng

Lớp Enum có thể gọi được, cung cấp API chức năng sau

class datetime.date
73

Ngữ nghĩa của API này giống với têntuple. Đối số đầu tiên của lệnh gọi Enum là tên của kiểu liệt kê

Đối số thứ hai là nguồn của tên thành viên liệt kê. Đó là một chuỗi tên được phân tách bằng khoảng trắng, một chuỗi tên, một chuỗi 2 bộ với các cặp khóa/giá trị hoặc ánh xạ (e. g. , dictionary) của tên thành giá trị. Hai tùy chọn cuối cùng cho phép gán các giá trị tùy ý cho các phép liệt kê; . Một lớp mới bắt nguồn từ Enum được trả về. Nói cách khác, phép gán trên cho Animal tương đương với

class datetime.date
74

Lý do mặc định là 1 làm số bắt đầu chứ không phải 0 vì 0 là Sai theo nghĩa boolean, nhưng tất cả các thành viên enum đều đánh giá là Đúng

Các enum chọn lọc được tạo bằng API chức năng có thể phức tạp vì các chi tiết triển khai ngăn xếp khung được sử dụng để thử và tìm ra mô-đun của phép liệt kê. Giải pháp là chỉ định rõ ràng tên mô-đun như sau

class datetime.date
75

Cảnh báo

Nếu mô-đun không được cung cấp và Enum không thể xác định nó là gì, thì các thành viên Enum mới sẽ không thể chọn được;

Trong một số trường hợp, giao thức pickle mới 4 cũng dựa vào __qualname__ được đặt thành vị trí mà pickle có thể tìm thấy lớp. Ví dụ: nếu lớp được cung cấp trong lớp SomeData trong phạm vi toàn cầu

class datetime.date
76

Chữ ký đầy đủ là

class datetime.date
77

dẫn xuất liệt kê

IntEnum

Một biến thể của Enum được cung cấp cũng là một lớp con của int. Các thành viên của một IntEnum có thể được so sánh với các số nguyên;

class datetime.date
78

Tuy nhiên, chúng vẫn không thể so sánh với kiểu liệt kê Enum tiêu chuẩn

class datetime.date
79

Giá trị IntEnum hoạt động giống như số nguyên theo những cách khác mà bạn mong đợi

class datetime.date
80

Đối với phần lớn mã, Enum được khuyến nghị mạnh mẽ vì IntEnum phá vỡ một số lời hứa về ngữ nghĩa của phép liệt kê (bằng cách so sánh với số nguyên và do đó bằng tính bắc cầu với các phép liệt kê không liên quan khác). Nó chỉ nên được sử dụng trong những trường hợp đặc biệt khi không còn lựa chọn nào khác;

Enum khác

Mặc dù IntEnum là một phần của mô-đun enum, nhưng sẽ rất đơn giản để triển khai độc lập

class datetime.date
81

Điều này cho thấy cách liệt kê dẫn xuất tương tự có thể được xác định;

Một số quy tắc

  • Khi phân lớp Enum, các loại hỗn hợp phải xuất hiện trước chính Enum trong chuỗi cơ sở, như trong ví dụ IntEnum ở trên
  • Mặc dù Enum có thể có các thành viên thuộc bất kỳ loại nào, nhưng khi bạn trộn vào một loại bổ sung, tất cả các thành viên phải có giá trị của loại đó, e. g. , int ở trên. Hạn chế này không áp dụng cho các mix-in chỉ thêm phương thức và không chỉ định loại dữ liệu khác, chẳng hạn như int hoặc str
  • Khi một loại dữ liệu khác được trộn vào, thuộc tính giá trị không giống với chính thành viên enum, mặc dù nó tương đương và sẽ so sánh bằng nhau
  • định dạng kiểu %. %s và %r gọi Enum‘s __str__() và __repr__() tương ứng;
  • str. __format__() (hoặc format()) sử dụng loại hỗn hợp __format__(). Nếu Enum's str() hoặc repr() được mong muốn, hãy sử dụng. s hoặc. mã định dạng r str

ví dụ

Mặc dù Enum và IntEnum dự kiến ​​sẽ bao gồm phần lớn các trường hợp sử dụng, nhưng chúng không thể bao gồm tất cả. Dưới đây là công thức cho một số kiểu liệt kê khác nhau có thể được sử dụng trực tiếp hoặc làm ví dụ để tạo kiểu liệt kê của riêng bạn

enum Ví dụ. Số tự động

Tránh phải chỉ định giá trị cho từng thành viên liệt kê

class datetime.date
82

Ghi chú. Phương thức __new__(), nếu được định nghĩa, được sử dụng trong quá trình tạo thành viên Enum; . Do cách thức hoạt động của Enums, không có cách nào để tùy chỉnh __new__() của Enum

ví dụ về enum. Đặt hàngEnum

Một phép liệt kê có thứ tự không dựa trên IntEnum và do đó duy trì các bất biến Enum bình thường (chẳng hạn như không thể so sánh với các phép liệt kê khác)

class datetime.date
83

enum Ví dụ. Sao chép miễn phíEnum

Phát sinh lỗi nếu tìm thấy tên thành viên trùng lặp thay vì tạo bí danh

class datetime.date
84

Ghi chú

Đây là một ví dụ hữu ích cho việc phân lớp Enum để thêm hoặc thay đổi các hành vi khác và không cho phép bí danh. Nếu thay đổi mong muốn duy nhất là không cho phép bí danh, thì có thể sử dụng trình trang trí unique() thay thế

Loại ngày trong Python là gì?

Ngày trong Python không phải là kiểu dữ liệu của riêng nó , nhưng chúng ta có thể nhập một mô-đun có tên datetime để làm việc với ngày ở dạng date .

Ngày và giờ trong Python là gì?

Ví dụ 1. Nhận ngày và giờ hiện tại . ngày giờ. now() now = datetime.datetime.now() print(now) Chạy mã. Đầu ra 2022-12-27 08. 26. 49. 219717.

Kiểu dữ liệu ngày và giờ là gì?

Loại DATETIME được sử dụng cho các giá trị chứa cả phần ngày và giờ . MySQL truy xuất và hiển thị các giá trị DATETIME trong ' YYYY-MM-DD hh. mm. định dạng ss. Phạm vi được hỗ trợ là '1000-01-01 00. 00. 00' đến '9999-12-31 23. 59. 59'. Kiểu dữ liệu DẤU THỜI GIAN được sử dụng cho các giá trị chứa cả phần ngày và giờ.