【超全面】Python内置函数详解(二)

简介: 【超全面】Python内置函数详解(二)

【超全面】Python内置函数详解(一):https://developer.aliyun.com/article/1540492

23、exec()

**描述:**执行储存在字符串或文件中的Python语句,相比于 eval,exec可以执行更复杂的 Python 代码。

*语法:exec(*object, globals, locals)

参数:

  • object– 要执行的表达式。
  • globals – 可选。包含全局参数的字典。
  • locals – 可选。包含局部参数的字典。

案例:

执行字符串或compile方法编译过的字符串,没有返回值
s = "print('helloworld')"
r = compile(s,"<string>", "exec")
exec(r)
helloworld

x = 10
expr = """
z = 30
sum = x + y + z
print(sum)
"""
def func():
    y = 20
    exec(expr)
    exec(expr, {'x': 1, 'y': 2})
    exec(expr, {'x': 1, 'y': 2}, {'y': 3, 'z': 4})
    
func()
60
33
34

24、filter()

**描述:**filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。


该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。


过滤器,构造一个序列,等价于:[ item for item in iterables if function(item)]


在函数中设定过滤条件,逐一循环迭代器中的元素,将返回值为True时的元素留下,形成一个filter类型数据。


**语法:**filter(function, iterable)


参数:

  • function – 判断函数。
  • iterable – 可迭代对象。

案例:

fil = filter(lambda x: x>10,[1,11,2,45,7,6,13])

fil
 <filter at 0x28b693b28c8>
list(fil)
[11, 45, 13]

def is_odd(n):
    return n % 2 == 1
 
