内置方法,就是python3提供的各种函数,可以认为是关键字,帮助进行一些列的牛x运算。

  1. abs()#取绝对值
  2. all([])#可迭代对象中的所有元素都为True 则为True,只要至少一个为False则结果为False
  3. any() #可迭代对象中的元素只要有任意一个为True,则结果为True
  4. bin() #10进制转为二进制
  5. bool() #判断一个对象的boolean值
  6. bytes() #转换为字节,字符串需要"abc".encode("utf-8") ,字符串和字节都不可修改。
  7. bytearray() #可修改的字节格式,b=bytearray("abc".encode("utf-8")),b[2]= 97, b="aac"了
  8. callable() #判断一个对象是否可以调用。比如函数,True/False
  9. chr() #输入一个数字,返回ascii中对应的字符
  10. ord() #输入一个字符,返回ascii中对应的数字
  11.  
  12. classmethod() #类方法
  13.  
  14. code="print('hello world')"
  15. gooo=compile(code,'','exec') #用于编译代码。。。。,相当于import,但是如果代码是片段,且是其他途径传过来的,
  16. # 无法import,就这么干,用的地方不多,不过都有代码了,直接exec()就行了。。。。 呵呵
  17. exec(gooo)
  18.  
  19. complex()#复数
  20.  
  21. dict() #生成字典,一般直接{}
  22.  
  23. dir()#查看对象有哪些方法。
  24.  
  25. divmod(5,2) #计算两个数相除的余数
  26.  
  27. eval() #计算器,
  28. exec() #程序运行器
  29.  
  30. #补充:匿名函数:
  31. mmm=lambda n:0 if n < 5 else 10
  32. print(mmm(6))
  33. filter() #过滤器,参数1:过滤方法(支持匿名函数),参数2:需要过滤的数据,可迭代对象,filter以后结果是个filter对象,迭代器的一种。
  34. res=filter((lambda a:a>5),range(10))
  35. print(type(res))
  36. for i in res:
  37. print(i)
  38.  
  39. map() #按照参数1的方法,对参数2可迭代对象的数据进行处理。结果是个map对象,迭代器的一种。
  40. map(lambda n:n*n,range(10))
  41.  
  42. import functools
  43. res=functools.reduce() #reduce方法在python3中,移到了标准库里了,这是累加
  44. res=functools.reduce(lambda n,m:m+n,range(101))
  45. print(res)
  46.  
  47. float()#转换为浮点型
  48. format() #和字符串的.format(name="xiaoming"),一样的
  49.  
  50. frozenset()#不可变的集合,没有add方法什么的。
  51. set()#可变的集合,有add方法什么的。
  52.  
  53. globals()#返回本文件整个程序中的所有全局的东西,返回个字典。可以用来判断变量什么的。他还有内部方法
  54. globals().get() #用来取哪个全局的xx的值
  55. locals() #与globals对应,这个是仅打印局部变量。
  56. locals().get() #用来取哪个局部的xx的值,用在函数内部。。。。装饰器中??? 生成器中???
  57.  
  58. hash(object) #取得对象的hash值
  59.  
  60. help() #查看python的帮助
  61.  
  62. hex() #把数字转为16进制
  63. oct() #把数字转为8进制
  64.  
  65. id() #返回对象的内存地址
  66.  
  67. input()#接收命令行输入的字符串。
  68.  
  69. int()#转换为整形
  70.  
  71. isinstance("gogo",str) #判断一个东西是否是第二个参数的对象类型
  72.  
  73. issubclass() #判断是否是个子类
  74.  
  75. iter() #可迭代对象转化为迭代器
  76.  
  77. len() #取得长度,主要针对数组,元组,字典。等等
  78.  
  79. max() #返回可迭代对象中最大的那个。。。。。
  80. min() #返回可迭代对象中最小的那个。。。。。
  81.  
  82. next() #返回迭代器的下一个值,与迭代器的__next__()方法一致
  83.  
  84. open() #打开文件。。。。。查看文件操作。
  85.  
  86. pow() #运算出,第一个参数数字的第二个参数数字次方
  87.  
  88. print() #输出到屏幕。
  89.  
  90. range() #取得一段数字数组。
  91.  
  92. repr() #用字符串表示一个对象。
  93.  
  94. reversed() #反转一个序列,和列表list的[].reverse()方法一样
  95.  
  96. round() #保留一个数字的n位小数。不写多少位小数,则取整
  97.  
  98. slice() #切片,和[2:5]一样的
  99.  
  100. sorted() #排序,可以用于排序本来没有顺序属性的对象,比如字典,a={1:44,2:33:9:33,7:88,6:33} sorted(a.items()),按照key来排序,如果不取items则排序完就剩下key了,这个不改变原对象
  101. #上述 如果用value来进行排序,需要用匿名函数来做,sorted(a.items(),key=lambda x:x[1]) key为sorted第二个参数关键字。
  102.  
  103. sum() #求和,对于一个可迭代对象的求和,只能用数字的可迭代对象。
  104.  
  105. super() #面向对象的继承。
  106. type() #查看数据类型 , python中所有的数据类型的根本都是type类型的
  107.  
  108. vars() #返回一个对象所有的属性名。
  109.  
  110. zip() #两个list按索引位置,对应起来,变成元组列表。
  111.  
  112. __import__("xxxxx") #引入模块,挺重要的

