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训练数据时打乱训练数据与标签的两种方法小结
-
Python机器学习之scikit-learn库中KNN算法的封装与使用方法
-
简单讲一下MySQL与python的交互
-
python进程类subprocess的一些操作方法例子
-
Python中的高级函数map/reduce使用实例
-
php中的四舍五入函数代码(floor函数、ceil函数、round与intval)
-
数据结构与算法(Python版二叉堆的实现)
-
Python读取环境变量的方法和自定义类分享
-
分享一个C++与Python开发的中小型通用游戏服务端框架(跨平台,开源,适合MMORPG游戏)
-
php实现的rc4加密解密类定义与用法示例