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
def fahr_to_kelvin[temp_f]:
temp_c = fahr_to_celsius[temp_f]
temp_k = celsius_to_kelvin[temp_c]
return temp_k
print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
8 chuyển đổi nhiệt độ từ độ F sang độ Cdef fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
Định nghĩa hàm mở đầu bằng từ khóa
def fahr_to_kelvin[temp_f]:
temp_c = fahr_to_celsius[temp_f]
temp_k = celsius_to_kelvin[temp_c]
return temp_k
print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
9 theo sau là tên của hàm [def fahr_to_kelvin[temp_f]:
temp_c = fahr_to_celsius[temp_f]
temp_k = celsius_to_kelvin[temp_c]
return temp_k
print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
8] và danh sách tên tham số được đặt trong ngoặc đơn [boiling point of water in Kelvin: 373.15
1]. 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 boiling point of water in Kelvin: 373.15
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 tôi sử dụng a để 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
fahr_to_celsius[32]
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
print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], '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ảo
Bâ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
def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
0Còn việc chuyển đổi Fahrenheit sang Kelvin thì sao? . Thay vào đó, chúng ta có thể sử dụng hai hàm mà chúng ta đã tạo
def fahr_to_kelvin[temp_f]:
temp_c = fahr_to_celsius[temp_f]
temp_k = celsius_to_kelvin[temp_c]
return temp_k
print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
boiling point of water in Kelvin: 373.15
Đâ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 đổi
Khi 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 đó,
boiling point of water in Kelvin: 373.15
1, boiling point of water in Kelvin: 373.15
4, boiling point of water in Kelvin: 373.15
5 và boiling point of water in Kelvin: 373.15
6. Chúng tôi đề cập đến các biến này bởi vì chúng không còn tồn tại sau khi chức năng được thực thi xong. 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ỗidef fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
7def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
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
boiling point of water in Kelvin: 373.15
7, bạn có thể lưu trữ kết quả của lệnh gọi hàm trong một biếnfahr_to_celsius[32]
0fahr_to_celsius[32]
1Biến
boiling point of water in Kelvin: 373.15
8, được định nghĩa bên ngoài bất kỳ chức năng nào, được cho làBên trong một hàm, người ta có thể đọc giá trị của các biến toàn cục đó
fahr_to_celsius[32]
2fahr_to_celsius[32]
3Làm sạch
Bâ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
boiling point of water in Kelvin: 373.15
9 để tạo các biểu đồ của chúng tafahr_to_celsius[32]
4và một chức năng khác gọi là
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
70 kiểm tra các hệ thống mà chúng tôi nhận thấyfahr_to_celsius[32]
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
boiling point of water in Kelvin: 373.15
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. boiling point of water in Kelvin: 373.15
9, def fahr_to_celsius[temp]:
return [[temp - 32] * [5/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ồ
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
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 def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
74 đơn giản hơn nhiềufahr_to_celsius[32]
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
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
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ệu
Khi 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
fahr_to_celsius[32]
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
fahr_to_celsius[32]
8fahr_to_celsius[32]
9Điều đó có vẻ đúng, vì vậy hãy thử dùng
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
77 trên dữ liệu thực của chúng tôiprint['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
0print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
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
print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
2print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
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
print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
4print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
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 đó
print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
6print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
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ố chức năng của mình để nhắc nhở bản thân sau này 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ư thế này
print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
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ó
print['freezing point of water:', fahr_to_celsius[32], 'C']
print['boiling point of water:', fahr_to_celsius[212], 'C']
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
freezing point of water: 0.0 C
boiling point of water: 100.0 C
0freezing point of water: 0.0 C
boiling point of water: 100.0 C
1Một chuỗi như thế này được gọi là một. 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
freezing point of water: 0.0 C
boiling point of water: 100.0 C
2freezing point of water: 0.0 C
boiling point of water: 100.0 C
3Xác định giá trị mặc định
Chúng ta đã truyền tham số cho hàm theo hai cách. trực tiếp, như trong
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
78, và theo tên, như trong def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
79. Trên thực tế, chúng ta có thể chuyển tên tệp tới def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
80 mà không cần def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
81freezing point of water: 0.0 C
boiling point of water: 100.0 C
4freezing point of water: 0.0 C
boiling point of water: 100.0 C
5nhưng chúng ta vẫn cần phải nói
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
82freezing point of water: 0.0 C
boiling point of water: 100.0 C
6freezing point of water: 0.0 C
boiling point of water: 100.0 C
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
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
77 của chúng ta như thế nàyfreezing point of water: 0.0 C
boiling point of water: 100.0 C
8Thay đổi quan trọng là tham số thứ hai hiện được viết là
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
84 thay vì chỉ def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
85. Nếu chúng ta gọi hàm với hai đối số, nó sẽ hoạt động như trước đâyfreezing point of water: 0.0 C
boiling point of water: 100.0 C
9fahr_to_celsius[32]
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 đó,
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
85 sẽ tự động được gán bằng 0. 0def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
1def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
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ố
def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
3def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
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 được 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
def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
5def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
6Với điều đó trong tay, chúng ta hãy xem trợ giúp cho
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
87def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
7def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
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
def celsius_to_kelvin[temp_c]:
return temp_c + 273.15
print['freezing point of water in Kelvin:', celsius_to_kelvin[0.]]
9Điều này cho chúng ta biết rằng
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
80 có một tham số tên là def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
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àyfreezing point of water: 0.0 C
boiling point of water: 100.0 C
6sau đó tên tệp được gán cho
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
89 [đó là những gì chúng tôi muốn], nhưng chuỗi dấu phân cách fahr_to_celsius[32]
01 được gán cho fahr_to_celsius[32]
02 thay vì fahr_to_celsius[32]
03, vì fahr_to_celsius[32]
02 là tham số thứ hai trong danh sách. Tuy nhiên, fahr_to_celsius[32]
01 không phải là một fahr_to_celsius[32]
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 def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
80, chúng ta không phải cung cấp tên tệp ____ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ ____ chức năng có thể đọc được
Hãy xem xét hai chức năng này
def fahr_to_celsius[temp]:
return [[temp - 32] * [5/9]]
01Các hàm
fahr_to_celsius[32]
13 và fahr_to_celsius[32]
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 fahr_to_celsius[32]
14 dễ đọc và dễ hiểu hơn nhiều so với fahr_to_celsius[32]
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
kết hợp chuỗi
“Cộng” hai chuỗi tạo ra sự nối của chúng.
17 làfahr_to_celsius[32]
18. Viết một hàm có tên làfahr_to_celsius[32]
19 nhận vào hai tham số có tên làfahr_to_celsius[32]
20 vàfahr_to_celsius[32]
21 và trả về một chuỗi mới có ký tự bao bọc ở đầu và cuối của chuỗi gốc. Một cuộc gọi đến chức năng của bạn sẽ giống như thế nàyfahr_to_celsius[32]
02def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
03def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
Dung dịch
04def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
Trả lại so với in
Lưu ý rằng
2 vàboiling point of water in Kelvin: 373.15
23 không thể hoán đổi cho nhau.fahr_to_celsius[32]
23 là một hàm Python in dữ liệu ra màn hình. Nó cho phép chúng tôi, người dùng, xem dữ liệu. Mặt khác, câu lệnhfahr_to_celsius[32]
2 làm cho chương trình hiển thị dữ liệu. Hãy cùng xem chức năng sauboiling point of water in Kelvin: 373.15
05def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
Câu hỏi. Chúng ta sẽ thấy gì nếu thực hiện các lệnh sau đây?
06def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
Dung dịch
Đầu tiên, Python sẽ thực thi hàm
26 vớifahr_to_celsius[32]
27 vàfahr_to_celsius[32]
28, và do đó, in rafahr_to_celsius[32]
29. Tuy nhiên, vì hàmfahr_to_celsius[32]
26 không có dòng bắt đầu bằngfahr_to_celsius[32]
2 [không có “câu lệnh”boiling point of water in Kelvin: 373.15
2], theo mặc định, nó sẽ không trả về gì cả, trong thế giới Python, được gọi làboiling point of water in Kelvin: 373.15
33. Do đó,fahr_to_celsius[32]
34 sẽ được gán chofahr_to_celsius[32]
33 và dòng cuối cùng [fahr_to_celsius[32]
36] sẽ in rafahr_to_celsius[32]
33. Kết quả là, chúng ta sẽ thấyfahr_to_celsius[32]
07def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
Chọn ký tự từ chuỗi
Nếu biến
13 đề cập đến một chuỗi, thìfahr_to_celsius[32]
39 là ký tự đầu tiên của chuỗi vàfahr_to_celsius[32]
40 là ký tự cuối cùng của chuỗi đó. Viết một hàm có tên làfahr_to_celsius[32]
41 trả về một chuỗi chỉ gồm các ký tự đầu tiên và cuối cùng của đầu vào của nó. Một cuộc gọi đến chức năng của bạn sẽ giống như thế nàyfahr_to_celsius[32]
08def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
09def fahr_to_celsius[temp]: return [[temp - 32] * [5/9]]
Dung dịch
0def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
Thay đổi kích thước một mảng
Viết hàm
42 lấy một mảng làm đầu vào và trả về một mảng tương ứng các giá trị được chia tỷ lệ nằm trong phạm vi 0. 0 đến 1. 0. [Gợi ý. Nếufahr_to_celsius[32]
43 vàfahr_to_celsius[32]
44 là các giá trị thấp nhất và cao nhất trong mảng ban đầu, thì giá trị thay thế cho giá trịfahr_to_celsius[32]
45 phải làfahr_to_celsius[32]
46. ]fahr_to_celsius[32]
Dung dịch
1def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
Kiểm tra và ghi lại chức năng của bạn
Chạy các lệnh
47 vàfahr_to_celsius[32]
48 để xem cách sử dụng các hàm này để tạo các giá trị có khoảng cách đều nhau, sau đó sử dụng các giá trị đó để kiểm tra hàmfahr_to_celsius[32]
42 của bạn. Khi bạn đã kiểm tra thành công chức năng của mình, hãy thêm một chuỗi tài liệu giải thích chức năng của nófahr_to_celsius[32]
Dung dịch
2def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
Xác định giá trị mặc định
Viết lại hàm
42 để nó chia tỷ lệ dữ liệu nằm giữafahr_to_celsius[32]
51 vàfahr_to_celsius[32]
52 theo mặc định, nhưng sẽ cho phép người gọi chỉ định giới hạn dưới và trên nếu họ muốn. So sánh việc triển khai của bạn với hàng xóm của bạn. hai chức năng luôn hoạt động theo cùng một cách?fahr_to_celsius[32]
Dung dịch
3def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
Các biến chức năng bên trong và bên ngoài
Đoạn mã sau hiển thị gì khi chạy — và tại sao?
4def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
Dung dịch
5def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
53 là 0 vìfahr_to_celsius[32]
53 bên trong hàmfahr_to_celsius[32]
55 không biết vềfahr_to_celsius[32]
53 được xác định bên ngoài hàm. Khi hàmfahr_to_celsius[32]
55 được gọi, nó sẽ tạo ra mộtfahr_to_celsius[32]
53. Hàm không trả về bất kỳ giá trị nào và không thay đổifahr_to_celsius[32]
53 bên ngoài bản sao cục bộ của nó. Do đó giá trị ban đầu củafahr_to_celsius[32]
53 không thay đổi. Coi chừng mộtfahr_to_celsius[32]
53 cục bộ được tạo vì các câu lệnh nội bộ củafahr_to_celsius[32]
55 ảnh hưởng đến một giá trị mới cho nó. Nếufahr_to_celsius[32]
53 chỉ làfahr_to_celsius[32]
64, nó sẽ chỉ truy xuất giá trị toàn cục củafahr_to_celsius[32]
53fahr_to_celsius[32]
Trộn các tham số mặc định và không mặc định
Cho đoạn mã sau
6def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
những gì bạn mong đợi sẽ được in?
66fahr_to_celsius[32]
67fahr_to_celsius[32]
68fahr_to_celsius[32]
69fahr_to_celsius[32]
Cho rằng đoạn mã sau hiển thị khi chạy?
7def fahr_to_kelvin[temp_f]: temp_c = fahr_to_celsius[temp_f] temp_k = celsius_to_kelvin[temp_c] return temp_k print['boiling point of water in Kelvin:', fahr_to_kelvin[212.0]]
70fahr_to_celsius[32]
71fahr_to_celsius[32]
72fahr_to_celsius[32]
73fahr_to_celsius[32]
Dung dịch
Cố gắng xác định hàm
74 dẫn đến kết quả làfahr_to_celsius[32]
75. Các tham số đã xác địnhfahr_to_celsius[32]
76 vàfahr_to_celsius[32]
77 được cung cấp các giá trị mặc định. Bởi vìfahr_to_celsius[32]
78 vàfahr_to_celsius[32]
79 không được cung cấp giá trị mặc định, chúng bắt buộc phải được đưa vào làm đối số khi hàm được gọi và phải được đặt trước bất kỳ tham số nào có giá trị mặc định trong định nghĩa hàmfahr_to_celsius[32]
Cuộc gọi đã cho đến
80 hiển thịfahr_to_celsius[32]
72. -1 được gán cho tham số đầu tiênfahr_to_celsius[32]
82, 2 được gán cho tham số tiếp theofahr_to_celsius[32]
83 vàfahr_to_celsius[32]
84 không được truyền giá trị, vì vậy nó sử dụng giá trị mặc định 6fahr_to_celsius[32]
Mã có thể đọc được
Sửa lại hàm bạn đã viết cho một trong các bài tập trước để cố gắng làm cho mã dễ đọc hơn. Sau đó, cộng tác với một trong những người hàng xóm của bạn để phê bình các chức năng của nhau và thảo luận về cách có thể cải thiện hơn nữa việc triển khai chức năng của bạn để làm cho chúng dễ đọc hơn
Những điểm chính
Xác định hàm bằng cách sử dụng
85fahr_to_celsius[32]
Phần thân của hàm phải được thụt lề
Gọi một chức năng bằng cách sử dụng
86fahr_to_celsius[32]
Các số được lưu trữ dưới dạng số nguyên hoặc số dấu phẩy động
Các biến được xác định trong một hàm chỉ có thể được nhìn thấy và sử dụng trong phần thân của hàm
Các biến được tạo bên ngoài bất kỳ hàm nào được gọi là biến toàn cục
Trong một hàm, chúng ta có thể truy cập các biến toàn cục
Các biến được tạo trong một hàm sẽ ghi đè các biến toàn cục nếu tên của chúng khớp với nhau
Sử dụng
87 để xem trợ giúp cho điều gì đófahr_to_celsius[32]
Đặt docstrings trong chức năng để cung cấp trợ giúp cho chức năng đó
Chỉ định giá trị mặc định cho tham số khi xác định hàm bằng cách sử dụng
88 trong danh sách tham sốfahr_to_celsius[32]
Các tham số có thể được chuyển bằng cách khớp dựa trên tên, theo vị trí hoặc bằng cách bỏ qua chúng [trong trường hợp đó, giá trị mặc định được sử dụng]
Đặt mã có các tham số thay đổi thường xuyên trong một hàm, sau đó gọi nó với các giá trị tham số khác nhau để tùy chỉnh hành vi của nó
Cách chính xác để tạo một hàm trong Python là gì?
Cú pháp cơ bản để xác định hàm trong Python . Điều tiếp theo bạn phải làm là đảm bảo rằng bạn thụt lề bằng một tab hoặc 4 dấu cách, sau đó chỉ định những gì bạn muốn chức năng thực hiện cho mình. define a function with the def keyword, then write the function identifier [name] followed by parentheses and a colon. The next thing you have to do is make sure you indent with a tab or 4 spaces, and then specify what you want the function to do for you.Python có chức năng trung bình không?
thống kê Python. hàm trung bình [] . Nó trả về giá trị trung bình của tập dữ liệu được truyền dưới dạng tham số. Giá trị trung bình số học là tổng dữ liệu chia cho số lượng điểm dữ liệuHàm nào được sử dụng để tìm giá trị trung bình?
Mô tả. Trả về giá trị trung bình [trung bình cộng] của các đối số. Ví dụ: nếu phạm vi A1. A20 chứa các số, công thức =AVERAGE[A1. A20] trả về giá trị trung bình của những số đó.