函数
1.参数
形式参数:简称形参,定义在函数的声明部分,本质是一个没有值的变 量,用于接收实参的值 实际参数:简称实参,出现在函数的调用过程中,本质是一个有值的变量 或者常量,用于给形参赋值 传参:实参给形参赋值的过程 不定长参数【可变参数】: *:被当做元组处理,实参可以是0个,也可以是多个数据 **:字典,实参的书写形式:key=value *xx和**xxx可以组合使用,一般使用形式:*args,**kwargs2.匿名函数
语法:变量名 = lambda 形参列表 : 函数体 f = lambda x , y : x + y 调用:变量名(实参列表) 匿名函数中返回值直接书写,不需要借助于return 在匿名函数中可以使用默认参数,关键字参数和不定长参数 在匿名函数的函数体中可以书写判断语句【三元运算符】3.高阶函数
一个函数可以接受另一个函数作为参数,同样,还可以把一个函数作为另 一个函数的返回值,这种函数的使用方式称为高阶函数 map ( fn , seq ): 将序列中的元素依次取出传给函数,然后根据函数的返回值生成 一个新的序列 reduce ( fn , seq ): 使用fn先对序列中的第0,1个元素进行运算,然后用得到的结果 和第2个元素进行运算直到序列中的所有元素全部参与运算 from functools import reduce # 需求:[1,3,5,7,9]----->13579 """ 1,3---->13 --- >1 * 10 + 3 1,3,5--->135--->13 * 10 + 5 1,3,5,7---->1357--->135 * 10 + 7 """ r2 = reduce(lambda x,y:x * 10 + y,[1,3,5,7,9]) print(r2) # 通过map和reduce,实现将str转换为int的功能 def chartoint(s): digit_dict = {"0":0,'1':1,'2':2,"3":3,"4":4,'5':5,"6":6} return digit_dict[s] r3 = reduce(lambda x,y:x * 10 + y,map(chartoint,"23456")) # [2,3,4,5,6] print(r3) print(type(r3)) filter ( fn , seq ) 根据需求过滤数据,如果fn返回True则表示需要将数据保留, 返回False则数据会被过滤掉 sorted ( ) 对列表进行排序 与sort不同: 调用的语法不同,列表.sort() ,sorted(列表) sort是在原列表的内部进行排序的,而sorted是生成了一个新的列类
1.class 类名 ( ):
Python中使用class关键字定义类【和Java类似】 类名只要是一个合法的标识符即可, 但是要求:首字母必须大写,遵循驼峰命名法2.self
实例函数和普通函数的区别:形参列表第一个参数是self self并不是一个关键字,其实可以是任意的标识符,为了表达代表的是 当前对象自己,惯用self 调用实例函数的时候,self不需要手动传参,系统会自动传递当前的对象 哪个对象调用指定函数,该函数中的self就代表谁3.创建对象【实例化对象】
类其实就是自定义的数据类型,创建对象或者实例化对象的过程 其实就是定义变量过程 语法:变量名 = 类名(初始值),目前初始值省略 通过一个普通的类可以创建无数个对象,每个对象在内存中都会开辟新的空间4.调用类中的实例函数:由对象执行自己的行为
语法:对象.函数(参数)5.限制绑定
对象属性的动态绑定数量没有上限,绑定的属性的名称没有限制, 在实际项目开发中,需要进行限制绑定 Python中通过__slots__属性限制需要绑定的属性 语法:__slots__ = (属性1,属性2.。。。。)6.构造函数
构造函数,也被称为构造器,指的是当创建对象的时候,被自动调用的函数 构造函数包括__new__和__init__ 以__xxxx__这种方式命名的函数被称为魔术方法 __new__: 从无到有的过程【创建】__init__: 进行初始化【赋值】 __new__: 创建对象的时候首先自动调用__new__,它的作用就是创建实例 然后将该实例返回,__new__必须有返回值,并且返回一个实例 super ( Book , cls ).__new__( cls )表示当前类创建出来的一个实例 __init__: 当实例创建完毕之后被调用的,然后通过__init__给实例设置初始 值 __new__先被调用,__init__后被调用,__new__的返回值【实例】将 传递给__init__的第一个参数self,然后__init__给这个实例设置一些参数7.析构函数:
当对象被销毁的时候自动调用的而函数,称为析构函数,函数名为__del__ 将对象定义为全局变量,程序执行完毕,对象自动被销毁 将对象定义为局部变量,当指定的函数执行完毕,则对象随着会被自动销毁 强制销毁对象,什么时候del对象,则什么时候执行析构函数__del__8.对象的内置属性:
# 1.__slots__:限制对象属性的动态绑定 # 2.__doc__:表示类的描述信息,获取类中的文档注释【多行注释】 # 3.__dict__:获取类或者对象的信息【属性和方法】,返回字典 # 4.__moudle__:获取当前操作的对象在哪个模块 # __name__: # 如果被操作的对象在当前模块,则获取的结果为__main__ # 5.__class__:类似于type(xxx),返回当前对象的类型9.类对象的自省函数:
help() 读取对象的文档信息 dir() 读取对象的 __dict__ 信息 id() 读取对象在内存的首地址的ID type() 读取对象的类型 hash() 读取对象的哈希值 (散列函数) isinstance(obj, cls) issubclass(cls, superclass) hasattr(obj, '属性或方法') setattr(obj, '属性或方法', value) getattr(obj, '属性或方法') obj.'属性' 调用obj.__getattribute__() | __getattr__(name)|__setattr(self,name,value)__ obj['属性'] 调用obj.__getitem__()|obj.__setitem__(name, value)