关于Python中的yield
2021-01-23 14:16
标签:ipython 匹配 port yield span 列表 通配 迭代 div 今天看代码,突然看到了"yield",当时有点儿懵,所以赶紧去了解了一下,以下是我尝试的过程及了解后的内容。 当我们定义一个函数体,而恰巧这个函数的结果我们也要将他用做可迭代列表来遍历,这种情况直接用return的话应该是不行的吧?(也不是不行,反正就是....很奇怪,一会儿上代码) 上面的这两个问题用“yield”都正好解决;上代码; 这样尝试着写一下就发现了他比较牛的地方了,还有很多概念性的东西我就不抄了,有很多,可以再去搜一下看看= = 然后下面是应用到这个yield的示例: 注释:这个脚本的整体功能呢就是为了让用户导入此包之后,直接使用"find_specific_files()"函数查询各种文件 root: 目标目录 patterns: 匹配规则,不写的话默认为通配符"*" exclude_dirs:要忽略的子目录 使用详情: 关于Python中的yield 标签:ipython 匹配 port yield span 列表 通配 迭代 div 原文地址:https://www.cnblogs.com/k-free-bolg/p/12883086.htmldef yie_ld():
for i in range(3):
yield i
for i in yie_ld():
print(i)
#!/usr/bin/python3
import os,fnmatch
def is_file_match(filename, patterns):
for pattern in patterns:
if fnmatch.pattern(filename,pattern)
return True
return False
def find_specific_files(root,patterns=[‘*‘],exclude_dirs=[]):
for root,dirnames,filenames in os.walk(root):
for filename in filenames:
if is_file_match(filename,patterns):
yield os.path.join(root,filename)
for d in exclude_dirs:
if d in dirnames:
dirnames.remove(d)~]# ipython3
In [1]: import file (因为我这个文件的文件名叫file.py)
In [2]: for item in file.find_specific_files(‘/root/test‘):
....: print(item)
/root/test/test.jpg