Welcome to the K-free blog;|

k-free

园龄:5年8个月粉丝:5关注:7

Python ---- 关于Python中的yield

今天看代码,突然看到了"yield",当时有点儿懵,所以赶紧去了解了一下,以下是我尝试的过程及了解后的内容。

当我们定义一个函数体,而恰巧这个函数的结果我们也要将他用做可迭代列表来遍历,这种情况直接用return的话应该是不行的吧?(也不是不行,反正就是....很奇怪,一会儿上代码)

上面的这两个问题用“yield”都正好解决;上代码;

def yie_ld():
    for i in range(3):
         yield i

for i in yie_ld():
     print(i)

这样尝试着写一下就发现了他比较牛的地方了,还有很多概念性的东西我就不抄了,有很多,可以再去搜一下看看= =

然后下面是应用到这个yield的示例:

复制代码
#!/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)
复制代码

注释:这个脚本的整体功能呢就是为了让用户导入此包之后,直接使用"find_specific_files()"函数查询各种文件

root: 目标目录

patterns: 匹配规则,不写的话默认为通配符"*"

exclude_dirs:要忽略的子目录

使用详情:

~]# ipython3
In [1]:  import file   (因为我这个文件的文件名叫file.py)
In [
2]: for item in file.find_specific_files('/root/test'): ....: print(item) /root/test/test.jpg

 

本文作者:k-free

本文链接:https://www.cnblogs.com/k-free-bolg/p/12883086.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   k-free  阅读(185)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起
  1. 1 新時代 (ウタ from ONE PIECE FILM RED) Ado
新時代 (ウタ from ONE PIECE FILM RED) - Ado
00:00 / 00:00
An audio error has occurred.

作词 : 中田ヤスタカ

作曲 : 中田ヤスタカ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

ジャマモノ やなもの なんて消して

ジャマモノ やなもの なんて消して

この世とメタモルフォーゼしようぜ

ミュージック

キミが起こす マジック

目を閉じれば未来が開いて

目を閉じれば未来が開いて

いつまでも終わりが来ないようにって

この歌を歌うよ

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな旋律

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代はこの未来だ

新時代はこの未来だ

世界中全部 変えてしまえば

変えてしまえば

果てしない音楽がもっと届くように

夢は見ないわ キミが話した

「ボクを信じて」

あれこれいらないものは消して

あれこれいらないものは消して

リアルをカラフルに越えようぜ

ミュージック

今始まる ライジング

目をつぶりみんなで逃げようよ

目をつぶりみんなで逃げようよ

今よりイイモノを見せてあげるよ

この歌を歌えば

Do you wanna play? リアルゲーム ギリギリ

Do you wanna play? リアルゲーム ギリギリ

綱渡りみたいな運命

認めない戻れない忘れたい

夢の中に居させて I wanna be free

見えるよ新時代が 世界の向こうへ

さあ行くよ NewWorld

新時代わ この未来を

新時代わ この未来を

世界中全部 変えてしまえば 変えてしまえば

果てしない音楽がもっと届くように

夢を見せるよ 夢を見せるよ

新時代だ

新時代だ

新時代だ