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:
- 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 Main []
- Trong Main [], hãy gọi Usethelist [Danh sách]
- 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.6K16 Huy hiệu vàng87 Huy hiệu bạc128 Huy hiệu đồng16 gold badges87 silver badges128 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
59.1K14 Huy hiệu vàng148 Huy hiệu bạc124 Huy hiệu đồng14 gold badges148 silver badges124 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 []
0Trở 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 badges307 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:
Benmorel10 gold badges86 silver badges132 bronze badges
32.9K48 Huy hiệu vàng173 Huy hiệu bạc307 Huy hiệu đồngJan 6, 2016 at 20:34
Đã trả lời ngày 16 tháng 4 năm 2013 lúc 18:03Akshay Sahai
Benjaminbenjamin16 silver badges20 bronze badges
5
6093 Huy hiệu bạc8 Huy hiệu Đồng
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
4chuyể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
Xác định các chức năng như thế nàyMay 5, 2021 at 16:10
Gọi các chức năng như thế này
Example:
For checking purposes: in defineAList, list is ['1', '2', '3']
For checking purposes: in useTheList, list is []
5Karl KnechtelJul 18 at 12:20