python return返回值中for循环的逻辑

代码如下:

self._os_bond_path = '/proc/net/bonding/*'

def __get_os_bonding(self):
    return list(set([b.split('/')[-1] for b in glob.glob(self._os_bond_path)]))
    

请高人指点一下这个函数return值的逻辑和内容,感激不尽.

阅读 5.7k
2 个回答
list(set([b.split('/')[-1] for b in glob.glob(self._os_bond_path)]))

首先看这里的

set([b.split('/')[-1] for b in glob.glob(self._os_bond_path)])

这里是创建一个set类型的数据,set里的数据是怎么来的来,首先把

b.split('/')[-1]

当做一个整体,记为item

然后从这里看到这个item是b按/分割后取数组最后一位得来的,然后从

for b in glob.glob(self._os_bond_path)

这里可以看到b是从这里来的,也就是遍历glob.glob(self._os_bond_path)得来的。

所以整体来看就是返回一个以item为list项的list。(具体item怎么来的如上所见)

首先glob.glob(self._os_bond_path)这是一个所有文件列表 具体查看glob的用法

循环上面的列表得到b 接着将b进行split以‘/’切割 取出最后一位(应该是文件名字和文件类型)

将得到的所有文件进行set去重 并且放入列表返回
最后得到的结果是这个目录下/proc/net/bonding/ 所有的去重文件名 (都在列表里面)

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题