装饰器:

  1. # 实现装饰器知识储备:
  2. # 1、高阶函数 --- 把函数名字做为实参传个另一个函数(不修改原函数的源代码),返回值中包含原函数名(不改变原函数的调用方式)
  3. # 2、函数即变量
  4. # 3、函数嵌套 ----第一层,接收原函数名,第二层开始处理增加的装饰业务,第一层return 第二层的函数名,即可完成装饰器
  5.  
  6. # 高阶函数 + 函数嵌套 ==》 装饰器
  7.  
  8. #
  9. # 装饰器定义:为其他函数增加额外功能的函数,本质上装饰器就是函数
  10. # 原则:1、不去修改被装饰函数的源代码
  11. # 2、不去修改被装饰函数的调用方式
  1. import time
  2.  
  3. def timer(func): #装饰器必然使用嵌套函数和告诫函数,嵌套外层,定义装饰器名字,和传递的函数名
  4. def deco(*args,**kwargs): #装饰器嵌套函数的内层,描述装饰的额外功能,和传递原函数的各种参数,一般用*args,**kwargs
  5. start_time=time.time()
  6. func(*args,**kwargs)
  7. stop_time=time.time()
  8. print("func run time:{rt}".format(rt=stop_time-start_time))
  9. return deco
  10.  
  11. @timer
  12. def test1():
  13. # time.sleep(3)
  14. print("i'm test1")
  15.  
  16. test1()
  17.  
  18. # 最牛X的 装饰器传参数:
  19. def log_in(log_type):
  20. def wrapper(func):
  21. print("now func is {ffff}".format(ffff=func))
  22. def rawrapper(*args,**kwargs):
  23. print("login,{type}".format(type=log_type))
  24. return func(*args,**kwargs)
  25. return rawrapper
  26. return wrapper

