Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

58

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi muốn truyền các giá trị (dưới dạng biến) giữa các hàm khác nhau.

Ví dụ: tôi gán các giá trị cho một danh sách trong một hàm, sau đó tôi muốn sử dụng danh sách đó trong một chức năng khác:

list = []

def defineAList():
    list = ['1','2','3']
    print "For checking purposes: in defineAList, list is",list
    return list

def useTheList(list):
    print "For checking purposes: in useTheList, list is",list

def main():
    defineAList()
    useTheList(list)

main()

Tôi mong đợi điều này sẽ làm như sau:

  1. Khởi tạo 'danh sách' như một danh sách trống; Gọi chính (điều này, ít nhất, tôi biết tôi đã có đúng ...)
  2. Trong DEFINEALIST (), gán các giá trị nhất định vào danh sách; Sau đó chuyển danh sách mới trở lại Main ()
  3. Trong Main (), hãy gọi Usethelist (Danh sách)
  4. Vì 'Danh sách' được bao gồm trong các tham số của hàm Usethelist, tôi hy vọng rằng Usethelist hiện sẽ sử dụng danh sách như được định nghĩa bởi DEFINEALIST (), chứ không phải danh sách trống được xác định trước khi gọi chính.

Tuy nhiên, đầu ra của tôi là:

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []

"Return" không làm những gì tôi mong đợi. Nó thực sự làm gì? Làm cách nào để lấy danh sách từ DEFINEALIST () và sử dụng nó trong Usethelist ()?

Tôi không muốn sử dụng các biến toàn cầu.

Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

Mateen Ulhaq

22.3K16 Huy hiệu vàng86 Huy hiệu bạc127 Huy hiệu đồng16 gold badges86 silver badges127 bronze badges

Hỏi ngày 16 tháng 4 năm 2013 lúc 17:54Apr 16, 2013 at 17:54

Đây là những gì đang thực sự xảy ra:

global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()

Đây là cái bạn muốn:

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to what is returned from defineAList
    useTheList(returned_list) 

main()

Bạn thậm chí có thể bỏ qua

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
6 tạm thời và chuyển giá trị trả về trực tiếp đến
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
7:

def main():
    # passed_list inside useTheList is set to what is returned from defineAList
    useTheList(defineAList()) 

Đã trả lời ngày 16 tháng 4 năm 2013 lúc 18:00Apr 16, 2013 at 18:00

Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

Pavel Anossovpavel AnossovPavel Anossov

58.8K14 Huy hiệu vàng146 Huy hiệu bạc123 Huy hiệu đồng14 gold badges146 silver badges123 bronze badges

0

Bạn chỉ thiếu một bước quan trọng. Bạn phải chuyển giá trị trả về một cách rõ ràng vào hàm thứ hai.

def main():
    l = defineAList()
    useTheList(l)

Alternatively:

def main():
    useTheList(defineAList())

Hoặc (mặc dù bạn không nên làm điều này! Lúc đầu, nó có vẻ tốt đẹp, nhưng Globals chỉ khiến bạn đau buồn về lâu dài.):

l = []

def defineAList():
    global l
    l.extend(['1','2','3'])

def main():
    global l
    defineAList()
    useTheList(l)

Hàm trả về một giá trị, nhưng nó không tạo biểu tượng trong bất kỳ loại tên gọi toàn cầu nào như mã của bạn giả định. Bạn phải thực sự nắm bắt giá trị trả về trong phạm vi gọi và sau đó sử dụng nó cho các hoạt động tiếp theo.

Đã trả lời ngày 16 tháng 4 năm 2013 lúc 17:57Apr 16, 2013 at 17:57

Silas Raysilas RaySilas Ray

25.2K5 Huy hiệu vàng47 Huy hiệu bạc61 Huy hiệu Đồng5 gold badges47 silver badges61 bronze badges

1

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
8 Trả về một giá trị. Không quan trọng bạn đặt tên cho giá trị đó. Trả lại nó chỉ là "truyền nó ra" để một cái gì đó khác có thể sử dụng nó. Nếu bạn muốn sử dụng nó, bạn phải lấy nó từ bên ngoài:

lst = defineAList()
useTheList(lst)

Trở lại

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9 từ bên trong
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
0 không có nghĩa là "làm cho nó để toàn bộ phần còn lại của chương trình có thể sử dụng biến đó". Nó có nghĩa là "vượt qua giá trị của biến này và cho phần còn lại của chương trình một cơ hội để lấy nó và sử dụng nó". Bạn cần gán giá trị đó cho một cái gì đó bên ngoài chức năng để sử dụng nó. Ngoài ra, vì điều này, không cần phải xác định danh sách của bạn trước thời hạn với
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
1. Bên trong
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
0, bạn tạo một danh sách mới và trả lại nó; Danh sách này không có mối quan hệ với danh sách bạn xác định với
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
1 lúc đầu.

Ngẫu nhiên, tôi đã thay đổi tên biến của bạn từ

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9 thành
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
5. Đó không phải là một ý tưởng tốt để sử dụng
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9 như một tên biến vì đó đã là tên của một loại Python tích hợp. Nếu bạn tạo biến của riêng mình được gọi là
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9, bạn sẽ không thể truy cập vào bản tích hợp nữa.

Đã trả lời ngày 16 tháng 4 năm 2013 lúc 17:58Apr 16, 2013 at 17:58

Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

BrenbarnbrenbarnBrenBarn

233K35 Huy hiệu vàng397 Huy hiệu bạc375 Huy hiệu Đồng35 gold badges397 silver badges375 bronze badges

1

Sự trở lại của bạn là vô dụng nếu bạn không gán nó

list=defineAList()

