Python学习笔记(八)

一、变量可以指向一个函数

  a = abs

二、通过调用指向函数的变量可以执行该函数

  a = abs
  a(-10)

三、指向函数的变量可以作为参数传递给一个函数

  def add(x,y,f):
    return f(x) + f(y)
  add(-5,-6,abs)

四、map()函数

  map() 函数可以为其传入一个函数以及一个可Iterator的对象,map将使用该函数依次作用于每个Iterator的元素
  
  list1 = [ x for x in range(1,11)]
  def fun(x):
    return x + 1
  list2 = map(fun,list1)

五、reduce()函数

  reduce()函数接收一个函数和一个Iterator对象,但接收的函数有两个变量,并依次每次迭代列表中的两个元素

六、filter()函数

  filter()函数也是一个高阶函数,其有两个参数,分别是函数和可Iterator对象,并将函数依次作用于这个list的每个元素,根据函数返回True和False来对列表进行相关的操作

  #使用filter()函数来输出一个列表中所有的奇数:
  list1 = [ x for x in range(1,101)]
  def is_odd(x):
    if x % 2 != 0:
      return True
    else:
      return False
  list2 = list(is_odd,list1)

七、sorted()函数

  sorted()函数可以用作排序

  sorted(可遍历对象)
  sorted(可遍历对象, key=abs ) #按照每个元素的abs进行排序
  sorted(可遍历对象, key=abs , reverse = True) #按照每个元素的abs进行排序并且反转

八、函数的返回与闭包

  函数也可以作为值返回

  闭包是函数式编程中函数作为第一等公民的一种组织方式

  def welcome(welcome_str):
    def say_hello(user_name):
      return welcome_str + user_name
    return say_hello

  say_hello_fun = welcome("你好")
  str = say_hello_fun("CQ")
  print(str)

九、创建闭包时的规范

  闭包必须有内嵌函数
  内嵌函数需要引用该嵌套函数上一级namespace中的变量
  闭包函数必须返回内嵌函数

十、闭包函数中的执行和调用问题

  第一步:通过最外称函数获取内嵌函数
  第二步:通过构造内嵌函数参数来获取返回的执行结果

十一、匿名函数

  Python中通过lambda提供了对匿名函数的支持

  lambda 参数 : 参数参与的表达式

  lambda表达式只能有一句表达式,并且直接将该表达式的执行结果返回,而不用书写return语句

  lambda表达式可以直接赋值给一个变量,再通过变量来构造函数来实现调用

  fun = lambda x : x * x 
  fun(5)

十二、装饰器

  装饰器是在不破坏原有函数功能基础上,为函数新增功能的一种机制

  def test1(fun):
    def test2(*k,**kv):
      print("now",fun.__name__,"is run"):
      return fun(*k)
    return test2

  @test1
  def test(user_name):
    print("Hello,",user_name)

  test("CQ") #这里是调用执行

十三、偏函数

  通过偏函数,可以方便的新建一个函数,并使其原函数参数有固定的默认值

  import functools
  int2 = functools.partial(int,base=2)
  int2(‘1000‘)

  functools.partial(原函数,原函数的默认值)

  

  

  

  
  

时间: 2024-08-14 16:05:00

Python学习笔记(八)的相关文章

python学习笔记八——正则表达式

1.元字符 []-常用来指定一个字符集:[abc];[a-z] -元字符在字符集中不起作用:[akm$] -补集匹配不在区间范围内的字符:[^5] ^-匹配行首 $-匹配行尾 \-后可加不同字符以表示不同意义,也可用于取消所有元字符 \d 匹配任何十进制数,相当于[0-9] \D 匹配任何非数字字符,相当于[^0-9] \s 匹配任何空白字符,相当于[\t\n\r\f\v] \S 匹配任何非空白字符 \w 匹配任何字母数字字符 \W 匹配任何非字母数字字符 *-匹配前一个字符零次或多次 +-至少

Python学习笔记八 面向对象高级编程(二)元类

