Hướng dẫn pass variable from one function to another python - chuyển biến từ một hàm sang một python khác

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.

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

0

Đâ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

Pavel Anossovpavel AnossovPavel Anossov

58.9K14 Huy hiệu vàng147 Huy hiệu bạc123 Huy hiệu đồng14 gold badges147 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

BrenbarnbrenbarnBrenBarn

Phù thủy vàng 234K3535 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

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 badges173 silver badges304 bronze badges

BrenbarnbrenbarnApr 16, 2013 at 18:03

Phù thủy vàng 234K35Benjamin

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àng173 Huy hiệu bạc 304 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

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

Làm thế nào để bạn truyền dữ liệu từ chức năng này sang chức năng khác trong Python?

Làm thế nào để bạn truyền dữ liệu từ chức năng này sang chức năng khác trong Python ?..
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].
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 chính [].
Trong Main [], gọi Usethelist [Danh sách].

Làm thế nào để bạn truyền một biến từ hàm này sang chức năng khác?

hàm function1 [] {var biến1 = 12; hàm2 [biến1]; } hàm hàm2 [val] {var varable Offeration1 = val; // Sau đó, bạn sẽ phải sử dụng chức năng này cho biến1 để nó không thực sự giúp ích nhiều trừ khi đó là điều bạn muốn làm. } Tôi đã sử dụng cách thứ hai và nó hoạt động. // Then you will have to use this function for the variable1 so it doesn't really help much unless that's what you want to do. } i used the second way and it worked.

Làm thế nào để bạn nhận được một giá trị biến từ một hàm khác trong Python?

Làm thế nào để bạn nhận được một giá trị biến từ một hàm khác trong Python?Sử dụng cú pháp thuộc tính đối tượng để truy cập một biến bên ngoài hàm.Trong một chức năng có tên Func, sử dụng Func cú pháp.Biến = giá trị để lưu trữ giá trị trong biến như một thuộc tính của func.Use the object attribute syntax to access a variable outside of a function. In a function named func , use the syntax func. variable = value to store value in variable as an attribute of func .

Bạn có thể chuyển một hàm dưới dạng tham số cho một hàm khác trong Python không?

Bản tóm tắt.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ài Viết Liên Quan

Chủ Đề