Đôi khi, bạn có thể cần lưu cục bộ đối tượng Python của mình để sử dụng sau hoặc Chuyển mạng. Python có các thư viện tuyệt vời để tuần tự hóa như Json và Pickle Show
Tuần tự hóa đang lưu trữ các cấu trúc dữ liệu trong chương trình để chúng không biến mất sau khi chương trình kết thúc Ngoài ra còn có thư viện soái ca nhưng nó nguyên thủy hơn và không thể xử lý một số kỹ thuật nhất định như thể hiện lớp và đệ quy. Marshal gần với json hơn trong phạm vi tuần tự hóa của nó Vì vậy, khi nào bạn sẽ sử dụng dưa chua, cpickle, json hoặc ujson? cpickle và ujson là các phiên bản nhanh hơn của các thư viện tương ứng tận dụng lợi thế của việc triển khai C trong Python. Vì vậy, chúng sẽ luôn thuận lợi vì lý do tốc độ Ngoài ra, json là một phiên bản tuần tự hóa an toàn và dễ đọc hơn so với pickle đi kèm với chi phí tốc độ Mặc dù bạn có thể xử lý hầu hết mọi cấu trúc dữ liệu trong Python bằng Json nhưng nó sẽ không hiệu quả với các tệp lớn hoặc các đối tượng không phổ biến. Mặt khác, Pickle hoạt động ở một điểm tuyệt vời, nơi bạn muốn làm việc với các tệp lớn (nhiều GB) và vẫn không muốn bị làm phiền với các giải pháp cơ sở dữ liệu Vấn đề là tùy thuộc vào ứng dụng của bạn, bạn có thể phải coi chừng các lỗ hổng bảo mật mà dưa đưa vào hệ thống, vì vậy, thông thường nên tìm kiếm các giải pháp cơ sở dữ liệu hoặc json trước khi sử dụng dưa khi có thể Hàm này rất hữu ích nếu bạn muốn chuyển đổi một số nguyên thành một chuỗi thập lục phân, có tiền tố là “0x” Hãy xem cách chúng ta có thể sử dụng chức năng này Sử dụng hàm hex() của PythonHàm hex() của Python có cú pháp rất đơn giản hex_string = hex(val) Ở đây, Hãy xem nhanh một số ví dụ print(hex(1000)) # decimal print(hex(0b111)) # binary print(hex(0o77)) # octal print(hex(0XFF)) # hexadecimal đầu ra 0x3e8 0x7 0x3f 0xff Sử dụng Python hex() trên một đối tượng tùy chỉnhChúng ta cũng có thể sử dụng hex() trên một đối tượng tùy chỉnh. Tuy nhiên, nếu chúng ta muốn sử dụng nó thành công, chúng ta phải định nghĩa phương thức __index__() dunder cho lớp của chúng ta Phương thức hex() sẽ gọi class MyClass: def __init__(self, value): self.value = value def __index__(self): print('__index__() dunder method called') return self.value my_obj = MyClass(255) print(hex(my_obj)) đầu ra __index__() dunder method called 0xff Thật vậy, như bạn có thể thấy, nó trả về những gì chúng ta mong đợi Đầu tiên, Sau đó, nó chuyển đổi giá trị được trả về thành chuỗi thập lục phân (255 -> “0xff”) Phần kết luậnTrong bài viết này, chúng ta đã tìm hiểu về cách sử dụng hàm hex() để chuyển đổi các giá trị số thành chuỗi thập lục phân Hàm hex() trong Python được sử dụng để tạo giá trị hex của đối số số nguyên. Nó nhận một đối số số nguyên và trả về một số nguyên được chuyển đổi thành chuỗi thập lục phân. Trường hợp muốn lấy giá trị thập lục phân của float thì dùng float. hàm hex(). Chữ ký của chức năng được đưa ra dưới đây Chữ kýThông sốsố nguyên. Đó là một giá trị số nguyên được chuyển đổi thành một chuỗi hex Trở lạiNó trả về một chuỗi thập lục phân Hãy xem một số ví dụ về hàm hex() để hiểu chức năng của nó Hàm hex() trong Python Ví dụ 1Một ví dụ đơn giản để lấy giá trị thập lục phân của số thập phân nguyên đầu ra Hàm hex() trong Python Ví dụ 2Nó chỉ nhận đối số số nguyên nếu chúng ta vượt qua cái khác, nó sẽ báo lỗi cho bàn điều khiển đầu ra TypeError: 'float' object cannot be interpreted as an integer Hàm hex() trong Python Ví dụ 3Để lấy giá trị hex của float, hãy sử dụng float. lục giác(). Nó không ném bất kỳ lỗi nào. Xem ví dụ bên dưới đầu ra 0x1.8000000000000p+0 -0x1.dc4cccccccccdp+7 Hàm class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'2 tích hợp sẵn của Python nhận một đối số số nguyên và trả về một chuỗi thập lục phân có tiền tố class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'3. Nếu bạn gọi class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'4 trên một số không phải là số nguyên class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'5, thì nó phải xác định phương thức class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'6 trả về một số nguyên liên quan đến class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'5. Nếu không, nó sẽ ném một class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'8Đối số class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'9Một giá trị số nguyên hoặc đối tượng triển khai phương thức class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'6. Giá trị trả về >>> hex(11.14) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> hex(11.14) TypeError: 'float' object cannot be interpreted as an integer1Trả về một chuỗi số bát phân, có tiền tố là class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'3. Input : Python hex() VideoHàm hex() của Python -- Không phải là một trò ảo thuật Xem video này trên YouTube Nhưng trước khi chúng ta tiếp tục, tôi rất vui được giới thiệu với bạn cuốn sách Python mới của tôi Python One-Liners (Amazon Link) Nếu bạn thích một lớp lót, bạn sẽ YÊU cuốn sách. Nó sẽ dạy cho bạn mọi thứ cần biết về một dòng mã Python. Nhưng nó cũng là phần giới thiệu về khoa học máy tính, khoa học dữ liệu, máy học và thuật toán. Vũ trụ trong một dòng Python Sách được phát hành năm 2020 với nhà xuất bản sách lập trình đẳng cấp thế giới NoStarch Press (San Francisco) liên kết. https. //Không có tinh bột. com/pythononeliners Python hex() cho Đối tượng tùy chỉnhNếu bạn gọi class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'4 trên một đối tượng không phải là số nguyên hoặc đối tượng tùy chỉnh class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'5, nó phải xác định phương thức class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'6 trả về một số nguyên được liên kết với class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'5 class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa' Cách khắc phục “TypeError. đối tượng 'float' không thể được hiểu là một số nguyên”?Hàm >>> hex(11.14) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> hex(11.14) TypeError: 'float' object cannot be interpreted as an integer7 của Python chỉ có thể chuyển đổi các số nguyên từ bất kỳ hệ thống số nào (e. g. , thập phân, nhị phân, bát phân) sang hệ thập lục phân. Nó không thể chuyển đổi số float thành số thập lục phân. Vì vậy, nếu bạn chuyển một số float vào hàm >>> hex(11.14) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> hex(11.14) TypeError: 'float' object cannot be interpreted as an integer7, nó sẽ trả về một giá trị >>> hex(11.14) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> hex(11.14) TypeError: 'float' object cannot be interpreted as an integer9 >>> hex(11.14) Traceback (most recent call last): File "<pyshell#20>", line 1, in <module> hex(11.14) TypeError: 'float' object cannot be interpreted as an integer Để khắc phục lỗi này, bạn có thể làm tròn số float thành một số nguyên bằng cách sử dụng hàm >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'0 tích hợp sẵn hoặc bạn viết hàm chuyển đổi tùy chỉnh của riêng mình Làm cách nào để chuyển đổi số float thành số thập lục phân trong Python?Để chuyển đổi một giá trị float đã cho thành giá trị hex, hãy sử dụng hàm >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'1 trả về biểu diễn của một số dấu phẩy động dưới dạng một chuỗi thập lục phân bao gồm một >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'2 ở đầu và một >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'3 ở cuối và số mũ Lưu ý rằng số mũ được cho dưới dạng lũy thừa của 2 theo đó nó được chia tỷ lệ—ví dụ: >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'4 sẽ được chia tỷ lệ thành >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'5 khi sử dụng số mũ 3 >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1' Ngoài ra, nếu bạn cần một biểu diễn thập lục phân không dấu phẩy động tương tự như hầu hết các trình chuyển đổi trực tuyến, hãy sử dụng lệnh >>> 3.14.hex() '0x1.91eb851eb851fp+1' >>> 3.15.hex() '0x1.9333333333333p+1'6 import struct def float_to_hex(f): return hex(struct.unpack('<I', struct.pack('<f', f))[0]) print(float_to_hex(3.14)) print(float_to_hex(88.88)) Đầu ra là biểu diễn bát phân của các giá trị đầu vào float 0x4048f5c3 0x42b1c28f nguồn
Bài toán con định dạng hexHãy xem xét một số biến thể định dạng của bài toán chuyển đổi hệ thập lục phân chuyển đổi một số thành chữ thường/chữ hoa và có/không có tiền tố. Chúng tôi sử dụng Ngôn ngữ đặc tả định dạng. Bạn có thể tìm hiểu thêm về chủ đề này trong hướng dẫn blog chi tiết của chúng tôi Chúng tôi sử dụng ba biến thể giống hệt nhau về mặt ngữ nghĩa cho từng vấn đề chuyển đổi Cách chuyển đổi một số thành chữ thường thập lục phân bằng tiền tố>>> '%#x' % 12 '0xc' >>> f'{12:#x}' '0xc' >>> format(12, '#x') '0xc' Cách chuyển đổi một số thành số thập lục phân chữ thường mà không cần tiền tố>>> '%x' % 12 'c' >>> f'{12:x}' 'c' >>> format(12, 'x') 'c' Cách chuyển đổi một số thành một chữ hoa thập lục phân với tiền tố>>> '%#X' % 12 '0XC' >>> f'{12:#X}' '0XC' >>> format(12, '#X') '0XC' Cách chuyển đổi một số thành một chữ hoa thập lục phân mà không cần tiền tố>>> '%X' % 12 'C' >>> f'{12:X}' 'C' >>> format(12, 'X') 'C' 👉 Hướng dẫn đề xuất. Chuyển đổi chuỗi Hex thành số Hex trong Python Tóm lượcHàm class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'2 tích hợp sẵn của Python nhận một đối số số nguyên và trả về một chuỗi thập lục phân có tiền tố class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'3 class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'0 Nếu bạn gọi class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'4 trên một số không phải là số nguyên class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'5, thì nó phải xác định phương thức class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'6 trả về một số nguyên liên quan đến class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'5 class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa' Nếu không, nó sẽ ném một class Foo: def __index__(self): return 10 f1 = Foo() print(hex(f1)) # '0xa'8 Đi đâu từ đây?Đủ lý thuyết. Hãy thực hành một số Các lập trình viên được trả sáu con số trở lên vì họ có thể giải quyết vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa Để trở nên thành công hơn trong việc viết mã, hãy giải quyết nhiều vấn đề thực tế hơn cho người thực. Đó là cách bạn trau dồi những kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, việc sử dụng lý thuyết học tập mà không ai cần là gì? Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế Bạn có muốn ngừng học với các dự án đồ chơi và tập trung vào các dự án mã thực tế giúp bạn kiếm tiền và giải quyết các vấn đề thực sự cho mọi người không? 🚀 Nếu câu trả lời của bạn là CÓ. , cân nhắc trở thành nhà phát triển Python tự do. Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện kỹ năng Python của bạn—ngay cả khi bạn là người mới hoàn toàn Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi “Cách xây dựng kỹ năng Python có thu nhập cao của bạn” và tìm hiểu cách tôi phát triển công việc viết mã của mình trực tuyến cũng như cách bạn có thể làm được—từ sự thoải mái của bạn Tham gia hội thảo trên web miễn phí ngay bây giờ Chris Trong khi làm việc với tư cách là một nhà nghiên cứu trong các hệ thống phân tán, Dr. Christian Mayer tìm thấy tình yêu của mình với việc dạy sinh viên khoa học máy tính Để giúp sinh viên đạt được mức độ thành công Python cao hơn, anh ấy đã thành lập trang web giáo dục lập trình Finxter. com. Ông là tác giả của cuốn sách lập trình nổi tiếng Python One-Liners (NoStarch 2020), đồng tác giả của loạt sách tự xuất bản Coffee Break Python, người đam mê khoa học máy tính, cộng tác viên tự do và chủ sở hữu của một trong 10 blog Python lớn nhất thế giới Niềm đam mê của anh ấy là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh ấy là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ nâng cao kỹ năng của mình. Bạn có thể tham gia học viện email miễn phí của anh ấy tại đây |