前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python 编程 | 连载 23 - 常用函数与高阶函数

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

作者头像
RiemannHypothesis
发布2022-09-26 16:12:10
3560
发布2022-09-26 16:12:10
举报
文章被收录于专栏:Elixir

一、常用函数

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()

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

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

all() 与 any()

代码语言:javascript
复制
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
image.png

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

代码语言:javascript
复制
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
image.png

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

help()

代码语言:javascript
复制
print(help('abs'))

print(help('all'))
image.png
image.png

enumerate()

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

代码语言:javascript
复制
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
image.png

isinstance() 与 type()

代码语言:javascript
复制
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
image.png
代码语言:javascript
复制
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
image.png

isinstance() 与 type() 区别:

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

vars()

代码语言:javascript
复制
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
image.png

dir()

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

代码语言:javascript
复制
# 查看当前模块的属性和方法
print(dir())

# 查看字符串的属性和方法
print(dir(str))
image.png
image.png

hasattr()、getattr() 和 setattr()

代码语言:javascript
复制
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
image.png

二、高阶函数

filter()

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

代码语言:javascript
复制
filter(表达式, 可迭代对象)
代码语言:javascript
复制
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
image.png

map()

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

代码语言:javascript
复制
map(条件表达式, 可迭代对象)
代码语言:javascript
复制
def div(x):
    return x / 2

nums = map(div, [1,2,3,4])
print(nums)

for num in nums:
    print(num)
image.png
image.png
代码语言:javascript
复制
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
image.png

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

reduce()

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

代码语言:javascript
复制
reduce(表达式, 可迭代对象)
代码语言:javascript
复制
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
image.png

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、常用函数
    • abs()
      • all() 与 any()
        • help()
          • enumerate()
            • isinstance() 与 type()
              • vars()
                • dir()
                  • hasattr()、getattr() 和 setattr()
                  • 二、高阶函数
                    • filter()
                      • map()
                        • reduce()
                        领券
                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档