Chức năng python có thể nhận các đối số không giới hạn không?

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àm

def 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àm

def 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ào

def function_name[data]:
2

def function_name[data]:
3

Nhớ 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]:
4

def function_name[data]:
5

def function_name[data]:
3

Lư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]:
1

Bạ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]:
2

Tiế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]:
3

Tiế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 inch

def function_name[data_1, data_2]:
4

Lư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]:
5

Bâ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ợp

Tạ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
5

def function_name[data_1, data_2]:
6

def function_name[data_1, data_2]:
7

def function_name[data_1, data_2]:
8

def function_name[data_1, data_2]:
9

def multiply_values
0

def multiply_values
1

Xá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
2

def multiply_values
3

Bạ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
5

def 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ưới

def multiply_values
5

Hà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àm

Tuy 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ục

def multiply_values
6

Câ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ỉ định

def multiply_values
7

Mã để 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ật

def multiply_values
8

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 đã 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
9

Lư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]:
26

def function_name[data_1, data_2]:
8

def function_name[data_1, data_2]:
9

Tuy 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]:
2

def multiply_values[x,y]:
3

Kế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

  1. tải xuống tệp dữ liệu từ URL.
    def function_name[data]:
    
    27
  2. nhập tệp dữ liệu vào khung dữ liệu gấu trúc.
    def function_name[data]:
    
    28

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

  1. URL tới tệp dữ liệu
  2. đườ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]:
4

Tiếp theo, thêm mã để tải xuống và nhập

def multiply_values[x,y]:
5

Tuy 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]:
6

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 multiply_values[x,y]:
7

Bâ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]:
8

def multiply_values[x,y]:
9

Sử 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
0

def multiply_values[x,y]:
    z = x * y
    return z
1

thá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ống

def multiply_values[x,y]:
    z = x * y
    return z
2

Trong 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]:
35

Bâ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
4

Chứ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
5

thá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
6

Vớ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ệu

Vớ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ệu

Hã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úc

Lư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úc

Thự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

Một hàm Python có thể nhận số lượng đối số không giới hạn không?

Một kỹ thuật tương tự có thể được sử dụng để tạo các hàm có thể xử lý số lượng không giới hạn các cặp từ khóa/đối số. Nếu một đối số của một hàm được đặt trước hai dấu hoa thị, thì bên trong hàm, Python sẽ thu thập tất cả các cặp từ khóa/đối số không được khai báo rõ ràng dưới dạng đối số trong từ điển

Một hàm có thể lấy bao nhiêu đối số trong Python?

Trong Python, chúng ta có thể định nghĩa hai loại tham số có độ dài thay đổi. Chúng có thể được coi là các loại tham số tùy chọn đặc biệt. Nói cách khác, không có giới hạn về số lượng đối số được truyền cho tham số khi chúng ta gọi hàm này .

Hàm có thể nhận số lượng đối số không giới hạn không?

Hàm có thể xác định giá trị đối số mặc định, hàm có thể được gọi bằng đối số từ khóa và hàm có thể được viết để chấp nhận bất kỳ số lượng đối số nào .

Hàm Python có thể nhận nhiều đối số không?

Truyền nhiều đối số cho một hàm trong Python. Chúng ta có thể truyền nhiều đối số cho một hàm python bằng cách xác định trước các tham số hình thức trong định nghĩa hàm .

Chủ Đề