Skip to main content
 首页 » 编程设计

Python递归追加列表函数

2025年05月04日11小虾米

递归函数有问题,应该相对简单,但似乎不能正确。

我有一个文件夹结构,其中的文件夹可以包含其他文件夹、图像或文件。与每个文件夹相关联的都有权限。我想让我的函数递归地构建与每个文件夹关联的权限列表。

我有一个函数 has_read_permission(request) 如果文件夹有权限则返回 True 否则返回 False

我已经构建了一个这样的函数:

def get_child_perms(self, folder, request, perm_list): 
        # Folder contains other folders 
        if folder.get_children(): 
            # For every sub-folder 
            for subfolder in folder.get_children(): 
                return perm_list.append(self.get_child_perms(subfolder, request, perm_list)) 
        else: 
            # If folder doesn't have sub-folders containing folders 
            return [folder.has_read_permission(request)] 

我一直没有得到

给定这样的文件夹:

Folder (allowed) - Wont check this one 
|_First Folder (allowed) 
| |_First sub Folder (restricted) 
| | |_File 
| | |_File 
| | |_Image 
| |__Second Sub Folder (allowed) 
|_Second Folder (allowed) 

然后运行 ​​get_child_perms() 会返回 [真、假、真、真] 甚至 [正确,[错误,正确],正确]

编辑

忽略编辑 -> 问其他问题 Python Recursive function missing results

改变了一点,

def get_child_perms(self, folder, request, perm_list): 
        if folder.get_children(): 
            for subfolder in folder.get_children(): 
                perm_list.append(self.get_child_perms(subfolder, request, perm_list)) 
            return perm_list 
        else: 
            return [folder.has_read_permission(request)] 

获得:

[[True], [...], [True], [...], [...], [True], [True], [True], [True], [True], [True], [True], [True], [...], [True], [...]] 
 
 Admin 
 -Folder 1 
   - Files 
 -Folder 2 
   - Files 
 -Folder 3 
   - Files  
 -Folder 4 
   - SubFolder 1 
      -SubSubFolder 1 
         - Files 
      - Files 
   - SubFolder 2 
      - SubSubFolder 2 
           - Files 
      - Files 
 -Folder 5 
   - SubFolder 3 
       - Files 
   - SubFolder 4 
       - Files 
   - SubFolder 5 
       -Files 
   - Files 
 -Folder 6 
   - Files 
 -Folder 7 
   - SubFoler 6 
       - Files 
   - Files 
 -Folder 8 
   - Files 

请您参考如下方法:

for subfolder in folder.get_children(): 
    perm_list.append(self.get_child_perms(subfolder, request, perm_list)) 
return perm_list 

.append 到位。它不返回任何东西。所以你得到的是 None