生成器表达式形式

直接上代码

 1 # yield的表达式形式
2 def foo():
3 print('starting')
4 while True:
5 x=yield #默认返回为空,实际上为x=yield None
6 print('value',x)
7 g=foo()
8 print(g.__next__()) #停到yield位置,生成器初始化,遇到yield返回一个None
9 print('---分割线君---')
10 print(g.send(1)) #传值给yield,然后yield传给x,最后触发一次next,遇到yield返回一个None值并暂停
11 print('---分割线君---')
12 print(g.send(2))

输出结果

1 starting
2 None    #运行g.__next__()的返回值
3 ---分割线君---
4 value 1   #运行g.send(1)的打印
5 None     #运行g.send(1)的返回值,由yield返回
6 ---分割线君---
7 value 2    #运行g.send(2)的打印
8 None      #运行g.send(2)的返回值

生成器的表达式形式,在每一个包含生成器表达式形式的函数写完后,都必须要执行第一次__next__方法初始化后(即传入一个的默认返回值None),才能够使用send()方法传入值,否则会抛出TypeError错误。

初始化装饰器:使用装饰器装饰的方法进行函数定义后的yield初始化操作,防止遗忘

def init_generator(func):
def generator(*args,**kwargs):
gen=func(*args,**kwargs)
next(gen)
return gen
return generator

面向过程编程

函数的参数传入,是函数吃进去的食物,而函数return/yield的返回值,是函数拉出来的结果,面向过程的思路就是,把程序的执行当做一串首尾相连的函数,一个函数吃,拉出的东西给另外一个函数吃,另外一个函数吃了再继续拉给下一个函数吃。。。

应用:递归一个目录的文件夹,判断将该目录内及子目录内的文件内容是否包含指定字符串,如果有那么将该文件绝对路径打印出来

分析:

  阶段一:递归地找文件的绝对路径,把路径发给阶段二

  阶段二:收到文件路径,打开文件获取获取对象,把文件对象发给阶段三

  阶段三:收到文件对象,for循环读取文件的每一行内容,把每一行内容发给阶段四

  阶段四:收到一行内容,判断root是否在这一行中,如果在,则把文件名发给阶段五

  阶段五:收到文件名,打印结果

 1 #应用:grep -rl 'root' /etc
2 import os
3 def init(func):
4 def wrapper(*args,**kwargs):
5 g=func(*args,**kwargs)
6 next(g)
7 return g
8 return wrapper
9 #阶段一:递归地找文件的绝对路径,把路径发给阶段二
10 @init
11 def search(target):
12 'search file abspath'
13 while True:
14 start_path=yield
15 g = os.walk(start_path)
16 for par_dir, _, files in g:
17 # print(par_dir,files)
18 for file in files:
19 file_path = r'%s\%s' % (par_dir, file)
20 target.send(file_path)
21 #阶段二:收到文件路径,打开文件获取获取对象,把文件对象发给阶段三
22 @init
23 def opener(target):
24 'get file obj: f=open(filepath)'
25 while True:
26 file_path=yield
27 with open(file_path,encoding='utf-8') as f:
28 target.send((file_path,f))
29
30 #阶段三:收到文件对象,for循环读取文件的每一行内容,把每一行内容发给阶段四
31 @init
32 def cat(target):
33 'read file'
34 while True:
35 filepath,f=yield
36 for line in f:
37 res=target.send((filepath,line))
38 if res:
39 break
40
41 #阶段四:收到一行内容,判断root是否在这一行中,如果在,则把文件名发给阶段五
42 @init
43 def grep(target,pattern):
44 'grep function'
45 tag=False
46 while True:
47 filepath,line=yield tag #target.send((filepath,line))
48 tag=False
49 if pattern in line:
50 target.send(filepath)
51 tag=True
52 #阶段五:收到文件名,打印结果
53 @init
54 def printer():
55 'print function'
56 while True:
57 filename=yield
58 print(filename)
59
60 start_path1=r'C:\Users\Administrator\PycharmProjects\python5期\a'
61 start_path2=r'C:\Users\Administrator\PycharmProjects\python5期\a\b'
62 g=search(opener(cat(grep(printer(),'root'))))
63
64 print(g)
65 # g.send(start_path1)
66 g.send(start_path2)