Đã trả lời ngày 16 tháng 4 năm 2013 lúc 17:57Apr 16, 2013 at 17:57

Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

Silas Raysilas Raybobrobbob

25.2K5 Huy hiệu vàng47 Huy hiệu bạc61 Huy hiệu Đồng11 silver badges21 bronze badges

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
8 Trả về một giá trị. Không quan trọng bạn đặt tên cho giá trị đó. Trả lại nó chỉ là "truyền nó ra" để một cái gì đó khác có thể sử dụng nó. Nếu bạn muốn sử dụng nó, bạn phải lấy nó từ bên ngoài:

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
0

Trở lại

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9 từ bên trong
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
0 không có nghĩa là "làm cho nó để toàn bộ phần còn lại của chương trình có thể sử dụng biến đó". Nó có nghĩa là "vượt qua giá trị của biến này và cho phần còn lại của chương trình một cơ hội để lấy nó và sử dụng nó". Bạn cần gán giá trị đó cho một cái gì đó bên ngoài chức năng để sử dụng nó. Ngoài ra, vì điều này, không cần phải xác định danh sách của bạn trước thời hạn với
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
1. Bên trong
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
0, bạn tạo một danh sách mới và trả lại nó; Danh sách này không có mối quan hệ với danh sách bạn xác định với
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
1 lúc đầu.

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
1

Ngẫu nhiên, tôi đã thay đổi tên biến của bạn từ

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9 thành
global_list = []

def defineAList():
    local_list = ['1','2','3']
    print "For checking purposes: in defineAList, list is", local_list 
    return local_list 

def useTheList(passed_list):
    print "For checking purposes: in useTheList, list is", passed_list

def main():
    # returned list is ignored
    returned_list = defineAList()   

    # passed_list inside useTheList is set to global_list
    useTheList(global_list) 

main()
5. Đó không phải là một ý tưởng tốt để sử dụng
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9 như một tên biến vì đó đã là tên của một loại Python tích hợp. Nếu bạn tạo biến của riêng mình được gọi là
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
9, bạn sẽ không thể truy cập vào bản tích hợp nữa.

Đã trả lời ngày 16 tháng 4 năm 2013 lúc 17:5848 gold badges170 silver badges303 bronze badges

BrenbarnbrenbarnApr 16, 2013 at 18:03

233K35 Huy hiệu vàng397 Huy hiệu bạc375 Huy hiệu ĐồngBenjamin

Sự trở lại của bạn là vô dụng nếu bạn không gán nó3 silver badges8 bronze badges

1

Bobrobbobbobrobbob

1.22911 huy hiệu bạc21 Huy hiệu đồng

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
2

Đọc khái niệm về một không gian tên. Khi bạn gán một biến trong một hàm, bạn chỉ gán nó trong không gian tên của hàm này. Nhưng rõ ràng bạn muốn sử dụng nó giữa tất cả các chức năng.

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
3

Ngoài ra, bạn có thể vượt qua nó xung quanh:Jan 6, 2016 at 20:34

BenmorelAkshay Sahai

32,8K48 Huy hiệu vàng170 Huy hiệu bạc303 Huy hiệu đồng16 silver badges20 bronze badges

5

Đã trả lời ngày 16 tháng 4 năm 2013 lúc 18:03

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
4

Benjaminbenjamin

6093 Huy hiệu bạc8 Huy hiệu ĐồngMay 5, 2021 at 16:10

Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

chuyển biến từ một hàm làm đối số sang các chức năng khác có thể được thực hiện như thế này

Example:

For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
5

Xác định các chức năng như thế nàyJul 18 at 12:20

Hướng dẫn how to pass a return value to another function in python - cách chuyển một giá trị trả về cho một hàm khác trong python

Làm cách nào để trả lại giá trị từ hàm sang hàm khác?

Nếu giá trị trả về của hàm chỉ được sử dụng làm tham số đầu vào của hàm khác, bạn có thể chuyển giá trị trả về trực tiếp đến tham số hàm. Điều này được thực hiện bằng cách đặt cuộc gọi chức năng vào danh sách tham số của cuộc gọi chức năng khác, giống như bạn sẽ biến.putting the function call in the parameters list of the other function call, just like you would a variable.

Làm thế nào để bạn chuyển một giá trị vào một hàm trong Python?

Thông tin có thể được truyền vào các chức năng như đối số.Đối số được chỉ định sau tên hàm, bên trong dấu ngoặc đơn.Bạn có thể thêm nhiều đối số như bạn muốn, chỉ cần tách chúng bằng dấu phẩy.Arguments are specified after the function name, inside the parentheses. You can add as many arguments as you want, just separate them with a comma.

Bạn có thể chuyển một chức năng vào một chức năng khác Python không?

Trong Python, bạn có thể chuyển các đối tượng chức năng vào các chức năng khác.Các chức năng có thể được thông qua trong Python.Trong thực tế, có những chức năng được xây dựng thành Python mong đợi các chức năng được đưa ra như một hoặc nhiều đối số của chúng để sau đó họ có thể gọi chúng sau.you can pass function objects in to other functions. Functions can be passed around in Python. In fact there are functions built into Python that expect functions to be given as one or more of their arguments so that they can then call them later.

Bạn có thể trả lại Pass trong Python không?

Một câu lệnh trả về trong Python sẽ chỉ đơn giản là cho phép người dùng thoát chức năng hoạt động và trả về đầu ra.Ví dụ: nếu người dùng muốn tính tổng của hai số.Anh ta có thể viết đơn giản trả lại A+B và nhận đầu ra.Tuy nhiên, như chúng tôi đã biết về từ khóa Pass, nó sẽ không trả về bất kỳ đầu ra nào.it would not return any output.