欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python的函数与类

程序员文章站 2022-07-15 13:01:45
...

函数

1.参数

形式参数:简称形参,定义在函数的声明部分,本质是一个没有值的变

		   量,用于接收实参的值

实际参数:简称实参,出现在函数的调用过程中,本质是一个有值的变量

		   或者常量,用于给形参赋值

传参:实参给形参赋值的过程

不定长参数【可变参数】:

	*:被当做元组处理,实参可以是0个,也可以是多个数据

	**:字典,实参的书写形式:key=value

	*xx和**xxx可以组合使用,一般使用形式:*args,**kwargs

2.匿名函数

语法:变量名  =  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)
相关标签: 函数与类 python