生成器&迭代器:

  1. #a=[i * 2 for i in range(1000000)] #这叫列表生成式 可以让代码更简洁,和装逼
  2. a=(i*2 for i in range(1000000)) #这叫生成器 与生成式最大的区别就是 生成式的数据根据算法全部准备好,
  3. # 但生成器就是个算法,木有数据,只有在有需要数据访问时,提供那一个数据,相当省资源,
  4. # 但直接访问某次数据,未生成的会异常,也就是说,生成器不允许切片使用
  5. #b=a[1000]
  6. #print(b)
  7.  
  8. #生成器取值,需要用生成器自己的方法来做。只能往后读,无法往前读,只记录当前位置的数据,其他都不记录了,省内存。
  9. #一般通过循环来取值
  10. a.__next__() #python3.0 a.next() #python2.0
  11. print(a.__next__())
  12. '''
  13.  
  14. #复杂的逻辑生成器,可以用函数的形式定义,但要有yield关键字来说明返回的是生成的值
  1. #斐波那契数列:
  2. def fib(max):
  3. n,a,b = 0,0,1
  4. while n < max :
  5. yield b #表示生成器值的在这个算法中就是b,所以这里的print改为yield,这个fib就不再是函数而是生成器了。
  6. a,b=b,a+b
  7. n +=1
  8. return "----done----" #可以用return来定义生成器溢出异常的描述值
  9. f=fib(10)
  10. print(f)
  11.  
  12. # print(f.__next__())
  13. # print(f.__next__())
  14. # print(f.__next__())
  15. # print(f.__next__())
  16. # print(f.__next__())
  17. # print(f.__next__())
  18. # print(f.__next__())
  19. # print(f.__next__())
  20. # print(f.__next__())
  21. # print(f.__next__())
  22. # print(f.__next__())
  23. # print(f.__next__()) #超出生成器取值范围后,会异常,异常描述值,可以是定义生成器return 来进行定义
  24.  
  25. #用循环来取生成器的值比较常见,由于生成器的特性决定,循环一般不会有溢出异常
  26. for i in f:
  27. print(i)
  28.  
  29. while True:
  30. try:
  31. print(f.__next__())
  32. except StopIteration as e:
  33. print(e)
  34. break
  1. #利用生成器,做单线程下的并发,这玩意叫协程,比线程单位小,异步IO的雏形,epoll的雏形
  2.  
  3. #生产者,消费者模式?消费者,吃包子的,生产者,做包子的,消费者自己弄个生成器来吃包子,生产者做个包子让消费者来吃。
  4. #yield关键字在生成器中是个标记,__next__()方法调用yield,开始生成器第一次算法值,返回当前的yield,但不传值,
  5. # send()方法,用来给yield传值,并且开始一次算法值
  6. def custom(name):
  7. print("i'm customer %s"%name)
  8. while True:
  9. baozi=yield
  10. print("%s eat the baozi [%s]"%(name,baozi))
  11.  
  12. # c1=custom("wy")
  13. # c1.__next__()
  14. # c1.send("baozi")
  15.  
  16. def product(name1,name2):
  17. c1=custom(name1)
  18. c2=custom(name2)
  19. c1.__next__()
  20. c2.__next__()
  21. for baozi in range(20):
  22. print("begin make baozi : [%s]"%baozi)
  23. c1.send(baozi)
  24. c2.send(baozi)
  25.  
  26. product("wangyue","laopeng")
  27.  
  28. #补充:next()方法是可以取下一个值的内置方法。
  29.  
  30. #迭代器:
  31. #只要是可以作用于for循环的对象,比如string,list,set,tuple,dict等等,就都叫可迭代对象(Iterable)。
  32. #用isinstance()方法判断是否为可迭代对象,返回值True/False,
  33. #使用的这个方法需要引入,
  34. # from collections import Iterable
  35. # isinstance(...,Iterable)
  36.  
  37. #不但可以循环,并且可以被next()方法返回下一个值的对象,就叫迭代器(Iterator)
  38. #用isinstance()方法判断是否为可迭代器,返回值True/False,
  39. # from collections import Iterable
  40. # isinstance(...,Iterabor)
  41. #补充,可以通过dir()方法来查看全部方法,dir(....),迭代器dir()以后必须包含__next__()方法
  42. #明确:
  43. # ----生成器一定是可迭代对象,一定是迭代器
  44. # ----迭代器一定是可迭代对象
  45.  
  46. #可以使用iter()方法,将字典dict、列表list、字符串str等可迭代对象,转化为迭代器

python3.x Day4 内置方法,装饰器,生成器,迭代器的更多相关文章

  1. Python自动化 【第四篇】:Python基础-装饰器 生成器 迭代器 Json & pickle

    目录: 装饰器 生成器 迭代器 Json & pickle 数据序列化 软件目录结构规范 1. Python装饰器 装饰器:本质是函数,(功能是装饰其它函数)就是为其他函数添加附加功能 原则: ...

  2. 跟着ALEX 学python day4集合 装饰器 生成器 迭代器 json序列化

    文档内容学习于 http://www.cnblogs.com/xiaozhiqi/  装饰器 : 定义: 装饰器 本质是函数,功能是装饰其他函数,就是为其他函数添加附加功能. 原则: 1.不能修改被装 ...

  3. Python 4 函数的参数,内置函数,装饰器,生成器,迭代器,

    一.函数的参数: 1.位置参数:调用函数时根据函数定义的参数位置来传递参数. 2.关键字参数:用于函数调用,通过“键-值”形式加以指定.可以让函数更加清晰.容易使用,同时也清除了参数的顺序需求. 3. ...

  4. django 内置用户-装饰器

    """ 一.如何给python内置用户添加额外的字段,注意一定义在没有迁移数据之前定义,否则会报错 1.在models中先调用 from django.contrib.a ...

  5. python三大器(装饰器/生成器/迭代器)

    1装饰器 1.1基本结构 def 外层函数(参数): def 内层函数(*args,**kwargs); return 参数(*args,**kwargs) return 内层函数 @外层函数 def ...

  6. Python—内置三大装饰器(@staticmethod、@classmethod、@property)

    https://blog.csdn.net/weixin_42681866/article/details/83376484 https://blog.csdn.net/weixin_43265804 ...

  7. s14 第4天 关于python3.0编码 函数式编程 装饰器 列表生成式 生成器 内置方法

    python3 编码默认为unicode,unicode和utf-8都是默认支持中文的. 如果要python3的编码改为utf-8,则或者在一开始就声明全局使用utf-8 #_*_coding:utf ...

  8. python-day4装饰器、生成器、迭代器、内置方法、序列化、软件目录

    @生成器generator a=(i*2 for i in range(10)) a.__next__()#等同于next(a),基本都不用,多用for循环a.send(m)#将m传为yield的值 ...

  9. NO.4:自学python之路------内置方法、装饰器、迭代器

    引言 是时候开始新的Python学习了,最近要考英语,可能不会周更,但是尽量吧. 正文 内置方法 Python提供给了使用者很多内置方法,可以便于编程使用.这里就来挑选其中大部分的内置方法进行解释其用 ...

随机推荐

  1. ES6躬行记(23)——Promise的静态方法和应用

    一.静态方法 Promise有四个静态方法,分别是resolve().reject().all()和race(),本节将着重分析这几个方法的功能和特点. 1)Promise.resolve() 此方法 ...

  2. E20170524-gg

    Awesome   adj. 可怕的; 令人敬畏的; 使人畏惧的; 极好的;

  3. JQuery-Validate明明配置好了但是不生效?卡了2个小时的bug解决了,原因很简单。

    JQuery Validate是表单验证的js工具,一般用于前台页面的校验,例如登陆和注册. 照着教程写了起来,使用Hbulider编辑器,本来写的时候可以用的,但是后来不知道怎么操作的,页面上的校验 ...

  4. jQuery笔记之Easing Plugin

    jQuery easing 使用方法首先,项目中如果需要使用特殊的动画效果,则需要在引入jQuery之后引入jquery.easing.1.3.js<script type="text ...

  5. python的Template使用指南

    本文主要讲解了python中Template使用方法以及使用技巧,非常实用,有需要的朋友可以参考下: Template无疑是一个好东西,可以将字符串的格式固定下来,重复利用.同时Template也可以 ...

  6. poj 3295 Tautology 伪递归

    题目链接: http://poj.org/problem?id=3295 题目描述: 给一个字符串,字符串所表示的表达式中p, q, r, s, t表示变量,取值可以为1或0.K, A, N, C, ...

  7. 图论/暴力 Codeforces Beta Round #94 (Div. 2 Only) B. Students and Shoelaces

    题目传送门 /* 图论/暴力:这是个连通的问题,每一次把所有度数为1的砍掉,把连接的点再砍掉,总之很神奇,不懂:) */ #include <cstdio> #include <cs ...

  8. C#中如何判断键盘按键和组合键

    好记性不如烂笔头子,现在记录下来,不一定会有很详尽的实例,只写最核心的部分. C# winform的窗体类有KeyPreview属性,可以接收窗体内控件的键盘事件注册.窗体和控件都有KeyDown,K ...

  9. jmeter(一)工具介绍(二)

    1.Jmeter 概要描叙 jmeter 是一款专门用于功能测试和压力测试的轻量级测试开发平台.多数情况下是用作压力测试,该测试工具在阿里巴巴有着广泛的使用,估计是不要钱吧,哈哈,功能上来说,整个平台 ...

  10. ajax通过新闻id获取列表

    <div class="index_main">        <div class="page_l">           <i ...