最近在看《SmoothPython》这本书,想把我的阅读笔记分享给大家,希望对大家有帮助,我对这本书很感兴趣但是那些没有时间看的人。(文中大部分文字和图片摘自《SmoothPython》一书和python官网)章节概述:Python中的函数是一等对象。本章从为什么函数是一等对象的角度来介绍Python函数。章节结构:什么是一等对象为什么函数是一等对象它是满足以下条件的程序实体:它是在运行时创建的,它可以赋值给数据结构中的变量或元素,它可以作为参数传递给函数,也可以作为函数的返回结果。函数是对象。我们可以deffunction_example(n):在控制台创建一个函数,这样该函数满足运行时创建。我们查看type(function_name)并返回,表明function_example是函数类的一个实例。我们也可以将对象function_example赋值给一个变量,比如variable_example=function_example。函数式编程风格,高阶函数接收函数是一个接受参数的函数,或者说返回一个函数作为结果的函数,就是高阶函数。比如map,filter,reduce,apply,sorted例子:sorted(list_example,key=len)几个高阶函数的解释:sun和reduce的大体思路是对序列的元素不断的应用一个操作,累加了前面的结果,序列值就缩减为一个单一的值。all和any是内置的归约函数map和filter返回生成器,所以它们的替代品是使用高阶函数时的生成器表达式,一次性小函数,匿名函数匿名函数,lambdas。匿名函数的定义体只能使用纯表达式,lambda的定义体不能赋值,也不能使用while、try等。例子:sorted(list_example,key=lambdaword:word[::-1])判断一个对象是否可调用,可以使用内置的callable()函数来判断。可调用对象:用户自定义函数:def/lambda内置函数:len等内置方法:dict。运行__init__初始化实例,然后将实例返回给调用者类实例:如果定义了__call__生成器函数:使用yield关键字的函数或方法如何将类的实例变成可调用对象?实现调用方法函数自省:函数的属性Python的参数处理机制位置参数:位置参数按照位置的先后顺序传递。关键字参数:函数定义时,如果有参数,所有形参名都是关键字。如果想通过关键字传递参数,可以使用关键字=值来传递参数。默认参数:定义函数时,给参数传入一个默认参数值。如果调用函数时参数没有传递值,将使用默认值。如果显式传递参数,将使用新传递的值。代替默认值。Keyword-onlyargument:Keyword-onlyargument是指只能传入关键字参数,其他方式不能传入参数。仅关键字参数不能默认(除非有默认值),只能强制通过关键字传递参数。可变参数:可变参数是可以接受多个实际参数的形式参数。传入变量参数的个数是不确定的,通常由函数调用者决定。可变关键字参数:可变关键字参数用双星号+参数名表示。可变关键字参数接收零个或多个关键字参数,并以字典的形式传递给函数体。key,关键字绑定的值为value。如果variable关键字不接收任何参数,则会将一个空字典{}传递到函数体中。~~~~获取参数信息:函数__default__属性,这个元组中存放的是定位参数和关键字参数的默认值,只有关键字参数的默认值在__kwdefaults__中。支持函数式编程的packageoperator模块:多个算术运算符提供相应的函数functools模块:提供一系列高阶函数,如reduce