Chức năng vá python
Nếu bạn giống hầu hết người dùng Python, bao gồm cả tôi, thì bạn có thể bắt đầu hành trình Python của mình bằng cách tìm hiểu về 45. Nó đã giúp bạn viết 46một lớp lót của riêng bạn. Bạn có thể sử dụng nó để hiển thị các định dạng thông báo trên màn hình và có thể tìm thấy một số lỗi. Nhưng nếu bạn cho rằng đó là tất cả những gì cần biết về 45chức năng của Python , thì bạn đang bỏ lỡ rất nhiều thứ Show Hãy tiếp tục đọc để tận dụng tối đa chức năng nhỏ có vẻ chán nản và không được đánh giá cao này. Hướng dẫn này sẽ giúp bạn bắt kịp tốc độ sử dụng Python 45một cách hiệu quả. Tuy nhiên, hãy chuẩn bị cho một cuộc lặn sâu khi bạn đi qua các phần. Bạn có thể ngạc nhiên về số tiền 45 phải cung cấpĐến cuối hướng dẫn này, bạn sẽ biết cách
Nếu bạn là người mới bắt đầu học Python, thì bạn sẽ được hưởng lợi nhiều nhất khi đọc phần đầu tiên của hướng dẫn này, phần này minh họa các yếu tố cần thiết của công việc bằng Python
In the NutshellHãy bắt đầu bằng cách xem xét một vài ví dụ thực tế về bằng Python. Đến cuối phần này, bạn sẽ biết mọi cách gọi có thể 45. Hoặc, trong biệt ngữ của lập trình viên, bạn nói rằng bạn sẽ quen với cú pháp hàmLời gọi '\n' # Blank line '' # Empty line45Ví dụ đơn giản nhất về việc sử dụng Python 45 như sau 0Bạn không truyền bất kỳ đối số nào, nhưng bạn vẫn cần đặt cặp chiết vòng () ở cuối, điều này để biết Python thực sự thực thi hàm thay vì chỉ tham chiếu đến nó bằng tên Điều này sẽ tạo ra một dòng ký tự vô hình mới, do đó sẽ tạo ra một dòng trống xuất hiện trên màn hình của bạn. Bạn có thể gọi 45 nhiều lần như vậy để thêm không gian theo chiều dọc. Nó giống như thể bạn đang nhấn Enter trên bàn phím của mình trong một trình xử lý văn bảnNhư bạn vừa thấy, cuộc gọi 45 mà không có đối số dẫn đến một dòng trống, là một dòng chỉ bao gồm các ký tự dòng mới. Đừng nhầm lẫn điều này với một dòng trống, không chứa bất kỳ ký tự nào, thậm chí chí không phải dòng mớiBạn có thể sử dụng ký tự chuỗi của Python để cấu hình dung thứ sau
Điều đầu tiên là một ký tự dài, điều thứ hai không có nội dung
Trong một tình huống rắc rối phổ biến hơn, bạn muốn chuyển một số thông báo đến người dùng cuối. Có một số cách để đạt được điều này Đầu tiên, bạn có thể truyền trực tiếp một chuỗi ký tự đến 45 6Thao tác này sẽ ở dạng nguyên văn thông báo ra màn hình Thứ hai, bạn không thể trích xuất thông báo đó thành biến riêng của nó với một cái tên có ý nghĩa để nâng cao khả năng đọc và kết thúc việc sử dụng lại mã 7Cuối cùng, bạn có thể chuyển một biểu thức, chẳng hạn như chuỗi cuối, để được đánh giá cao trước khi có kết quả 8zzz Đang thực tế, có nhiều cách để định dạng thư trong Python. Tôi thực sự khuyến nghị bạn xem qua f-string , được giới thiệu trong Python 3. 6, vì chúng tôi cung cấp cú pháp thu gọn nhất trong tất cả các số >>> 9Hơn nữa, f-string sẽ giúp bạn không thắc mắc phải một biến phổ biến nào đó, đó là quên nhập các kiểu kết nối tuyến tính. Python là một ngôn ngữ được đánh máy mạnh, có nghĩa là nó sẽ không cho phép bạn làm điều này >>> 0Điều đó là sai vì thêm số vào chuỗi không có ý nghĩa. Trước tiên, bạn cần chuyển đổi chuỗi số thành một cách rõ ràng, để kết hợp chúng với nhau >>> 1Trừ khi bạn tự xử lý các lỗi như vậy, trình thông dịch Python sẽ cho bạn biết về sự cố bằng cách hiển thị một dấu vết Lưu ý. 58 là một hàm tổng hợp toàn cục có chức năng chuyển đổi một đối tượng thành chuỗi biểu diễn của nóBạn có thể gọi nó là trực tiếp trên bất kỳ đối tượng nào, ví dụ. một số >>> 3Các kiểu dữ liệu xây dựng có biểu tượng chuỗi đã được xác định trước bên ngoài hộp, nhưng ở phần sau của bài viết này, bạn sẽ tìm hiểu cách cung cấp một biểu chuỗi cho các lớp tùy chỉnh của mình Như với bất kỳ hàm nào, bạn không quan trọng việc truyền một ký tự, một biến hay một biểu thức. Tuy nhiên, không giống như nhiều chức năng khác, 45 sẽ chấp nhận bất kỳ thứ gì bất kể loại của nóTừ trước đến nay, bạn chỉ nhìn vào chuỗi, còn các kiểu dữ liệu khác thì sao? >>> 0 60 Mặc dù vậy, hãy để ý đến hàng số. Mặc dù được sử dụng để chỉ loại bỏ mặt của một giá trị, nhưng nó sẽ hiển thị dưới dạng 61một chuỗi rỗng>>> 1Làm thế nào không 45 biết làm thế nào để làm việc với tất cả các loại khác nhau? . Nó ngừng gọi 58đằng sau hậu trường để nhập bất kỳ đối tượng nào vào một chuỗi. Sau đó, nó xử lý các chuỗi theo một cách hệ thống nhấtPhần sau của hướng dẫn này, bạn sẽ học cách sử dụng cơ chế này để tùy chỉnh các kiểu dữ liệu, chẳng hạn như các lớp của bạn Được rồi, bây giờ bạn có thể gọi 45với một đối số duy nhất hoặc không có bất kỳ đối số nào. Bạn biết cách trong các tin nhắn đã được cố định hoặc định dạng trên màn hình. Phần phụ tiếp theo sẽ mở rộng về định dạng thư một chútTách nhiều đối sốBạn đã thấy 45được gọi mà không có bất kỳ đối số nào để tạo ra một dòng trống và sau đó được gọi với một đối số duy nhất để hiển thị một thông báo cố định hoặc một thông báo được định dạngTuy nhiên, nó chỉ ra rằng hàm này có thể chấp nhận bất kỳ số lượng đối số vị trí nào, bao gồm không, một hoặc nhiều đối số. Điều đó rất hữu ích trong trường hợp định dạng thư phổ biến, khi bạn muốn kết hợp một vài phần tử lại với nhau Hãy xem ví dụ này >>> 2 45nối tất cả bốn đối số được truyền cho nó và nó thêm một khoảng trống giữa chúng để bạn không kết thúc với một thông báo bị bóp méo như thế 67Lưu ý rằng nó cũng đã quan tâm đến việc ép kiểu thích hợp bằng cách gọi điện 58vào mỗi đối số trước khi kết hợp chúng lại với nhau. Nếu bạn nhớ lại từ tiểu mục trước, một đơn giản ghép được phép có thể dễ dàng dẫn đến lỗi do các kiểu không tương thích>>> 3Ngoài việc chấp nhận một số lượng đối số vị trí khác nhau, 45 xác định bốn đối số có tên hoặc từ khóa, là tùy chọn vì tất cả chúng đều có giá trị mặc định. Bạn có thể xem tài liệu ngắn gọn của họ bằng cách gọi số 70 từ trình thông dịch tương tácBây giờ hãy tập trung vào 71. Nó là viết tắt của dấu phân cách và được gán một dấu cách ( 72) theo mặc định. Nó xác định giá trị để nối các phần tử vớiNó phải là một chuỗi hoặc 60, nhưng cái sau có tác dụng tương tự như khoảng cách mặc định>>> 4Nếu bạn muốn loại bỏ hoàn toàn dấu phân cách, thay vào đó, bạn phải chuyển một chuỗi trống ( 74)>>> 5Bạn có thể muốn 45nối các đối số của nó thành các dòng riêng biệt. Trong trường hợp đó, chỉ cần chuyển ký tự dòng mới thoát được mô tả trước đó>>> 6Một ví dụ hữu ích hơn về 71tham số sẽ nằm trong một cái gì đó giống như đường dẫn tệp>>> 7Hãy nhớ rằng dấu phân cách nằm giữa các phần tử, không xung đột xung quanh chúng, vì vậy bạn cần tính toán điều đó theo cách này hay cách khác >>> 8Cụ thể, bạn có thể chèn một ký tự gạch chéo ( 77) vào đối số vị trí đầu tiên hoặc sử dụng chuỗi rỗng làm đối số đầu tiên để thực hiện dấu gạch chéo đầu tiênLưu ý. Hãy cẩn thận về việc kết nối các phần tử của danh sách hoặc bộ dữ liệu Thực hiện theo cách thủ công sẽ dẫn đến kết quả nổi tiếng 78 nếu ít nhất một trong các phần tử không phải là chuỗi>>> 9Sẽ an toàn hơn nếu chỉ giải nén chuỗi bằng ngôi sao toán tử ( 79) và để 45xử lý kiểu truyền thông>>> 40Trình giải nén cũng giống như tên gọi 45với các phần tử riêng lẻ của danh sáchMột ví dụ thú vị khác có thể là xuất dữ liệu sang định dạng giá trị được phân tách bằng dấu phẩy (CSV) >>> 41Điều này sẽ không xử lý các trường hợp gần như hạn chế như thoát khỏi dấu hôn một cách chính xác, nhưng đối với các trường hợp sử dụng đơn giản, nó sẽ làm được. Dòng trên sẽ hiển thị trong cửa sổ đầu cuối của bạn. Để lưu nó vào một tệp, bạn phải chuyển hướng đầu ra. Ở phần sau của phần này, bạn sẽ thấy cách sử dụng 45 để ghi văn bản vào tệp trực tiếp từ PythonCuối cùng, 71tham số không bị giới hạn chỉ trong một ký tự. Bạn có thể kết nối các phần tử với các chuỗi có độ dài bất kỳ>>> 42Trong các phần phụ sắp tới, bạn sẽ khám phá các đối số từ khóa còn lại của hàm 45Ngăn Ngắt DòngĐôi khi, bạn không muốn kết thúc tin nhắn của mình bằng một dòng mới ở cuối để các cuộc gọi tiếp theo đến 45 sẽ tiếp tục trên cùng một dòng. Các ví dụ cổ điển bao gồm cập nhật tiến trình của một hoạt động dài hạn hoặc nhắc người dùng nhập liệu. Trong trường hợp sau, bạn muốn người dùng nhập câu trả lời trên cùng một dòng 43Trình thiết lập nhiều ngôn ngữ hiển thị các chức năng tương tự như 45thông qua các thư viện tiêu chuẩn của họ, nhưng họ cho phép bạn quyết định có thêm một dòng mới hoặc không. Ví dụ. trong Java và C#, bạn có hai hàm riêng biệt, trong khi các ngôn ngữ khác yêu cầu bạn phải kết nối rõ ràng 87vào cuối một chuỗi ký tựDưới đây là một số ví dụ về cú pháp trong các ngôn ngữ như vậy Ngôn ngữThí dụPerl 88C 89C++ 90Ngược lại, 45hàm của Python luôn thêm 87mà không cần hỏi, vì đó là những gì bạn muốn trong hầu hết các trường hợp. Để vô hiệu hóa nó, bạn có thể tận dụng lợi thế của một đối số từ khóa khác, đối số 93 này cho biết phải kết thúc dòng bằng gìVề nghĩa, 93tham số gần giống như tham số 71mà bạn đã thấy trước đó
Bây giờ bạn đã hiểu điều gì đang xảy ra khi bạn đang gọi 45mà không có đối số. Vì bạn không cung cấp bất kỳ đối số vị trí nào cho hàm nên không có gì được kết nối và do đó dấu phân tách hoàn toàn không được sử dụng. Tuy nhiên, giá trị mặc định của 93 vẫn được áp dụng và một dòng trống sẽ hiển thịLưu ý. Bạn có thể tự hỏi tại sao 93tham số có giá trị mặc định cố định thay vì bất cứ điều gì có ý nghĩa trên hệ thống điều hành của bạnChà, bạn không cần phải lắng nghe về biểu tượng dòng mới trên các hệ điều hành khác nhau khi vào, vì 45 sẽ tự động xử lý chuyển đổi. Chỉ cần nhớ luôn sử dụng 87trình tự thoát trong chuỗi ký tựHiện tại là cách di chuyển tốt nhất cho một ký tự dòng mới trong Python >>> 44Ví dụ. Nếu bạn cố gắng chạy một ký tự dòng mới dành riêng cho Windows trên máy Linux, bạn sẽ nhận được kết quả đầu ra bị hỏng >>> 45Ở bên lật, khi bạn mở tệp để đọc với 405, bạn không cần phải quan tâm đến đại diện xuống dòng trong hai. Hàm sẽ chuyển bất kỳ dòng mới nào của hệ thống cụ thể mà nó gặp phải thành một phổ biến 97. Đồng thời, bạn có quyền kiểm soát cách các dòng mới nên được xử lý như thế nào cả về đầu vào và đầu ra nếu bạn thực sự cần điều đóĐể tắt dòng mới, bạn phải chỉ định một chuỗi thông tin trống qua 93đối số từ khóa 46Mặc dù đây là hai 45 cuộc gọi riêng biệt , có thể thực hiện cách nhau một khoảng thời gian dài, nhưng cuối cùng bạn sẽ chỉ thấy một dòng. Đầu tiên, nó sẽ trông như thế này 47Tuy nhiên, sau cuộc gọi thứ hai đến ______045, dòng tương tự sẽ xuất hiện trên màn hình như 48Tương tự như vậy 71, bạn có thể sử dụng 93 để nối các phần riêng lẻ thành một khối văn bản lớn bằng dấu phân tách tùy chỉnh. Tuy nhiên, thay vì nối nhiều đối số, nó sẽ nối văn bản từ mỗi lệnh gọi hàm vào cùng một dòng 49Ba hướng dẫn này sẽ xuất ra một dòng văn bản 60You can could connect two argument from key 61Bạn không chỉ nhận được một dòng văn bản mà tất cả các mục đều được phân tách bằng dấu phẩy 62Không có gì ngăn bạn sử dụng ký tự dòng mới với một số phần đệm bổ sung xung quanh nó 63Nó sẽ ra đoạn văn bản sau 64Nếu bạn có thể thấy, 93đối số từ khóa sẽ chấp nhận các chuỗi tùy chọnLưu ý. Việc lặp qua các dòng trong tệp văn bản giữ nguyên các ký tự dòng mới của riêng chúng, điều này kết hợp với 45hành vi mặc định của hàm sẽ dẫn đến một dòng ký tự mới dư thừa>>> 65Có hai dòng mới sau mỗi dòng văn bản. Bạn muốn loại bỏ một số trong chúng, như được hiển thị trước đó trong bài viết này, trước khi trong dòng 66Ngoài ra, bạn có thể giữ dòng mới trong nội dung nhưng loại bỏ dòng được thêm vào bằng cách 45tự động. Bạn sẽ sử dụng 93đối số từ khóa để làm điều đó>>> 67Bằng cách kết thúc một dòng bằng một chuỗi trống, bạn vô hiệu hóa một cách hiệu quả trong các dòng mới Bạn đang làm quen nhiều hơn với công việc bằng Python, nhưng vẫn còn rất nhiều thông tin hữu ích ở phía trước. Trong phần phụ sắp tới, bạn sẽ học cách chặn và chuyển hướng 45 đầu ra của hàmIn ra fileTin hay không thì tùy chọn, 45bạn không biết cách biến tin nhắn thành văn bản trên màn hình của bạn và nói thẳng ra là không cần thiết. Đó là công việc dành cho các lớp mã cấp thấp hơn, những lớp này hiểu các byte và biết cách chúng xung đột xung quanh 45là một sự thay đổi đối tượng hóa học trên các lớp này, cung cấp một giao diện thuận lợi chỉ để ủy thác công việc trong thực tế cho một luồng hoặc đối tượng giống tệp. Luồng có thể là bất kỳ tệp nào trên đĩa của bạn, ổ cắm mạng hoặc có thể là bộ đệm trong bộ nhớNgoài ra, có ba luồng tiêu chuẩn được cung cấp bởi hệ thống điều hành
Luồng chuẩn Hiển thị Trong Python, bạn có thể truy cập tất cả các luồng tiêu chuẩn thông qua 422mô-đun tích hợp>>> 68Như bạn có thể thấy, các giá trị được xác định trước đây giống với các đối tượng giống tệp với 423và 424 thuộc tính cũng như 425và 426 theo công thức trong nhiều giá trị khác nhauTheo mặc định, 45được ràng buộc 428thông qua 429đối số của nó , nhưng bạn có thể thay đổi điều đó. Sử dụng đối số từ khóa đó để chỉ ra tệp được mở ở chế độ ghi hoặc kết nối bổ sung, để thông báo đi thẳng đến tệp đó 69Điều này sẽ làm cho mã miễn phí của bạn được mã hóa bằng cách chuyển hướng luồng ở cấp hệ thống điều hành, điều này có thể mong muốn hoặc không thể Để biết thêm thông tin về cách làm việc với tệp bằng Python , bạn có thể xem Đọc và Viết tệp bằng Python (Hướng dẫn) Ghi chú. Đừng thử sử dụng 45 để ghi dữ liệu nhị phân vì nó chỉ phù hợp với văn bảnChỉ cần gọi trực tiếp 426 của tệp nhị phân 70Nếu bạn muốn ghi byte thô trên đầu ra tiêu chuẩn, thì thao tác này cũng sẽ không thành công vì 428 là một luồng ký tự>>> 71Thay vào đó, bạn phải đào sâu hơn để xử lý luồng byte bên dưới >>> 72Thao tác này sẽ in một chữ cái viết hoa 433 và một ký tự xuống dòng, tương ứng với các giá trị thập phân là 65 và 10 trong ASCII. Tuy nhiên, chúng được mã hóa bằng cách sử dụng ký hiệu thập lục phân theo byte chữLưu ý rằng 45 không kiểm soát mã hóa ký tự. Luồng có trách nhiệm mã hóa chính xác các chuỗi Unicode đã nhận thành byte. Trong hầu hết các trường hợp, bạn sẽ không tự đặt mã hóa vì UTF-8 mặc định là những gì bạn muốn. Nếu thực sự cần, có lẽ đối với các hệ thống cũ, bạn có thể sử dụng đối số 424 của 405 73Thay vì một tệp thực tồn tại ở đâu đó trong hệ thống tệp của bạn, bạn có thể cung cấp một tệp giả, tệp này sẽ nằm trong bộ nhớ máy tính của bạn. Sau này, bạn sẽ sử dụng kỹ thuật này để chế nhạo 45 trong bài kiểm tra đơn vị>>> 74Nếu bạn đã đi đến điểm này, thì bạn chỉ còn lại một đối số từ khóa trong 45, mà bạn sẽ thấy trong phần phụ tiếp theo. Nó có lẽ ít được sử dụng nhất trong số chúng. Tuy nhiên, có những lúc nó thực sự cần thiếtBộ nhớ đệm '\n' # Blank line '' # Empty line45 Cuộc gọiTrong tiểu mục trước, bạn đã biết rằng 45 ủy quyền in cho một đối tượng giống như tệp, chẳng hạn như 428. Tuy nhiên, một số luồng đệm một số hoạt động I/O nhất định để nâng cao hiệu suất, điều này có thể cản trở. Hãy xem xét một ví dụHãy tưởng tượng bạn đang viết một đồng hồ đếm ngược, đồng hồ này sẽ thêm thời gian còn lại vào cùng một dòng mỗi giây 75Nỗ lực đầu tiên của bạn có thể trông giống như thế này 76Miễn là biến 442 lớn hơn 0, mã sẽ tiếp tục nối thêm văn bản mà không có dòng mới ở cuối rồi chuyển sang chế độ ngủ trong một giây. Cuối cùng, khi quá trình đếm ngược kết thúc, nó in ra 443 và kết thúc dòngThật bất ngờ, thay vì đếm ngược từng giây, chương trình lại nhàn rỗi một cách lãng phí trong ba giây, rồi đột ngột in toàn bộ dòng cùng một lúc |