Python 不返回变量

问题描述 投票:0回答:1

我有一个简单的脚本,它读取原始质谱仪数据,根据时间戳将数据分组到“序列”中,然后向用户提供序列列表以继续分析。问题是,我没有返回这些列表...这是代码:

import tkinter as tk
from import_raw import get_raw_data

def select_sequences(sequence_data):
    # Tkinter GUI
    root = tk.Tk() 
    root.title("Select Sequences")
    root.geometry("400x200")

    # Listbox for sequence selection
    listbox = tk.Listbox(root, selectmode='multiple')  
    for item in reversed(sequence_data):
        listbox.insert(tk.END, f"Sequence {item['sequence_number']}: {item['start_time']} - {item['end_time']}")
    listbox.pack(fill="both")

    # Confirm button
    def confirm_selection():
        selected_indices   = listbox.curselection()
        selected_sequences = [sequence_data[len(sequence_data) - i - 1]['sequence_number'] for i in selected_indices]
        print("Selected Sequences:", selected_sequences) 
        root.destroy() 

        return selected_sequences

    tk.Button(root, text="Confirm selection", command=confirm_selection).pack()
    root.mainloop() 


all_data, sequence_data = get_raw_data() 
selected_sequences = select_sequences(sequence_data)
print("Selected Sequences:", selected_sequences)

注意两个打印函数,一个位于

confirm_selection()
函数内,另一个位于主脚本末尾。这是选择序列 20 和 21 后的输出:

Selected Sequences: [21, 20]
Selected Sequences: None

为什么函数没有返回/检索值?显然我忽略了一些非常简单的事情。

我被难住了。我期望两个打印函数返回相同的值。

python python-3.x
1个回答
0
投票

你的函数

select_sequences()
没有return语句。所以返回值是
None
——这是标准的 Python 行为。因此,在主体中,变量
selected_sequences
被赋予值
None
,然后被打印出来。

© www.soinside.com 2019 - 2024. All rights reserved.