W3Schools được tối ưu hóa cho việc học và đào tạo. Ví dụ có thể được đơn giản hóa để cải thiện việc đọc và học tập. Hướng dẫn, tài liệu tham khảo và ví dụ được xem xét liên tục để tránh lỗi, nhưng chúng tôi không thể đảm bảo tính chính xác đầy đủ của tất cả các nội dung. Trong khi sử dụng W3Schools, bạn đồng ý đã đọc và chấp nhận các điều khoản sử dụng, cookie và chính sách bảo mật của chúng tôi.
Bản quyền 1999-2022 bởi dữ liệu refsnes. Đã đăng ký Bản quyền. W3Schools được cung cấp bởi W3.CSS.
W3Schools is Powered by W3.CSS.
Khi bạn xác định chức năng của mình bằng cú pháp này:
def someFunc[*args]:
for x in args
print x
Bạn đang nói với nó rằng bạn mong đợi một số lượng đối số khác nhau. Nếu bạn muốn truyền trong danh sách [mảng từ các ngôn ngữ khác], bạn sẽ làm điều gì đó như thế này:
def someFunc[myList = [], *args]:
for x in myList:
print x
Sau đó, bạn có thể gọi nó với điều này:
items = [1,2,3,4,5]
someFunc[items]
Bạn cần xác định các đối số được đặt tên trước các đối số biến và các đối số biến trước các đối số từ khóa. Bạn cũng có thể có cái này:
def someFunc[arg1, arg2, arg3, *args, **kwargs]:
for x in args
print x
Trong đó yêu cầu ít nhất ba đối số và hỗ trợ số lượng khác nhau của các đối số và từ khóa khác.
Trong bài viết này, chúng tôi sẽ học cách chuyển một danh sách cho một chức năng để hoạt động như nhiều đối số trong Python. Chúng tôi sẽ hiểu cách tiếp cận cơ bản với một số mã tùy chỉnh. Trước tiên chúng ta hãy có một cái nhìn nhanh về danh sách trong Python.
Danh sách Python
Python có một loại dữ liệu tích hợp được gọi là Danh sách. Nó giống như một tập hợp các mảng với phương pháp khác nhau. Dữ liệu bên trong danh sách có thể thuộc bất kỳ loại nói, số nguyên, chuỗi hoặc giá trị float hoặc thậm chí là loại danh sách. Danh sách sử dụng các giá trị được phân tách bằng dấu phẩy trong khung vuông để lưu trữ dữ liệu. Danh sách có thể được xác định bằng bất kỳ tên biến nào và sau đó gán các giá trị khác nhau cho danh sách trong khung vuông. Danh sách được đặt hàng, thay đổi và cho phép các giá trị trùng lặp.
list1 = ["Ram", "Arun", "Kiran"]
list2 = [16, 78, 32, 67]
list3 = ["apple", "mango", 16, "cherry", 3.4]
Chuyển danh sách cho một hàm dưới dạng nhiều đối số
Trong Python, các chức năng có thể không có đối số, một đối số duy nhất hoặc nhiều hơn một đối số. Chúng ta có thể vượt qua một chuỗi, số nguyên, danh sách, bộ dữ liệu, một từ điển, vv như các đối số chức năng trong một cuộc gọi hàm. Hàm chấp nhận chúng theo cùng một định dạng và trả về đầu ra mong muốn. Bây giờ, chúng tôi muốn vượt qua một danh sách chứa nhiều yếu tố và các yếu tố này hoạt động như nhiều đối số của một hàm. Khái niệm này về một danh sách duy nhất các yếu tố là nhiều đối số được gọi là danh sách đối số giải nén. Chúng tôi sử dụng
def someFunc[myList = [], *args]:
for x in myList:
print x
3 để giải nén đối số duy nhất thành nhiều đối số. Chúng tôi sử dụng toán tử giải nén def someFunc[myList = [], *args]:
for x in myList:
print x
4 khi các đối số không có sẵn riêng biệt.Unpacking Argument List.
We use def someFunc[myList = [], *args]:
for x in myList:
print x
3 to unpack the single argument into multiple arguments. We use the unpacking operator def someFunc[myList = [], *args]:
for x in myList:
print x
4 when arguments are not available separately.Ví dụ: chức năng
5 trong Python lưu trữ ba đối số khác nhau - bắt đầu, dừng và bước. Nếu người dùng không muốn nhập riêng các giá trị, anh ta có thể viết cuộc gọi chức năng với toán tử def someFunc[myList = [], *args]:
for x in myList:
print x
4 để giải nén các đối số ra khỏi danh sách hoặc tuple. def someFunc[myList = [], *args]:
for x in myList:
print x
def someFunc[myList = [], *args]:
for x in myList:
print x
5 function in Python stores three different arguments - start, stop, and step. If the user does not want to input the values separately, he can write the function call with the def someFunc[myList = [], *args]:
for x in myList:
print x
4 operator to unpack the arguments out of a list or tuple.Example:
Trong ví dụ này, my_list là có thể được thông qua như một đối số. Định nghĩa chức năng coi danh sách này là nhiều đối số. Các vòng lặp chương trình Python qua danh sách đã cho và sử dụng từng yếu tố của danh sách làm đối số riêng cho hàm. Mã dưới đây chỉ giải nén danh sách bằng cú pháp
def someFunc[myList = [], *args]:
for x in myList:
print x
3 khi xác định hàm.my_list is iterable that is passed as an argument. Function definition treats this list as multiple arguments. Python program loops over the given list and uses each element of the list as a separate argument to the function. The below code just unpacks the list using the def someFunc[myList = [], *args]:
for x in myList:
print x
3 syntax when defining the function.#function definition
def add[*params]:
sum = 0
for num in params:
sum += num
print[sum]
#input list
my_list = [1,2,3]
#function call
add[*my_list]
6
Example:
Phương pháp này rất hữu ích khi các yếu tố không được xác định trước. Chúng ta có thể chuyển nhiều phần tử cho hàm Python mà không cần định trước các tham số chính thức. Ví dụ này sử dụng
def someFunc[myList = [], *args]:
for x in myList:
print x
3 để tránh mã thất bại khi người dùng không biết có bao nhiêu đối số sẽ được gửi đến hàm. Bạn có thể sử dụng phương pháp này khi các phần tử trong danh sách không được xác định trước.def calculateTotalSum[*arguments]:
totalSum = 0
for number in arguments:
totalSum += number
print[totalSum]
# function call
calculateTotalSum[5,4,3,2,1]
15
Sự kết luận
Trong bài viết này, chúng tôi đã sử dụng các ví dụ khác nhau để hiểu làm thế nào chúng ta có thể giải nén các yếu tố danh sách để sử dụng chúng như nhiều đối số. Chúng tôi đã thảo luận về cú pháp
def someFunc[myList = [], *args]:
for x in myList:
print x
3 trong Python để giải nén các lập luận của danh sách và sử dụng chúng một cách riêng biệt trong cơ thể chức năng.Chuyển một danh sách như một đối số cho một lớp học trong Python #
Để truyền danh sách như một đối số cho một lớp:
- Vượt qua danh sách như một đối số khi khởi tạo lớp.
- Gán danh sách cho một biến thể hiện trong phương thức
0.items = [1,2,3,4,5] someFunc[items]
- Bạn có thể truy cập danh sách trên các trường hợp của lớp.
Copied!
class Employee[]: def __init__[self, name, tasks]: self.name = name self.tasks = tasks def add_tasks[self, task]: self.tasks.append[task] return self.tasks bob = Employee['Bobbyhadz', ['develop', 'test']] print[bob.tasks] # 👉️ ['develop', 'test'] bob.add_tasks['ship'] print[bob.tasks] # 👉️ ['develop', 'test', 'ship']
Phương pháp
items = [1,2,3,4,5]
someFunc[items]
0 của lớp lấy danh sách items = [1,2,3,4,5]
someFunc[items]
2.Đối số này sẽ được thông qua bất cứ khi nào chúng tôi khởi tạo lớp
items = [1,2,3,4,5]
someFunc[items]
3.Các biến chúng tôi đã khai báo trong phương thức
items = [1,2,3,4,5]
someFunc[items]
0 được gọi là biến thể hiện.Các biến thể hiện là duy nhất cho mỗi trường hợp bạn tạo bằng cách khởi tạo lớp.
Copied!
class Employee[]: def __init__[self, name, tasks]: self.name = name self.tasks = tasks def add_tasks[self, task]: self.tasks.append[task] return self.tasks alice = Employee['Alice', ['design', 'ship']] print[alice.tasks] # 👉️ ['design', 'ship'] bob = Employee['Bobbyhadz', ['develop', 'test']] print[bob.tasks] # 👉️ ['develop', 'test']
Lưu ý các đối số của loại
items = [1,2,3,4,5]
someFunc[items]
5 được truyền qua tham chiếu chứ không phải theo giá trị.Copied!
class Employee[]: def __init__[self, name, tasks]: self.name = name self.tasks = tasks def add_tasks[self, task]: self.tasks.append[task] return self.tasks list_of_tasks = ['design', 'test'] alice = Employee['Alice', list_of_tasks] bob = Employee['Bobbyhadz', list_of_tasks] # 👇️ add item to the list of one instance alice.add_tasks['ship'] print[alice.tasks] # 👉️ ['design', 'test', 'ship'] print[bob.tasks] # 👉️ ['design', 'test', 'ship']
Danh sách chúng tôi đã vượt qua khi tạo hai trường hợp đề cập đến cùng một đối tượng. Đối tượng trỏ đến cùng một vị trí trong bộ nhớ.
Khi chúng tôi thêm một nhiệm vụ vào danh sách bằng một trường hợp, thay đổi đã được phản ánh trong trường hợp khác.
Một cách để vượt qua điều này là tạo một bản sao nông của danh sách khi chuyển nó như một đối số cho lớp.
def someFunc[myList = [], *args]:
for x in myList:
print x
0Phương thức danh sách.Copy trả về một bản sao nông của đối tượng mà phương thức được gọi.
Bạn cũng có thể sử dụng đối số mặc định cho danh sách trong phương thức
items = [1,2,3,4,5]
someFunc[items]
0 của lớp.def someFunc[myList = [], *args]:
for x in myList:
print x
1Chúng tôi đã sử dụng giá trị mặc định là
items = [1,2,3,4,5]
someFunc[items]
7 cho biến items = [1,2,3,4,5]
someFunc[items]
2.Nếu không có đối số nào được thông qua, chúng tôi sẽ khởi tạo
items = [1,2,3,4,5]
someFunc[items]
2 vào một danh sách trống.Điều này rất hữu ích vì sử dụng một đối số mặc định của một danh sách trống cho biến
items = [1,2,3,4,5]
someFunc[items]
2 sẽ giới thiệu vấn đề trong đó nhiều trường hợp tham khảo cùng một danh sách.def someFunc[myList = [], *args]:
for x in myList:
print x
2Lưu ý rằng việc thêm một giá trị vào danh sách trong một trường hợp cũng đã thêm giá trị vào danh sách
items = [1,2,3,4,5]
someFunc[items]
2 trong trường hợp khác.Điều này là do biến thể hiện
items = [1,2,3,4,5]
someFunc[items]
2 chỉ vào cùng một danh sách [cùng một vị trí trong bộ nhớ] cho cả hai trường hợp.Bạn có thể hiểu được điều này bằng cách sử dụng giá trị mặc định
items = [1,2,3,4,5]
someFunc[items]
7 như chúng tôi đã làm trong ví dụ trước.