python基础(十九、函数进阶

16.函数进阶
5)内置函数
Python共69个内置函数,参考官网:
https://docs.python.org/zh-cn/3/library/functions.html
(1)匿名函数 lambda
匿名函数不需要显示地定义函数名,语法:
lambda 参数 :返回值

打印数据长度

(2)作用域相关 2个
①locals:以字典类型,返回当前作用域的变量和函数。参考:局部变量
②globals:以字典类型,返回全部全局变量。参考:全局变量

(3)类型相关 17个
与类型相关的指,把入参包装为某种类型,这样的内置函数包括:
①bool() # 布尔型
②int() # 整形
③str() # 字符型
④float() # 浮点型
⑤list() # 列表型
⑥tuple() # 元组型
⑦dict() # 字典型
⑧list() # 列表型
⑨set() # 集合类型
⑩frozenset() # 冻结集合类型,不允许修改,冻结后可哈希

⑪range() # 不可更改的序列
⑫zip() #拉链函数,可迭代对象聚合

当数量不匹配时,遵循短板原则

⑬complex() # 复数型,复数由实部(有理数、无理数)和虚部(i2 = -1,i为虚数)构成
⑭bytes() # 字节型数组
⑮bytearray() # 字数数组
⑯object() # 无属性的根类
⑰slice() # 切片,返回一个slice对象,其中start, stop, step等都是只读的

(4)数理统计相关 10个
有的内置函数可以完成简单的数理统计工作,这样的内置函数包括:
①abs() # 绝对值
②len() #参数元素个数
③min() # 最小
④max() # 最大
⑤sum() # 求和,括号中要求填写可迭代对象

⑥pow() # 求次幂

⑦divmod() # (商,余数) 通常使用 //和%较多

⑧round() #四舍五入

⑨all() # 判断可迭代对象内,所有元素为true则为true
print(all("abc")) # True
print(all([0, 1, 2])) # False
print(all(["呵呵", 1, 2])) # True
⑩any() # 判断可迭代对象内,至少一个元素为true则为true
print(any("abc")) # True
print(any([0, 1, 2])) # True
print(any([0, False, ""])) # False

(5)进制转换 6个
有些内置函数可以帮助我们轻松实现进制转换,比如:
①chr() #unicode编码

②ord() #chr()反操作

③bin() #转化为ob开头的二进制字符

④oct() # 转化为0o开头的八进制字符

⑤hex() #转化为ox开头的十六进制字符

⑥ascii() #可打印表示对象,类似于 repr()
⑦repr()#官方提供的字符串表示形式

“r”字符串原样输出

“f”字符串格式化输出

(6)面向对象相关 13个
Python提供与对象属性相关的操作函数,它们为满足Python属性的动态调整提供了可能。
①setattr(object, name, value) #为对象设置属性
②delattr(object, name) # 删除命名的属性
③getattr(object,name) #获取属性的取值,如果对象无此属性,会抛异常
④getattr(object,name, 123) #即便无此属性,也不会抛异常,会返回123
⑤hasattr(object,name) # 判断name属性是否属于object
⑥isinstance(object, classinfo) #判断object是classinfo的实例吗,子类的实例也判定为True

⑦issubclass(class, classinfo) # 判断class是否为classinfo的子类

⑧super() #调用父类, 方法
⑨property() #特性相关,@property标记为属性
⑩type() #返回实例的类型(类)


⑪vars() # 返回对象的信息等
⑫classmethod() # 转化方法为类方法
⑬staticmethod() #方法是静态方法

(7)迭代器相关 4个
①iter() #获取迭代器

②next() #下一个

③reversed() # 函数返回一个反转的迭代器

④enumerate() # 将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列(元组),同时列出数据和数据下标,一般用在 for 循环当中。

for循环达到同样效果

(8)排序sorted(重点)
sorted()可以对可迭代的对象进行排序操作,返回一个排序好的列表。

对于字符串数据,可以使用参数key自定义排序规则,key=函数名。首先,sorted打开可迭代对象,然后获取得到每一项数据,并把每一项数据传递给函数,sorted根据函数的返回值进行排序。

可以使用匿名函数 lambda,简化代码:


可以使用参数reverse=True,进行降序排列

(9)筛选函数filter(重点)
filter()函数用于过滤序列,过滤掉不符合条件的元素,返回符合条件的元素组成的迭代器。
filter()语法:
filter(function, iterable) # 其中function为函数(函数返回True则保留数据),iterable为需要过滤的可迭代序列

(10)映射函数map(重点)
map函数的原型为:map(function, iterable, ...) ,返回一个迭代器,在每一个可迭代对象的元素上应用function.

(11)eval 函数
①eval()函数
功能十分强大:将字符串 当成 有效的表达式 来求值 并 返回计算结果

②案例 - 计算器
需求:
(a)提示用户输入一个 加减乘除混合运算
(b)返回计算结果

③数据转换

④不要滥用 eval
在开发时千万不要使用 eval 直接转换 input 的结果

(12)其他 13个
①字符串类型代码的执行:
(a)exec() #执行字符串类型的代码。危险,尽量不要暴露给用户

(b)compile() #将一个字符串编译为字节代码。危险,尽量不要暴露给用户

②输入输出
(c)input() #接收键盘输入数据,返回字符串。
(d)print() #打印,参考:print增强

③内存相关:
(e)hash() #返回对象的哈希码
python的字符串hash算法并不是直接遍历字符串每个字符去计算hash,而是会有一个secret prefix和一个secret suffix,可以认为相当于是给字符串加盐后做hash,可以规避一些规律输入的情况。显然这个secret前后缀的值会直接影响计算结果,而且它有一个启动时随机生成的机制,在3.x中修改了默认行为,如果你不配置环境变量,则默认是随机一个前后缀值,这样每次启动都会不同。

(f)id() #返回一个对象的标识

④其它:
(g)open() #打开文件

(h)help() #查看帮助;在命令窗口中经常被使用

在pycharm中Ctrl+单击可以打开帮助信息

(i)callable() #判断对象是否可调用

(j)dir() #查看对象的方法和属性;:

(k)format() #对象格式化



(l)memoryview() #函数与内存视图相关;
(m)breakpoint() #调试相关

原文地址:https://www.cnblogs.com/bdzxh/p/14069194.html