Làm thế nào là một hàm được viết bằng ngôn ngữ lập trình Python Chọn câu trả lời đúng?
Tại thời điểm này, chúng tôi đã viết mã để vẽ một số tính năng thú vị trong dữ liệu viêm nhiễm của mình, lặp lại tất cả các tệp dữ liệu của chúng tôi để nhanh chóng vẽ các biểu đồ này cho từng tệp và để Python đưa ra quyết định dựa trên những gì nó thấy trong dữ liệu của chúng tôi. Tuy nhiên, mã của chúng tôi đang trở nên khá dài và phức tạp; . Ngoài ra, điều gì sẽ xảy ra nếu chúng ta muốn sử dụng lại mã đó, trên một tập dữ liệu khác hoặc tại một điểm khác trong chương trình của chúng ta? . Chúng tôi muốn có một cách để đóng gói mã của mình để dễ sử dụng lại hơn và Python cung cấp điều này bằng cách cho phép chúng tôi xác định những thứ gọi là 'hàm' - một cách viết tắt để thực thi lại các đoạn mã dài hơn. Hãy bắt đầu bằng cách xác định hàm 8 chuyển đổi nhiệt độ từ độ F sang độ C Show
Định nghĩa hàm mở ra bằng từ khóa 9 theo sau là tên của hàm ( 8) và danh sách tên tham số được đặt trong ngoặc đơn ( 1). Phần thân của hàm — các câu lệnh được thực thi khi nó chạy — được thụt vào bên dưới dòng định nghĩa. Phần thân kết thúc bằng từ khóa 2 theo sau là giá trị trả vềKhi chúng ta gọi hàm, các giá trị chúng ta truyền cho nó sẽ được gán cho các biến đó để chúng ta có thể sử dụng chúng bên trong hàm. Bên trong hàm, chúng ta sử dụng câu lệnh return để gửi kết quả lại cho bất kỳ ai đã yêu cầu kết quả đó Hãy thử chạy chức năng của chúng tôi
Lệnh này sẽ gọi hàm của chúng ta, sử dụng “32” làm đầu vào và trả về giá trị hàm Trên thực tế, gọi hàm của chính chúng ta không khác gì gọi bất kỳ hàm nào khác
________số 8 Chúng tôi đã gọi thành công hàm mà chúng tôi đã xác định và chúng tôi có quyền truy cập vào giá trị mà chúng tôi đã trả về Hàm soạn thảoBây giờ chúng ta đã biết cách biến độ F thành độ C, chúng ta cũng có thể viết hàm để biến độ C thành độ Kelvin
0Còn việc chuyển đổi Fahrenheit sang Kelvin thì sao? . Thay vào đó, chúng ta có thể soạn hai hàm mà chúng ta đã tạo
Đây là hương vị đầu tiên của chúng tôi về cách các chương trình lớn hơn được xây dựng. chúng tôi xác định các hoạt động cơ bản, sau đó kết hợp chúng thành các khối lớn hơn bao giờ hết để đạt được hiệu quả mà chúng tôi muốn. Các hàm thực tế thường sẽ lớn hơn các hàm được hiển thị ở đây — thường là từ nửa tá đến vài chục dòng — nhưng chúng không bao giờ dài hơn thế nhiều, nếu không người tiếp theo đọc nó sẽ không thể hiểu được Phạm vi biến đổiKhi soạn các hàm chuyển đổi nhiệt độ, chúng tôi đã tạo các biến bên trong các hàm đó, 1, 4, 5 và 6. Chúng tôi gọi các biến này là biến cục bộ vì chúng không còn tồn tại sau khi thực thi xong hàm. Nếu chúng ta cố gắng truy cập các giá trị của chúng bên ngoài hàm, chúng ta sẽ gặp lỗi 7 8Nếu bạn muốn sử dụng lại nhiệt độ theo đơn vị Kelvin sau khi đã tính toán nó với 7, bạn có thể lưu trữ kết quả của lệnh gọi hàm trong một biến 0 1Biến 8, được định nghĩa bên ngoài bất kỳ hàm nào, được gọi là toàn cụcBên trong một hàm, người ta có thể đọc giá trị của các biến toàn cục đó 2 3Làm sạchBây giờ chúng ta đã biết cách gói các đoạn mã trong các hàm, chúng ta có thể làm cho phân tích tình trạng viêm của chúng ta dễ đọc hơn và dễ sử dụng lại hơn. Trước tiên, hãy tạo một hàm 9 để tạo các biểu đồ của chúng ta 4và một chức năng khác gọi là 70 kiểm tra các hệ thống mà chúng tôi nhận thấy 5Đợi đã. Chẳng phải chúng ta đã quên chỉ định cái mà cả hai hàm này sẽ trả về sao? . Trong Python, các hàm không bắt buộc phải bao gồm câu lệnh 2 và có thể được sử dụng cho mục đích duy nhất là nhóm các đoạn mã lại với nhau để thực hiện một việc theo khái niệm. Trong những trường hợp như vậy, tên hàm thường mô tả chức năng của chúng, e. g. 9, 70Lưu ý rằng thay vì trộn mã này với nhau trong một vòng lặp khổng lồ 74, giờ đây chúng ta có thể đọc và sử dụng lại cả hai ý tưởng một cách riêng biệt. Chúng ta có thể tạo lại phân tích trước đó bằng một vòng lặp 74 đơn giản hơn nhiều 6Bằng cách đặt tên cho các chức năng mà con người có thể đọc được, chúng ta có thể dễ dàng đọc và hiểu những gì đang xảy ra trong vòng lặp 74. Thậm chí tốt hơn, nếu vào một ngày nào đó sau này chúng ta muốn sử dụng lại một trong hai đoạn mã đó, chúng ta có thể làm như vậy trong một dòng duy nhấtKiểm tra và tài liệuKhi chúng tôi bắt đầu đưa mọi thứ vào các chức năng để chúng tôi có thể sử dụng lại chúng, chúng tôi cần bắt đầu kiểm tra xem các chức năng đó có hoạt động chính xác không. Để xem cách thực hiện việc này, hãy viết một hàm để bù một tập dữ liệu sao cho giá trị trung bình của nó chuyển sang giá trị do người dùng xác định 7Chúng tôi có thể kiểm tra điều này trên dữ liệu thực tế của mình, nhưng vì chúng tôi không biết giá trị phải là bao nhiêu nên sẽ khó biết được kết quả có chính xác hay không. Thay vào đó, hãy sử dụng NumPy để tạo ma trận 0 và sau đó bù các giá trị của nó để có giá trị trung bình là 3 8 9Điều đó có vẻ đúng, vì vậy hãy thử dùng 77 trên dữ liệu thực của chúng tôi 0 1Thật khó để nói từ đầu ra mặc định liệu kết quả có chính xác hay không, nhưng có một vài thử nghiệm mà chúng tôi có thể chạy để trấn an chúng tôi 2 3Điều đó có vẻ gần như đúng. ý nghĩa ban đầu là khoảng 6. 1, vì vậy giới hạn dưới từ 0 bây giờ là khoảng -6. 1. Giá trị trung bình của dữ liệu bù đắp không hoàn toàn bằng không — chúng ta sẽ khám phá lý do tại sao không phải trong các thử thách — nhưng nó cũng khá gần. Chúng tôi thậm chí có thể đi xa hơn và kiểm tra xem độ lệch chuẩn không thay đổi 4 5Các giá trị đó trông giống nhau, nhưng có lẽ chúng ta sẽ không nhận thấy nếu chúng khác nhau ở vị trí thập phân thứ sáu. Hãy làm điều này thay vào đó 6 7Một lần nữa, sự khác biệt là rất nhỏ. Vẫn có khả năng chức năng của chúng ta bị sai, nhưng có vẻ như không đủ khả năng để chúng ta quay lại thực hiện phân tích của mình. Tuy nhiên, chúng tôi có một nhiệm vụ nữa trước tiên. chúng ta nên viết một số tài liệu cho chức năng của mình để sau này nhắc nhở bản thân rằng nó dùng để làm gì và sử dụng nó như thế nào Cách thông thường để đưa tài liệu vào phần mềm là thêm nhận xét như thế này 8Có một cách tốt hơn, mặc dù. Nếu điều đầu tiên trong một hàm là một chuỗi không được gán cho một biến, chuỗi đó sẽ được đính kèm vào hàm dưới dạng tài liệu của nó 9Điều này tốt hơn vì giờ đây chúng ta có thể yêu cầu hệ thống trợ giúp tích hợp sẵn của Python hiển thị cho chúng ta tài liệu về chức năng 0 1Một chuỗi như thế này được gọi là docstring. Chúng ta không cần sử dụng ba dấu ngoặc kép khi viết một dấu ngoặc kép, nhưng nếu làm như vậy, chúng ta có thể ngắt chuỗi trên nhiều dòng 2 3Xác định giá trị mặc địnhChúng ta đã truyền tham số cho hàm theo hai cách. trực tiếp, như trong 78, và theo tên, như trong 79. Trên thực tế, chúng ta có thể chuyển tên tệp tới 80 mà không cần 81 4 5nhưng chúng ta vẫn cần phải nói 82 6 7Để hiểu chuyện gì đang xảy ra và làm cho các hàm của chúng ta dễ sử dụng hơn, hãy xác định lại hàm 77 của chúng ta như thế này 8Thay đổi quan trọng là tham số thứ hai hiện được viết là 84 thay vì chỉ 85. Nếu chúng ta gọi hàm với hai đối số, nó sẽ hoạt động như trước đây 9 9Nhưng bây giờ chúng ta cũng có thể gọi nó chỉ với một tham số, trong trường hợp đó, 85 sẽ tự động được gán giá trị mặc định là 0. 0 1 2cái này tiện dụng. nếu chúng ta thường muốn một chức năng hoạt động theo một cách, nhưng đôi khi cần nó làm việc khác, chúng ta có thể cho phép mọi người chuyển tham số khi họ cần nhưng cung cấp giá trị mặc định để làm cho trường hợp thông thường dễ dàng hơn. Ví dụ dưới đây cho thấy cách Python khớp giá trị với tham số 3 4Như ví dụ này cho thấy, các tham số được so khớp từ trái sang phải và bất kỳ tham số nào chưa được cung cấp giá trị rõ ràng sẽ nhận giá trị mặc định của chúng. Chúng tôi có thể ghi đè hành vi này bằng cách đặt tên cho giá trị khi chúng tôi chuyển nó vào 5 6Với điều đó trong tay, chúng ta hãy xem trợ giúp cho 87 7 8Có rất nhiều thông tin ở đây, nhưng phần quan trọng nhất là vài dòng đầu tiên 9Điều này cho chúng ta biết rằng 80 có một tham số tên là 89 không có giá trị mặc định và tám tham số khác có giá trị mặc định. Nếu chúng ta gọi hàm như thế này 6sau đó tên tệp được gán cho 89 (đó là những gì chúng tôi muốn), nhưng chuỗi dấu phân cách 01 được gán cho 02 thay vì 03, vì 02 là tham số thứ hai trong danh sách. Tuy nhiên, 01 không phải là một 02 đã biết nên mã của chúng tôi tạo ra thông báo lỗi khi chúng tôi cố chạy nó. Khi gọi 80, chúng ta không phải cung cấp tên tệp ____ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ '' chức năng có thể đọc đượcHãy xem xét hai chức năng này 01Các hàm 13 và 14 tương đương về mặt tính toán (cả hai đều tính toán độ lệch chuẩn mẫu), nhưng đối với người đọc, chúng trông rất khác nhau. Bạn có thể thấy 14 dễ đọc và dễ hiểu hơn nhiều so với 13Như ví dụ này minh họa, cả tài liệu và phong cách viết mã của lập trình viên kết hợp với nhau để xác định mức độ dễ dàng để người khác đọc và hiểu mã của lập trình viên. Chọn tên biến có ý nghĩa và sử dụng khoảng trống để chia mã thành các “khối” hợp lý là những kỹ thuật hữu ích để tạo mã có thể đọc được. Điều này hữu ích không chỉ cho việc chia sẻ mã với người khác mà còn cho lập trình viên ban đầu. Nếu bạn cần xem lại mã mà bạn đã viết nhiều tháng trước và chưa nghĩ đến kể từ đó, bạn sẽ đánh giá cao giá trị của mã có thể đọc được
|