参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 在廖老师的学习网站里"使用元类"这部分还是把我给看晕了...网上搜到一篇感觉讲的相对易懂一些,贴出链接:两句话掌握 Python 最难知识点--元类--以此文作为这篇笔记的源本. "道生一,一生二,二生三,三生万物" 1.在Python世界中,"type"即为道

python学习笔记(八)-模块

大型python程序以模块和包的形式组织.python标准库中包含大量的模块.一个python文件就是一个模块.1.标准模块 python自带的,不需要你安装的2.第三方模块 需要安装,别人提供的. pip install xxx 自动化安装的 手动安装 首先下载安装包 解压 在命令行里面进入到这个解压之后的目录 执行python setup.py install3.自己写的 自己写的python文件import xx 导入一个文件 ,导入文件的实质是什么,把这个python运行一次import

Python学习笔记八 面向对象高级编程(一)

参考教程:廖雪峰官网https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一.使用__slots__ 正常情况下,当定义了一个类之后,我们可以给这个类的实例绑定任何属性,这就是动态语言的优势: class Student(object): def __init__(self,name,age): self.name=name self.age=age bob=Student('Bob

Python学习笔记八:文件操作(续),文件编码与解码,函数,递归,函数式编程介绍,高阶函数

文件操作(续) 获得文件句柄位置,f.tell(),从0开始,按字符数计数 f.read(5),读取5个字符 返回文件句柄到某位置,f.seek(0) 文件在编辑过程中改变编码,f.detech() 获取文件编码,f.encoding() 获取文件在内存中的编号,f.fileno() 获取文件终端类型(tty.打印机等),f.isatty() 获取文件名,f.name() 判断文件句柄是否可移动(tty等不可移动),f.seekable() 判断文件是否可读,f.readable() 判断文件是

Python学习笔记八:模块

模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用. 简单地说,模块就是一个保存了Python代码的文件.模块能定义函数,类和变量.模块里也能包含可执行的代码. import 想使用Python源文件,只需在另一个源文件里执行import语句,当解释器遇到import语句,如果模块在当前的搜索路径就会被导入. 1 #coding=utf-8 2 #!/usr/bin/python

python学习笔记八:文件与目录

一.文件的打开和创建 1.打开 open(file,mode): >>>fo = open('test.txt', 'r') >>>fo.read() 'hello\n' >>>fo.close() file(file,mode): >>>f = file('test.txt', 'r') >>>f.read() 'hello\n' >>>f.close() mode可取值: 2.创建 用w/w+/

python学习笔记八--动态类型

一.变量,对象,引用: 1. 变量: 2. 对象:均包含了一个头部信息,有以下两部分内容 a.对象的数据类型, b.引用计数器:纪录当前引用货指向该对象的数量,一旦计数器被清零,该对象的内存空间就会被回收. 3. 引用:关联变量和对象之间的指针, a=3 二.共享引用,新创建对象: 1. a=3 b=a a='spam' a变了,b还等于3,因为b指向的对象没有发生变化,b的指针也没有变. 2.  a=3 b=a a=a+2 b是什么情况? Python里给一个变量赋新值,并不会改变原有的对象,

Python学习笔记八:ORM框架SQLAlchemy

一:SQLAlchemy使用 1:实体类的创建 ORM中的实体类与一般的Python类不同,在其中,使用 __tablename__=""指明该类与数据库中某个表相对应,然后定义一系列成员属性,属性值使用 Column(数据类型) 来映射到表中具体哪一列. 首先,创建数据库引擎,并由静态方法获取一个基类:declarative_base() 创建了一个 BaseModel 类,这个类的子类可以自动与一个表关联. 然后,继承base类,定义实体类: 带外键的实体类创建: 最后,运行基类中

python学习笔记(八) - 错误、调试、测试

一.错误处理 1. 使用try .. exception .. finally try: print 'try...' r = 10 / 0 print 'result:', r # 出现异常不会打印这句话 except ZeroDivisionError, e: # 如果有异常就会被捕获到 print 'except:', e else: print 'no error!' # 如果没有异常就执行else finally: print 'finally...' # finally是肯定会执行的