newlist = filter(is_odd, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
print(list(newlist))
[1, 3, 5, 7, 9]

25、float()

**描述:**将一个字符串或整数转换为浮点数

**语法:**class float([x])

**参数:**x – 整数或字符串

案例:

float(3)
3.0


float('123')     # 字符串
 123.0

26、format()

**描述:**Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。使用format()来格式化字符串时,使用在字符串中使用{}作为占位符,占位符的内容将引用format()中的参数进行替换。可以是位置参数、命名参数或者兼而有之。


format 函数可以接受不限个参数,位置可以不按顺序。


**语法:**format(value, format_spec)


参数:


案例:

# 位置参数
'{}:您{}购买的{}到了!请下楼取快递。'.format('快递小哥','淘宝','快递')
'快递小哥:您淘宝购买的快递到了!请下楼取快递。'
#给批量客户发短息
n_list=['马云','马化腾','麻子','小红','李彦宏','二狗子']
for name in n_list:
    print('{0}:您淘宝购买的快递到了!请下楼取快递!'.format(name))
马云:您淘宝购买的快递到了!请下楼取快递!
马化腾:您淘宝购买的快递到了!请下楼取快递!
麻子:您淘宝购买的快递到了!请下楼取快递!
小红:您淘宝购买的快递到了!请下楼取快递!
李彦宏:您淘宝购买的快递到了!请下楼取快递!
二狗子:您淘宝购买的快递到了!请下楼取快递!
    
#名字进行填充    
for n in n_list:
    print('{0}:您淘宝购买的快递到了!请下楼取快递!'.format(n.center(3,'*')))
    
*马云:您淘宝购买的快递到了!请下楼取快递!
马化腾:您淘宝购买的快递到了!请下楼取快递!
*麻子:您淘宝购买的快递到了!请下楼取快递!
*小红:您淘宝购买的快递到了!请下楼取快递!
李彦宏:您淘宝购买的快递到了!请下楼取快递!
二狗子:您淘宝购买的快递到了!请下楼取快递!
'{0}, {1} and {2}'.format('gao','fu','shuai')
'gao, fu and shuai'

x=3
y=5
'{0}+{1}={2}'.format(x,y,x+y)


# 命名参数
'{name1}, {name2} and {name3}'.format(name1='gao', name2='fu', name3='shuai')
'gao, fu and shuai'
# 混合位置参数、命名参数
'{name1}, {0} and {name3}'.format("shuai", name1='fu', name3='gao')
'fu, shuai and gao'
#for循环进行批量处理
["vec_{0}".format(i) for i in range(0,5)]
['vec_0', 'vec_1', 'vec_2', 'vec_3', 'vec_4']


['f_{}'.format(r) for r in list('abcde')]
['f_a', 'f_b', 'f_c', 'f_d',

27、frozenset()

**描述:**frozenset() 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。


**语法:**class frozenset([iterable])


**参数:**iterable – 可迭代的对象,比如列表、字典、元组等等。


案例:

创建一个不可修改的集合。
frozenset([1,1,3,2,3])
frozenset({1, 2, 3})

28、getattr()

**描述:**获取对象的属性

**语法:**getattr(object, name[, default])

参数:

  • object – 对象。
  • name – 字符串,对象属性。
  • default – 默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。

案例:

class Age(object):
      age = 1
  
my_a = Age()
getattr(my_a, 'age')        # 获取属性 bar 值
 1
getattr(my_a, 'age1')
'Age' object has no attribute 'age1'

29、gobals()

描述: 函数会以字典类型返回当前位置的全部全局变量。

**语法:**globals()

参数:无

案例:

a='runoob'
print(globals()) # globals 函数返回一个全局变量的字典,包括所有导入的变量

30、hasattr()

**描述:**函数用于判断对象是否包含对应的属性。

**语法:**hasattr(object, name)

参数:

  • object – 对象。
  • name – 字符串,属性名。

案例:

class Coordinate:
    x = 10
    y = -5
    z = 0
 
point1 = Coordinate() 
print(hasattr(point1, 'x'))
True
print(hasattr(point1, 'y'))
True
print(hasattr(point1, 'z'))
True
print(hasattr(point1, 'no'))  # 没有该属性
Falseclass Coordinate:    x = 10    y = -5    z = 0 point1 = Coordinate() print(hasattr(point1, 'x'))Trueprint(hasattr(point1, 'y'))Trueprint(hasattr(point1, 'z'))Trueprint(hasattr(point1, 'no'))  # 没有该属性False

31、hash()

**描述:**返回对象的哈希值

**语法:**hash(object)

**参数:**object – 对象;

案例:

hash() 函数可以应用于数字、字符串和对象,不能直接应用于 list、set、dictionary。
在 hash() 对对象使用时,所得的结果不仅和对象的内容有关,还和对象的 id(),也就是内存地址有关。
class Test:
    def __init__(self, i):
        self.i = i
for i in range(10):
    t = Test(1)
    print(hash(t), id(t))
    
hash(point1)
16294976

hash('返回对象的哈希值')
4919828709165481160

hash() 函数的用途
hash() 函数的对象字符不管有多长,返回的 hash 值都是固定长度的,也用于校验程序在传输过程中
是否被第三方(木马)修改,如果程序(字符)在传输过程中被修改hash值即发生变化,如果没有被
修改,则 hash 值和原始的 hash 值吻合,只要验证 hash 值是否匹配即可验证程序是否带木马(病毒)。
 
name1='正常程序代码'
name2='正常程序代码带病毒'
 
print(hash(name1)) # -3048480827538126659
print(hash(name2)) # -9065726187242961328

32、help()

**描述:**返回对象的帮助文档

**语法:**help([object])

**参数:**object – 对象

案例:

help('sys')             # 查看 sys 模块的帮助
help('str')             # 查看 str 数据类型的帮助
a = [1,2,3]
help(a)                 # 查看列表 list 帮助信息
 
help(a.append)       # 显示list的append方法的帮助

33 、id()

**描述:**id() 函数返回对象的唯一标识符,标识符是一个整数。CPython 中 id() 函数用于获取对象的内存地址。

**语法:**id([object])

**参数:**object – 对象。

案例:

返回对象的内存地址
a = 'runoob'
id(a)
260316720

34、input()

**描述:**Python3.x 中 input() 函数接受一个标准输入数据,返回为 string 类型。获取用户输入内容

**语法:**input([prompt])

**参数:**prompt: 提示信息

案例:

a = input("input:")
input:1234
print(a)
123

35、int()

**描述:**int() 函数用于将一个字符串或数字转换为整型。 x可能为字符串或数值,将x 转换为一个普通整数。如果参数是字符串,那么它可能包含符号和小数点。如果超出了普通整数的表示范围,一个长整数被返回。


**语法:**int(x, base =10)

参数:

  • x – 字符串或数字。
  • base – 进制数,默认十进制。

案例:

int('12',16)
18

int('12',10)
12

36、isinstance()

**描述:**isinstance() 函数来判断一个对象是否是一个已知的类型,类似 type()。

isinstance() 与 type() 区别:

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

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

如果要判断两个类型是否相同推荐使用 isinstance()。

**语法:**isinstance(object, classinfo)

参数:


object – 实例对象。

classinfo – 可以是直接或间接类名、基本类型或者由它们组成的元组。

案例:

a = 2
isinstance (a,int)
True
isinstance (a,str)
False
isinstance (a,(str,int,list))#是元组中的一个返回 True
True

37、issubclass()

**描述:**issubclass() 方法用于判断参数 class 是否是类型参数 classinfo 的子类。如果class是classinfo类的子类,返回True:


**语法:**issubclass(class, classinfo)


参数:

  • class – 类。
  • classinfo – 类。

案例:

class A:
    pass
class B(A):
    pass
    
print(issubclass(B,A))    # 返回 True

38、iter()

**描述:**iter() 函数用来生成迭代器。

**语法:**iter(object[, sentinel])

参数:

  • object – 支持迭代的集合对象。
  • sentinel – 如果传递了第二个参数,则参数 object 必须是一个可调用的对象(如,函数),此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。返回一个可迭代对象, sentinel可省略,sentinel 理解为迭代对象的哨兵,一旦迭代到此元素,立即终止:

案例:


lst = [1,3,5]
iter(lst)
<list_iterator at 0xf8359e8>


for i in iter(lst):
    print(i)
1
3
5

39、len()

**描述:**len() 函数返回对象(字符、列表、元组等)长度或项目个数。

**语法:**len(s)

**参数:**s – 对象。

案例:

#字典的长度
dic = {'a':1,'b':3}
len(dic)
2

#字符串长度
s='aasdf'
len(s)
5

#列表元素个数
l = [1,2,3,4,5]
len(l)

40、list()

**描述:**list() 函数创建列表或者用于将元组转换为列表。

**语法:**list( tup )

**参数:**tup – 要转换为列表的元组。

案例:

atuple = (123, 'xyz', 'zara', 'abc')
aList = list(atuple)

aList
[123, 'xyz', 'zara', 'abc']

41、map()

**描述:**map() 会根据提供的函数对指定序列做映射。返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器


**语法:**map(function, iterable, …)


参数:


  • function – 函数
  • iterable – 一个或多个序列

案例:

def square(x) :            # 计算平方数
    return x ** 2
list(map(square, [1,2,3,4,5]))   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]


list(map(lambda x: x ** 2, [1, 2, 3, 4, 5]))  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]