内置函数

abs() 函数:返回数字的绝对值

语法:

1 abs( x )    #x -- 数值表达式

示例:

print(abs(-9))
print(abs(5.5))
print(abs(45))

all() 函数:判断给定的可迭代参数 iterable 中的所有元素是否不为 0、''、False 或者 iterable 为空,如果是返回 True,否则返回 False

语法:

1 all(iterable)    #iterable元组或列表

示例:

1 all(['a', 'b', 'c', 'd'])      # 列表list,元素都不为空或0,结果返回True
2 all(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素,结果返回False
3 all([0, 1,2, 3]) # 列表list,存在一个为0的元素,结果返回False
4 all(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0,结果返回True
5 all(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素,结果返回False
6 all((0, 1,2, 3)) # 元组tuple,存在一个为0的元素,结果返回False
7 all([]) # 空列表,结果返回True
8 all(()) # 空元组,结果返回True

any() 函数:判断给定的可迭代参数 iterable 是否全部为空对象,如果都为空、0、false,则返回 False,如果不都为空、0、false,则返回 True

语法:

1 any(iterable)    #iterable元组或列表

示例:

1 any(['a', 'b', 'c', 'd'])      # 列表list,元素都不为空或0,结果返回True
2 any(['a', 'b', '', 'd']) # 列表list,存在一个为空的元素,结果返回True
3 any([0, '', False]) # 列表list,元素全为0,'',false,结果返回False
4 any(('a', 'b', 'c', 'd')) # 元组tuple,元素都不为空或0,结果返回True
5 any(('a', 'b', '', 'd')) # 元组tuple,存在一个为空的元素,结果返回True
6 any((0, '', False)) # 元组tuple,元素全为0,'',false,结果返回False
7 any([]) # 空列表,结果返回False
8 any(()) # 空元组,结果返回False

进制转换函数:十进制转二进制bin()、十进制转八进制oct()、十进制转十六进制hex()

语法:

1 bin(x)
2 oct(x) #x为int或者long int
3 hex(x)

示例:

1 bin(3)
2 oct(9)
3 hex(13)

bool()函数:布尔值使用常量True和False来表示

语法:

1 bool(x)     #x为任意值

示例:

bool(0)   #False
bool("abc")   #True
bool("")   #False
bool([])   #False
bool()   #False

bytes()函数:返回一个新的不可修改字节数组

语法:

1 #常用
2 bytes(string,encoding)

示例:

1 print(bytes('sss',encoding='utf-8'))
2 #等同于下面
3 print('sss'.encode('utf-8'))

help()函数:函数用于查看函数或模块用途的详细说明。

语法:

1 help(x)

示例:

help('sys')             # 查看 sys 模块的帮助
help('str') # 查看 str 数据类型的帮助
help(a) # 查看列表 list 帮助信息

callable()函数:用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。对于函数, 方法, lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。

语法:

1 callable(object)

示例:

1 callable(abs)             # 函数返回 True,或者自定义函数都返回True

chr()函数:用一个范围在 range(256)内的(就是0~255)整数作参数,返回一个对应的字符,对应ascii表

语法:

1 chr(i)  #i为0-255数字,可以使10进制也可以是16进制

示例:

1 chr(0x30)    #返回0
2 chr(66)  #返回B

ord()函数:chr() 函数的配对函数,chr()传入数字返回对应字符,ord()传入字符返回数字

语法:

1 ord(c)  #c为字符,只能是一个

示例:

ord('B')  #返回66
ord('1')  #返回49

complex()函数:用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数

语法:

1 complex([real[, imag]])
2 real -- int, long, float或字符串
3 imag -- int, long, float

示例:

1 x=1-2j  #等同于x=complex(1-2j)
2 print(x.real)  #显示实部
3 print(x.imag)  #显示虚部

int()函数:用于将一个字符串会数字转换为整型

语法:略

示例:略

dict()函数:用于创建一个字典

语法:略

示例:略

tuple()函数:将列表、字典或集合转换为元组

语法:略

示例:略

list()函数: 用于将元组、字典或集合转换为列表

语法:略

示例:略

set()函数:创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。

语法:略

示例:略

str()函数:将对象转化为适于人阅读的形式。

语法:略

示例:略

dir()函数:不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息

语法:

1 dir(object)

示例:

1 import os
2 dir(os)    #显示os模块的可调用方法
输出结果
['DirEntry', 'F_OK', 'MutableMapping', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT', 'O_RANDOM', 'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY', 'O_TEXT', 'O_TRUNC', 'O_WRONLY', 'P_DETACH', 'P_NOWAIT', 'P_NOWAITO', 'P_OVERLAY', 'P_WAIT', 'PathLike', 'R_OK', 'SEEK_CUR', 'SEEK_END', 'SEEK_SET', 'TMP_MAX', 'W_OK', 'X_OK', '_Environ', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_execvpe', '_exists', '_exit', '_fspath', '_get_exports_list', '_putenv', '_unsetenv', '_wrap_close', 'abc', 'abort', 'access', 'altsep', 'chdir', 'chmod', 'close', 'closerange', 'cpu_count', 'curdir', 'defpath', 'device_encoding', 'devnull', 'dup', 'dup2', 'environ', 'errno', 'error', 'execl', 'execle', 'execlp', 'execlpe', 'execv', 'execve', 'execvp', 'execvpe', 'extsep', 'fdopen', 'fsdecode', 'fsencode', 'fspath', 'fstat', 'fsync', 'ftruncate', 'get_exec_path', 'get_handle_inheritable', 'get_inheritable', 'get_terminal_size', 'getcwd', 'getcwdb', 'getenv', 'getlogin', 'getpid', 'getppid', 'isatty', 'kill', 'linesep', 'link', 'listdir', 'lseek', 'lstat', 'makedirs', 'mkdir', 'name', 'open', 'pardir', 'path', 'pathsep', 'pipe', 'popen', 'putenv', 'read', 'readlink', 'remove', 'removedirs', 'rename', 'renames', 'replace', 'rmdir', 'scandir', 'sep', 'set_handle_inheritable', 'set_inheritable', 'spawnl', 'spawnle', 'spawnv', 'spawnve', 'st', 'startfile', 'stat', 'stat_float_times', 'stat_result', 'statvfs_result', 'strerror', 'supports_bytes_environ', 'supports_dir_fd', 'supports_effective_ids', 'supports_fd', 'supports_follow_symlinks', 'symlink', 'sys', 'system', 'terminal_size', 'times', 'times_result', 'truncate', 'umask', 'uname_result', 'unlink', 'urandom', 'utime', 'waitpid', 'walk', 'write']

最新文章

  1. Thinkphp中controller控制器根据curl函数请求数据
  2. jquery给net里面的RadioButtonList添加选项改变事件
  3. 基于Spark ALS构建商品推荐引擎
  4. SqlAlchemy初探
  5. 【转】Android 4.3源码的下载和编译环境的安装及编译
  6. Cocos2d—X游戏开发之CCScrollView(滑动视图)(十二)
  7. Delphi从内存流中判断图片格式(好多相关文章)
  8. GCDAsyncUdpSocket的使用
  9. BZOJ 1192 鬼谷子的钱袋
  10. asp.net mvc 导出表格
  11. 自定义WIZ文档模板
  12. SQL反模式学习笔记15 分组
  13. C# 6.0:Null – Conditional 操作符
  14. 微信浏览器里在底部的输入框,ios11的不会被遮盖、10.1会被盖住
  15. hdu3015树状数组 poj1990的离散化版本
  16. Error: The INF file contains Unicode characters that could not be converted correctly
  17. 利用STM32CubeMX来生成USB_HID_Mouse工程【添加ADC】(1)
  18. numpy.squeeze()的用法
  19. django-sql注入攻击
  20. 折射向量计算(Refraction Vector Calculation)

热门文章

  1. 笨办法学Python(十三)
  2. ring0 SSDTHook
  3. node实现爬虫
  4. OpenGL纹理高级
  5. python--requests库 安装及简单使用
  6. POJ-1159 Palindrome---变成回文串的最小代价
  7. CPU体系结构
  8. 数集合有多少个TOJ(2469)
  9. nbu备份虚拟机报错156状态4207
  10. 文本编辑器Vim技巧