Hướng dẫn can i pass a list as an argument python? - tôi có thể chuyển danh sách dưới dạng đối số python không?

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

def someFunc(myList = [], *args):
    for x in myList:
        print x
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
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:

  1. Vượt qua danh sách như một đối số khi khởi tạo lớp.
  2. Gán danh sách cho một biến thể hiện trong phương thức
    items = [1,2,3,4,5]
    
    someFunc(items)
    
    0.
  3. 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
0

Phươ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
1

Chú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
2

Lư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.

Tôi có thể chuyển một danh sách như một đối số trong Python không?

Bạn có thể gửi bất kỳ loại dữ liệu nào của đối số đến một hàm (chuỗi, số, danh sách, từ điển, v.v.) và nó sẽ được coi là cùng một loại dữ liệu bên trong hàm..

Bạn có thể chuyển một danh sách cho args?

Có, sử dụng *arg chuyển args cho một hàm sẽ khiến Python giải nén các giá trị trong ARG và chuyển nó đến hàm.Lưu câu trả lời này. passing args to a function will make python unpack the values in arg and pass it to the function. Save this answer.

Chúng ta có thể chuyển một danh sách cho một lớp học trong Python không?

Để truyền danh sách như một đối số cho một lớp: Chuyển 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 __init __ ().Bạn có thể truy cập danh sách trên các trường hợp của lớp.Pass the list as an argument when instantiating the class. Assign the list to an instance variable in the __init__() method. You can access the list on instances of the class.

Danh sách có được thông qua bởi Python tham chiếu không?

Danh sách đã được thông qua bởi tham chiếu, trong đó tất cả các tên Python là tài liệu tham khảo và các đối tượng danh sách là có thể thay đổi., in that all Python names are references, and list objects are mutable.

Một đối tượng có thể được truyền như một python đối số?

Một hàm có thể lấy nhiều đối số, các đối số này có thể là đối tượng, biến (có cùng loại dữ liệu hoặc khác nhau) và các hàm..

Chúng ta có thể chuyển bao nhiêu đối số trong Phương thức Danh sách () trong Python?

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ố.either no arguments, a single argument, or more than one argument.