Python 编程 | 连载 23 - 常用函数与高阶函数

简介: Python 编程 | 连载 23 - 常用函数与高阶函数

一、常用函数

Python 中的常用的内置函数如下:

函数 参数 描述 返回值
abs() number 返回数字的绝对值 正整型
all() list 判断列表内容是否全是True bool
any() Iterable 判断内容是否有true值 bool
help() object 用于查看函数或模块用途的详细说明 无返回值
enumerate() iterable 迭代时记录索引 无返回值
input() str 命令行中输入信息 str
isinstance() object, type 判断对象是否是某种类型 bool
type() object 返回对象的类型 str
vars() instance 返回对象或者类的属性和属性值 dict
dir() object 返回对象中所有可用方法和属性 list
hasattr() object, key 判断对象中是否有某个属性 bool
setattr() object, key, value 给实例化对象添加属性和值 无返回值
getattr() object, key 获取对象的属性 object

abs()

print(abs(-1))
print(abs(-100.00))
print(abs(10))
# 只能接收数字类型作为参数,None和str都会报错
print(abs(None))
print(abs('s'))
复制代码

image.png

abs() 函数的参数只能为数字类型,如果数字是正整数则返回结果不做任何改变。

all() 与 any()

res_01 = all(['a', 'c', 1, 3, (5, 7), {'name': 'stark', 'address': 'NYC'}])
print('全部不为空时,{}'.format(res_01))
res_02 = all(['a', 0, 1, 3, (5, 7), {'name': 'stark', 'address': 'NYC'}])
print('存在0时,{}'.format(res_02))
res_03 = all(['a', '', 1, 3, (5, 7), {'name': 'stark', 'address': 'NYC'}])
print('存在空字符串时,{}'.format(res_03))
res_04 = all(['a', None, 1, 3, (5, 7), {'name': 'stark', 'address': 'NYC'}])
print('存在None时,{}'.format(res_04))
res_05 = all(['a', 'c', 1, 3, [], {'name': 'stark', 'address': 'NYC'}])
print('存在空列表时,{}'.format(res_05))
res_06 = all(['a', 'c', 1, 3, {}, {'name': 'stark', 'address': 'NYC'}])
print('存在空字典时,{}'.format(res_06))
复制代码

image.png

当包含空列表、空字符串、None、空字典或者0时,all()函数返回结果为False,all()函数的参数必须是可迭代的。

res_01 = any(['a', 'c', 1, 3, (5, 7), {'name': 'stark', 'address': 'NYC'}])
print('元素全部为True时,{}'.format(res_01))
res_02 = any(['a', 0, 1, 3, (5, 7), {'name': 'stark', 'address': 'NYC'}])
print('元组只包含一个False时,{}'.format(res_02))
res_03 = any([0, (), {}])
print('元素全部为False时'.format(res_03))
复制代码

image.png

只有当列表的中的所有元素全部为False时,any()函数才返回False,而all()函数只要有一个元素为 False 就返回 False。

help()

print(help('abs'))
print(help('all'))
复制代码

image.png

enumerate()

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

heros = ['stark', 'thor', 'hulk', 'clint']
print(list(enumerate(heros)))
print(list(enumerate(heros, start=1)))
# for 循环中使用enumerate
for idx, hero in enumerate(heros):
    print(idx, hero)
复制代码

image.png

isinstance() 与 type()

a = 1
print(isinstance(a, str))
print(isinstance(a, int))
# 只要是元祖中的一个就会返回True
print(isinstance(a, (str, int, list)))
# 只能是元组,不能是字典
print(isinstance(a, [str, int, list]))
复制代码

image.png

class Tesla():
    pass
class Roaster(Tesla):
    pass
tesla = Tesla()
print(isinstance(tesla, Tesla))
print(type(tesla) == Tesla)
roaster = Roaster()
print(isinstance(roaster, Tesla))
print(type(roaster) == Tesla)
复制代码

image.png

isinstance() 与 type() 区别:

  • type() 不会认为子类是一种父类类型,不考虑继承关系。
  • isinstance() 会认为子类是一种父类类型,考虑继承关系。

vars()

class Tesla():
    name = 'Roadster'
    factory = '上海特斯拉超级工厂'
tesla = Tesla()
print("tesla实例所包含的属性和属性值,{}".format(vars(tesla)))
tesla.price = 88000.00
print('tesla实例所包含的属性和属性值,{}'.format(vars(tesla)))
print('Tesla类所包含的属性和属性值,{}'.format(vars(Tesla)))
print(vars())
复制代码

image.png

dir()

dir()  函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。

# 查看当前模块的属性和方法
print(dir())
# 查看字符串的属性和方法
print(dir(str))
复制代码

image.png

hasattr()、getattr() 和 setattr()

class Roadster():
    name = 'roadster'
    factory = '上海特斯拉超级工厂'
roadster = Roadster()
print(hasattr(Roadster, 'name'))
print(hasattr(roadster, 'name'))
print(getattr(roadster, 'factory'))
setattr(roadster, 'price', 1200000.00)
print(getattr(roadster, 'price'))
复制代码

image.png

二、高阶函数

filter()

