【超全面】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

相关文章
|
22天前
|
Python
【python从入门到精通】-- 第五战:函数大总结
【python从入门到精通】-- 第五战:函数大总结
56 0
|
19天前
|
Python
Python之函数详解
【10月更文挑战第12天】
Python之函数详解
|
20天前
|
存储 数据安全/隐私保护 索引
|
9天前
|
测试技术 数据安全/隐私保护 Python
探索Python中的装饰器:简化和增强你的函数
【10月更文挑战第24天】在Python编程的海洋中,装饰器是那把可以令你的代码更简洁、更强大的魔法棒。它们不仅能够扩展函数的功能,还能保持代码的整洁性。本文将带你深入了解装饰器的概念、实现方式以及如何通过它们来提升你的代码质量。让我们一起揭开装饰器的神秘面纱,学习如何用它们来打造更加优雅和高效的代码。
|
11天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
14天前
|
Python
python的时间操作time-函数介绍
【10月更文挑战第19天】 python模块time的函数使用介绍和使用。
19 4
|
15天前
|
存储 Python
[oeasy]python038_ range函数_大小写字母的起止范围_start_stop
本文介绍了Python中`range`函数的使用方法及其在生成大小写字母序号范围时的应用。通过示例展示了如何利用`range`和`for`循环输出指定范围内的数字,重点讲解了小写和大写字母对应的ASCII码值范围,并解释了`range`函数的参数(start, stop)以及为何不包括stop值的原因。最后,文章留下了关于为何`range`不包含stop值的问题,留待下一次讨论。
13 1
|
21天前
|
索引 Python
Python中的其他内置函数有哪些
【10月更文挑战第12天】Python中的其他内置函数有哪些
13 1
|
1月前
|
数据处理 Python
深入探索:Python中的并发编程新纪元——协程与异步函数解析
深入探索:Python中的并发编程新纪元——协程与异步函数解析
25 3
|
1月前
|
机器学习/深度学习 算法 C语言
【Python】Math--数学函数(详细附解析~)
【Python】Math--数学函数(详细附解析~)