# 提供了两个列表,对相同位置的列表数据进行相加
list(map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10]))
[3, 7, 11, 15, 19]


list(map(lambda x: x%2==1, [1,3,2,4,1]))
[True, True, False, False, True

42、max()

**描述:**max() 方法返回给定参数的最大值,参数可以为序列。

**语法:**max( x, y, z, … )

参数:

  • x – 数值表达式。
  • y – 数值表达式。
  • z – 数值表达式。

案例:

最大值:
max(3,1,4,2,1)
4

di  {'a':3,'b1':1,'c':4}
max(di)
'c'

43、min()

**描述:**min() 方法返回给定参数的最小值,参数可以为序列。

**语法:**min( x, y, z, … )

参数:

  • x – 数值表达式。
  • y – 数值表达式。
  • z – 数值表达式。

案例:

min(80, 100, 1000)
80
min([80, 100, 1000])
80


【超全面】Python内置函数详解(三):https://developer.aliyun.com/article/1540494?spm=a2c6h.13148508.setting.27.36474f0evjrly2

相关文章
|
3月前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
110 0
|
2月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
148 67
|
14天前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
26 3
|
18天前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
28 2
|
3天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
7 0
|
1月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
57 18
|
1月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
73 8
|
1月前
|
Python
Python中的函数
Python中的函数
51 8
|
2月前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
2月前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
69 5