Trước đây trong sách giáo khoa này, bạn đã biết rằng tham số đầu vào là thông tin bắt buộc mà bạn chuyển đến hàm để hàm chạy thành công. Hàm sẽ lấy giá trị hoặc đối tượng được cung cấp làm tham số đầu vào và sử dụng nó để thực hiện một số tác vụ
Bạn cũng đã học được rằng trong Python, tham số bắt buộc có thể được xác định bằng cách sử dụng biến giữ chỗ, chẳng hạn như
def multiply_values[x,y]:
z = x * y
return z
7, đại diện cho giá trị hoặc đối tượng sẽ được thực hiện trong hàmdef function_name[data]:
Tuy nhiên, đôi khi bạn có thể cần thêm thông tin để chức năng chạy thành công
May mắn thay, bạn có thể viết các hàm nhận nhiều hơn một tham số bằng cách xác định bao nhiêu tham số nếu cần, chẳng hạn
def function_name[data_1, data_2]:
Khi hàm được gọi, người dùng có thể cung cấp bất kỳ giá trị nào cho
def multiply_values[x,y]:
z = x * y
return z
8 hoặc def multiply_values[x,y]:
z = x * y
return z
9 mà hàm có thể lấy làm đầu vào cho tham số đó [e. g. biến giá trị đơn, danh sách, mảng có nhiều mảng, cột khung dữ liệu gấu trúc]Viết một hàm với nhiều tham số trong Python
Hãy tưởng tượng rằng bạn muốn xác định một hàm sẽ nhận hai giá trị số làm đầu vào và trả về tích của các giá trị đầu vào này [i. e. nhân các giá trị]
Bắt đầu với từ khóa
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
0 và tên hàm, giống như bạn đã làm trước đây để xác định một hàmdef multiply_values
Tiếp theo, cung cấp hai tên biến giữ chỗ cho các tham số đầu vào, như hình bên dưới
def multiply_values[x,y]:
Thêm mã để nhân các giá trị và câu lệnh
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
1 để trả về tích của hai giá trịdef multiply_values[x,y]:
z = x * y
return z
Cuối cùng, hãy viết một chuỗi tài liệu để cung cấp thông tin chi tiết về chức năng này, bao gồm một mô tả ngắn gọn về chức năng [i. e. cách thức hoạt động, mục đích] cũng như xác định các thông số đầu vào [i. e. loại, mô tả] và kết quả trả về [i. e. loại, mô tả]
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
Gọi các hàm tùy chỉnh với nhiều tham số trong Python
Bây giờ bạn đã định nghĩa hàm
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
2, bạn có thể gọi nó bằng cách cung cấp các giá trị cho hai tham số đầu vàodef function_name[data]:
2def function_name[data]:
3Nhớ lại rằng bạn cũng có thể cung cấp các biến được xác định trước làm đầu vào, ví dụ: giá trị cho lượng mưa và giá trị khác cho giá trị chuyển đổi đơn vị
def function_name[data]:
4def function_name[data]:
5def function_name[data]:
3Lưu ý rằng hàm này không được xác định cụ thể cho các chuyển đổi đơn vị, nhưng vì nó hoàn thành một tác vụ có thể khái quát hóa nên nó có thể được sử dụng cho các chuyển đổi đơn vị đơn giản
Kết hợp chuyển đổi đơn vị và tính toán thống kê thành một chức năng
Bây giờ, hãy tưởng tượng rằng bạn muốn chuyển đổi cả đơn vị của một mảng có nhiều mảng từ milimét sang inch và tính giá trị trung bình dọc theo một trục xác định cho cột hoặc hàng
Nhớ lại định nghĩa hàm mà bạn đã viết trước đây để chuyển đổi các giá trị từ milimét sang inch
def function_name[data_1, data_2]:
1Bạn có thể mở rộng hàm này để bao gồm việc chạy giá trị trung bình dọc theo một trục đã chỉ định cho các cột hoặc hàng, sau đó sử dụng lặp đi lặp lại hàm này trên nhiều mảng có nhiều mảng khi cần
Chức năng mới này có thể có các tên mô tả cho chức năng và các tham số đầu vào mô tả rõ ràng hơn những gì chức năng thực hiện
Bắt đầu bằng cách xác định chức năng với tên mô tả và hai tham số cần thiết
- mảng đầu vào với các giá trị tính bằng milimét
- giá trị trục cho phép tính trung bình
Sử dụng các tên biến giữ chỗ làm nổi bật mục đích của từng tham số
def function_name[data_1, data_2]:
2Tiếp theo, thêm mã để trước tiên tính giá trị trung bình của mảng đầu vào dọc theo một trục đã chỉ định, sau đó chuyển đổi giá trị trung bình từ milimét sang inch
Đầu tiên, thêm dòng mã để tính giá trị trung bình dọc theo một trục đã chỉ định
def function_name[data_1, data_2]:
3Tiếp theo, thêm dòng mã để chuyển đổi mảng trung bình từ milimét sang inch. Trong trường hợp này, câu lệnh
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
1 sẽ trả về giá trị trung bình của mảng tính bằng inchdef function_name[data_1, data_2]:
4Lưu ý rằng hàm có thể được viết để chuyển đổi các giá trị trước rồi tính giá trị trung bình. Tuy nhiên, do hàm sẽ hoàn thành cả hai tác vụ và trả về giá trị trung bình theo đơn vị mong muốn, nên tính toán giá trị trung bình trước rồi chỉ chuyển đổi các giá trị đó sẽ hiệu quả hơn thay vì chuyển đổi tất cả các giá trị trong mảng đầu vào
Cuối cùng, bao gồm một chuỗi tài liệu để cung cấp thông tin chi tiết về chức năng này, bao gồm một mô tả ngắn gọn về chức năng [i. e. cách thức hoạt động, mục đích] cũng như xác định các thông số đầu vào [i. e. loại, mô tả] và kết quả trả về [i. e. loại, mô tả]
def function_name[data_1, data_2]:
5Bây giờ bạn đã xác định được
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
4, bạn có thể gọi hàm với các tham số đầu vào phù hợpTạo một số dữ liệu và kiểm tra chức năng mới của bạn với các giá trị đầu vào khác nhau cho tham số
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
5def function_name[data_1, data_2]:
6def function_name[data_1, data_2]:
7def function_name[data_1, data_2]:
8def function_name[data_1, data_2]:
9def multiply_values
0def multiply_values
1Xác định tham số đầu vào tùy chọn cho một chức năng
Hàm đã xác định trước đó của bạn hoạt động tốt nếu bạn muốn sử dụng một trục cụ thể cho giá trị trung bình
Tuy nhiên, hãy lưu ý điều gì sẽ xảy ra khi bạn cố gắng gọi hàm mà không cung cấp giá trị trục, chẳng hạn như đối với mảng một chiều
def multiply_values
2def multiply_values
3Bạn gặp lỗi thiếu
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
5def multiply_values
4Điều gì sẽ xảy ra nếu bạn muốn làm cho hàm trở nên tổng quát hơn, để giá trị trục là tùy chọn?
Bạn có thể làm điều đó bằng cách chỉ định giá trị mặc định cho
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
5 là def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
8 như hình bên dướidef multiply_values
5Hàm sẽ giả định rằng giá trị trục là
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
8 [i. e. giá trị đầu vào chưa được người dùng cung cấp], trừ khi được chỉ định khác trong lệnh gọi hàmTuy nhiên, như đã viết, mã hàm ban đầu sử dụng giá trị trục để tính giá trị trung bình, vì vậy bạn cần thực hiện thêm một số thay đổi để mã trung bình chạy với giá trị trục nếu giá trị được cung cấp hoặc chạy không có giá trị trục nếu
May mắn thay, bạn đã học về các câu lệnh có điều kiện, giờ đây bạn có thể thêm câu lệnh này vào hàm của mình để chạy mã trung bình có hoặc không có giá trị trục khi cần
Sử dụng câu lệnh có điều kiện, bạn có thể kiểm tra xem
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
5 có bằng def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
8 hay không, trong trường hợp đó, mã trung bình sẽ chạy mà không có giá trị trụcdef multiply_values
6Câu lệnh
def function_name[data]:
22 có nghĩa là def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
5 không bằng def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
8 [i. e. người dùng đã cung cấp giá trị đầu vào] và do đó sẽ chạy mã trung bình với giá trị trục được chỉ địnhdef multiply_values
7Mã để chuyển đổi đơn vị và
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
1 vẫn giữ nguyên, chỉ với tên được cập nhậtdef multiply_values
8Cuối cùng, bao gồm một chuỗi tài liệu để cung cấp thông tin chi tiết về chức năng đã sửa đổi này. Lưu ý rằng giá trị trục đã được gắn nhãn tùy chọn trong chuỗi tài liệu
def multiply_values
9Lưu ý rằng hàm sẽ trả về cùng một đầu ra như trước cho mảng hai chiều
def function_name[data]:
26def function_name[data_1, data_2]:
8def function_name[data_1, data_2]:
9Tuy nhiên, bây giờ bạn cũng có thể cung cấp mảng một chiều làm đầu vào mà không cần trục xác định và nhận đầu ra phù hợp
def multiply_values[x,y]:
2def multiply_values[x,y]:
3Kết hợp tải xuống và nhập tệp dữ liệu vào một chức năng
Bạn cũng có thể viết các hàm đa tham số để kết hợp các tác vụ khác thành một hàm, chẳng hạn như tải xuống và nhập tệp dữ liệu vào khung dữ liệu gấu trúc
Hãy suy nghĩ về mã mà bạn cần đưa vào chức năng
- tải xuống tệp dữ liệu từ URL.
27def function_name[data]:
- nhập tệp dữ liệu vào khung dữ liệu gấu trúc.
28def function_name[data]:
Từ mã này, bạn có thể thấy rằng bạn sẽ cần hai tham số đầu vào cho hàm kết hợp
- URL tới tệp dữ liệu
- đường dẫn đến tệp đã tải xuống
Bắt đầu bằng cách chỉ định tên hàm và tên biến giữ chỗ cho các tham số đầu vào cần thiết
def multiply_values[x,y]:
4Tiếp theo, thêm mã để tải xuống và nhập
def multiply_values[x,y]:
5Tuy nhiên, nếu thư mục làm việc chưa được thiết lập trước khi hàm này được gọi và bạn không muốn sử dụng đường dẫn tuyệt đối thì sao?
Vì bạn biết rằng hàm
def function_name[data]:
29 tạo thư mục def function_name[data]:
30 trong thư mục chính nếu nó chưa tồn tại, nên bạn có thể yên tâm giả định rằng hàm kết hợp này cũng sẽ tạo thư mục đóNhư vậy, bạn có thể bao gồm việc đặt thư mục làm việc trong hàm, do đó bạn không phải lo lắng về việc cung cấp đường dẫn tuyệt đối cho hàm
def multiply_values[x,y]:
6Cuối cùng, bao gồm một chuỗi tài liệu để cung cấp thông tin chi tiết về chức năng này, bao gồm một mô tả ngắn gọn về chức năng [i. e. cách thức hoạt động, mục đích] cũng như xác định các thông số đầu vào [i. e. loại, mô tả] và kết quả trả về [i. e. loại, mô tả]
def multiply_values[x,y]:
7Bây giờ bạn đã xác định chức năng, bạn có thể nhập các gói cần thiết để chạy chức năng và xác định các biến mà bạn sẽ sử dụng làm tham số đầu vào
def multiply_values[x,y]:
8def multiply_values[x,y]:
9Sử dụng các biến này, giờ đây bạn có thể gọi hàm để tải xuống và nhập tệp vào khung dữ liệu gấu trúc
def multiply_values[x,y]:
z = x * y
return z
0def multiply_values[x,y]:
z = x * y
return z
1thángprecip_2002precip_2013mùa0Jan1. 070. 27Mùa đông1 tháng 20. 441. 13Mùa đông2tháng 31. 501. 72Mùa xuân3 tháng 4. 204. 14Mùa xuân4Tháng 3. 202. 66Xuân5Tháng Sáu1. 180. 61Mùa hè6Tháng 70. 091. 03Mùa hè7Tháng 81. 441. 40Mùa hè 8 tháng 91. 5218. 16Mùa thu9 tháng 102. 442. 24Mùa thu10Nov0. 780. 29Mùa thu11Dec0. 020. 50Mùa đông
Làm cho chức năng hiệu quả hơn không phải lúc nào cũng có nghĩa là nhiều tham số hơn
Lưu ý rằng trước đó bạn đã xác định
def function_name[data]:
31 để nhận hai tham số, một cho URL và cho đường dẫn và chức năng này hoạt động tốt để hoàn thành tác vụTuy nhiên, với một cuộc điều tra nhỏ về chức năng
def function_name[data]:
32, bạn có thể thấy rằng đầu ra của chức năng đó thực sự là một đường dẫn đến tệp đã tải xuốngdef multiply_values[x,y]:
z = x * y
return z
2Trong chi tiết chuỗi tài liệu được cung cấp, bạn có thể thấy rằng hàm trả về đường dẫn đầy đủ đến dữ liệu đã tải xuống
def multiply_values[x,y]:
z = x * y
return z
3Điều này có nghĩa là bạn có thể xác định lại
def function_name[data]:
31 để hiệu quả hơn bằng cách sử dụng đầu ra của hàm def function_name[data]:
32 làm đầu vào cho hàm def function_name[data]:
35Bây giờ, bạn thực sự chỉ cần một tham số cho URL và bạn không phải xác định thư mục làm việc trong hàm để tìm tệp thích hợp
def multiply_values[x,y]:
z = x * y
return z
4Chức năng sửa đổi của bạn hiện chỉ thực thi một dòng, thay vì ba dòng. Lưu ý rằng chuỗi tài liệu cũng được cập nhật để phản ánh rằng chỉ có một tham số đầu vào cho chức năng này
Bây giờ bạn có thể gọi hàm chỉ với một tham số duy nhất cho URL
def multiply_values[x,y]:
z = x * y
return z
5thángprecip_2002precip_2013mùa0Jan1. 070. 27Mùa đông1 tháng 20. 441. 13Mùa đông2tháng 31. 501. 72Mùa xuân3 tháng 4. 204. 14Mùa xuân4Tháng 3. 202. 66Xuân5Tháng Sáu1. 180. 61Mùa hè6Tháng 70. 091. 03Mùa hè7Tháng 81. 441. 40Mùa hè 8 tháng 91. 5218. 16Mùa thu9 tháng 102. 442. 24Mùa thu10Nov0. 780. 29Mùa thu11Dec0. 020. 50Mùa đông
Thực hành viết các hàm đa tham số cho Pandas Dataframes
Bạn có một hàm kết hợp phép tính trung bình dọc theo một trục đã chỉ định và chuyển đổi từ milimét sang inch cho một mảng có nhiều mảng
Bạn có thể cần thay đổi chức năng này như thế nào để tạo một chức năng tương tự cho khung dữ liệu gấu trúc, nhưng hiện đang chuyển đổi từ inch sang milimét?
Về ý nghĩa, bạn có thể chạy số liệu thống kê tóm tắt về gấu trúc bằng cách sử dụng một trục được chỉ định [giống như một mảng có nhiều mảng] với mã sau
def multiply_values[x,y]:
z = x * y
return z
6Với giá trị trục
def function_name[data]:
36, mã sẽ tính giá trị trung bình cho từng cột số trong khung dữ liệuVới giá trị trục
def function_name[data]:
37, mã sẽ tính giá trị trung bình cho từng hàng với các giá trị số trong khung dữ liệuHãy suy nghĩ về những dòng mã trong chức năng hiện có
def multiply_values[x,y]:
"""Calculate product of two inputs.
Parameters
----------
x : int or float
y : int or float
Returns
------
z : int or float
"""
z = x * y
return z
4 có thể được sửa đổi để chạy mã tương đương trên khung dữ liệu gấu trúcLưu ý rằng
def function_name[data]:
39 trả về giá trị trung bình của khung dữ liệu [dọc theo trục đã chỉ định] dưới dạng chuỗi gấu trúcThực hành viết hàm đa tham số cho mảng Numpy
Bạn cũng có chức năng kết hợp tải xuống và nhập dữ liệu cho khung dữ liệu gấu trúc, bạn có thể sửa đổi chức năng cho các cấu trúc dữ liệu khác, chẳng hạn như mảng có nhiều mảng
Bạn có thể cần thay đổi hàm này như thế nào để tạo một hàm tương đương cho các mảng có nhiều mảng?
Hãy nghĩ xem những dòng mã nào trong hàm hiện có
def function_name[data]:
31 có thể được sửa đổi để viết một hàm mới tải xuống và nhập dữ liệu vào một mảng có nhiều mảngĐể bắt đầu, bạn có thể muốn viết một hàm cho mảng 1 chiều và một hàm khác cho mảng 2 chiều
Để nâng cao trong thực hành của mình, bạn có thể nghĩ đến việc thêm một câu lệnh điều kiện để kiểm tra loại tệp [. txt cho mảng 1 chiều. csv cho mảng 2 chiều] trước khi thực thi mã nhập thích hợp