filter() 函数可以对循环根据过滤条件进行过滤,过滤掉符合表达式的元素,返回符合条件的元素组成的新的列表。

filter(表达式, 可迭代对象)
复制代码
def is_even(n):
    return n % 2 != 0
# 传入函数名称,不需要加()
nums = filter(is_even, [1, 2, 3, 4, 5, 6])
print(nums)
for num in nums:
    print(num)
复制代码

image.png

map()

map()  会根据提供的函数对指定序列做映射,第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

map(条件表达式, 可迭代对象)
复制代码
def div(x):
    return x / 2
nums = map(div, [1,2,3,4])
print(nums)
for num in nums:
    print(num)
复制代码

image.png

frunts = ['apple', 'banana', 'orange']
def filter_func(item):
    if 'e' in item:
        return True
filter_result = filter(filter_func, frunts)
print(list(filter_result))
map_result = map(filter_func, frunts)  # > all
print(list(map_result))
复制代码

image.png

filter()和map()的区别在于filter()返回的是符合条件的元素组成的列表,map()返回的是每个元素调用传入函数之后的返回组组成的列表。

reduce()

对循环前后两个数据进行累加

reduce(表达式, 可迭代对象)
复制代码
from functools import reduce
frunts = ['apple', 'banana', 'orange']
# 返回1*1*2*4*4
reduce_result = reduce(lambda x, y: x * y, [1, 1, 2, 4, 4])
print(reduce_result)
# 返回 apple+banana+orange
reduce_result_str_add = reduce(lambda x, y: x + y, frunts)
print(reduce_result_str_add)
# 返回 apple*banana*orange
reduce_result_str = reduce(lambda x, y: x * y, frunts)
print(reduce_result_str)
复制代码

image.png

字符串之间只能进行累加操作,不能进行乘法操作。


相关文章
|
8天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建 RESTful API
本文深入探讨了使用 Python 构建 RESTful API 的方法,涵盖 Flask、Django REST Framework 和 FastAPI 三个主流框架。通过实战项目示例,详细讲解了如何处理 GET、POST 请求,并返回相应数据。学习这些技术将帮助你掌握构建高效、可靠的 Web API。
|
8天前
|
机器学习/深度学习 设计模式 测试技术
Python 高级编程与实战:构建自动化测试框架
本文深入探讨了Python中的自动化测试框架,包括unittest、pytest和nose2,并通过实战项目帮助读者掌握这些技术。文中详细介绍了各框架的基本用法和示例代码,助力开发者快速验证代码正确性,减少手动测试工作量。学习资源推荐包括Python官方文档及Real Python等网站。
|
9天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
9天前
|
消息中间件 分布式计算 并行计算
Python 高级编程与实战:构建分布式系统
本文深入探讨了 Python 中的分布式系统,介绍了 ZeroMQ、Celery 和 Dask 等工具的使用方法,并通过实战项目帮助读者掌握这些技术。ZeroMQ 是高性能异步消息库,支持多种通信模式;Celery 是分布式任务队列,支持异步任务执行;Dask 是并行计算库,适用于大规模数据处理。文章结合具体代码示例,帮助读者理解如何使用这些工具构建分布式系统。
|
10天前
|
机器学习/深度学习 数据可视化 TensorFlow
Python 高级编程与实战:深入理解数据科学与机器学习
本文深入探讨了Python在数据科学与机器学习中的应用,介绍了pandas、numpy、matplotlib等数据科学工具,以及scikit-learn、tensorflow、keras等机器学习库。通过实战项目,如数据可视化和鸢尾花数据集分类,帮助读者掌握这些技术。最后提供了进一步学习资源,助力提升Python编程技能。
|
10天前
|
机器学习/深度学习 存储 设计模式
Python 高级编程与实战:深入理解性能优化与调试技巧
本文深入探讨了Python的性能优化与调试技巧,涵盖profiling、caching、Cython等优化工具,以及pdb、logging、assert等调试方法。通过实战项目,如优化斐波那契数列计算和调试Web应用,帮助读者掌握这些技术,提升编程效率。附有进一步学习资源,助力读者深入学习。
|
10天前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
11天前
|
机器学习/深度学习 分布式计算 API
Python 高级编程与实战:深入理解并发编程与分布式系统
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发、API 设计、网络编程和异步IO。本文将深入探讨 Python 在并发编程和分布式系统中的应用,并通过实战项目帮助你掌握这些技术。
|
11天前
|
机器学习/深度学习 API Python
Python 高级编程与实战:深入理解网络编程与异步IO
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧、数据科学、机器学习、Web 开发和 API 设计。本文将深入探讨 Python 在网络编程和异步IO中的应用,并通过实战项目帮助你掌握这些技术。
|
11天前
|
机器学习/深度学习 开发框架 API
Python 高级编程与实战:深入理解 Web 开发与 API 设计
在前几篇文章中,我们探讨了 Python 的基础语法、面向对象编程、函数式编程、元编程、性能优化、调试技巧以及数据科学和机器学习。本文将深入探讨 Python 在 Web 开发和 API 设计中的应用,并通过实战项目帮助你掌握这些技术。

热门文章

最新文章