python的一些常用内置函数(内建函数)详解
Posted 非晚非晚
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python的一些常用内置函数(内建函数)详解相关的知识,希望对你有一定的参考价值。
文章目录
1. getattr、hasattr、setattr和delattr
(1) getattr
- 获取
对象的属性值
。(属性或方法)
getattr(object, name[, default])
说明:
- object:对象
- name:字符串,对象的属性或方法
- default:默认返回值,如果不提供该参数,在没有对应属性时,将触发 AttributeError。
class A:
method = "method be get!"
def get_method(self):
print("get_method be get!")
return 10
a = A()
a1 = getattr(a, "method")
print(a1)
a2 = getattr(a,"x method", "do not get method!")
print(a2)
a3 = getattr(a, "get_method")
print(a3)
输出:
method be get!
do not get method!
<bound method A.get_method of <__main__.A object at 0x7f3a458b52b0>>
获取对象方法的属性值,并运行该方法
。
class A:
method = "method be get!"
def get_method(self):
print("get_method be get!")
return 10
a = A()
a1 = getattr(a, "get_method")()# a1 = 10
print(a1)
输出:
get_method be get!
10
(2) hasattr
判断属性是否存在。(属性或方法)
hasattr(object, attribute)
- object:对象
- attribute:待判断的属性
class Person:
name = "Bill"
age = 63
country = "USA"
print(hasattr(Person, 'age'))
print(hasattr(Person, 'sex'))
输出:
True
False
(3) setattr
设定对象的属性值(属性或方法)。如果属性存在,则更新它的值,如果不存在,则创建它。
setattr(object, attribute, value)
- object:对象
- attribute:属性
- value:属性设定的值
class Person:
name = "John"
age = 36
country = "china"
setattr(Person, 'age', 40)
print(Person.age)
setattr(Person, 'sex', 'man')
print(Person.sex)
输出:
40
man
(4) delattr
从指定的对象中删除指定的属性(属性或方法)
delattr(object, attribute)
- object:对象
- 待要删除的属性
class Person:
name = "Bill"
age = 63
country = "USA"
delattr(Person, 'age')
2. isinstance
isinstance() 函数来判断一个对象 是否是一个已知的类型
,类似 type()。
isinstance() 与 type() 区别:如果要判断两个类型是否相同推荐使用 isinstance()。
- type() 不会认为子类是一种父类类型,不考虑继承关系。
- isinstance() 会认为子类是一种父类类型,
考虑继承关系
。
a = 2
print(isinstance (a,int))
print(isinstance (a,str))
print(isinstance (a,(str,int,list)) )
输出:
True
False
True
- type() 与 isinstance()区别:
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
3. eval
eval() 函数 计算指定的表达式
,如果该表达式是合法的 Python 语句,它会被执行。
str1 = '3 + 5'
print(eval(str1))
输出:
8
4. enumerate
获取集合(例如元组等)并将其作为 枚举对象
返回。
enumerate(iterable, start)
- iterable 可迭代对象
- start 数字。定义枚举对象的
起始编号
。默认值为 0,也就是说从0开始,如果从0开始,可以省略
。
- 示例1:
x = ('apple', 'banana', 'cherry')
y = enumerate(x)
for i in y:
print(i)
输出:
(0, 'apple')
(1, 'banana')
(2, 'cherry')
- 示例2:
x = ('apple', 'banana', 'cherry')
y = enumerate(x)
for (i,j) in y:
print(i,' and ',j)
输出:
0 and apple
1 and banana
2 and cherry
- 示例3:
x = ('apple', 'banana', 'cherry')
for (i,j) in enumerate(x,0): #如果是0,可写可不写
print(i,' and ',j)
输出:
0 and apple
1 and banana
2 and cherry
- 示例4:
x = ('apple', 'banana', 'cherry')
for (i,j) in enumerate(x,2): #索引i,从2开始
print(i,' and ',j)
输出:
2 and apple
3 and banana
4 and cherry
5. zip
zip() 函数用于将可迭代的对象
作为参数,将对象中对应的元素 打包成一个个元组
,然后返回由这些元组组成的对象
,我们可以使用 list() 转换来输出列表。
如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。
zip([iterable, ...])
iterabl : 一个或多个迭代器
基础代码举例1:
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 返回一个对象
print(zipped) # <zip object at 0x7f382c519bc8>
print(list(zipped)) # [(1, 4), (2, 5), (3, 6)]
print(list(zip(a,c))) # [(1, 4), (2, 5), (3, 6)]个数为最短列表
a1, a2 = zip(*zip(a,b)) # 与 zip 相反,zip(*) 可理解为解压,返回二维矩阵式
print(a1) # (1, 2, 3)
print(a2) # (4, 5, 6)
基础代码举例2:(排序的用法)
names = ['John', 'Amy', 'Jack']
scores = [98, 100, 85] # 分数和名字是一一对应的
#按照names排序
data = list(zip(names, scores))
data.sort()
print(data) # [('Amy', 100), ('Jack', 85), ('John', 98)],names和scores列表不会发生改变
#按照分数进行排序
data = list(zip(scores, names))
data.sort()
print(data) # [(85, 'Jack'), (98, 'John'), (100, 'Amy')],names和scores列表不会发生改变
6. vars
vars([object])
vars() 函数返回对象object的属性和属性值
的字典对象
。
class A:
nums = 3
def __init__(self, name):
self.name = name
a = A("qlee")
print(vars(A))
print(vars(a))
输出:
'__module__': '__main__', '__doc__': None, '__init__': <function __init__ at 0x7fb78c6875f0>, 'nums': 3
'name': 'qlee'
7. format和f
- format
format() 函数把指定值格式化为指定格式
。
举例:
print(":.2f".format(3.1415926)) #保留小数点后两位
print(":+.2f".format(-3.1415926)) #带符号保留小数点后两位
print(":,".format(123456789)) #以逗号分隔的数字格式
print(":.2%".format(0.25)) #百分比格式
print(":.2e".format(0.25)) #指数记法
print(":>10d".format(25)) #右对齐 (默认, 宽度为10)
print(":<10d".format(25)) #左对齐 (宽度为10)
print(":^10d".format(25)) #居中对齐 (宽度为10)
'''
进制表示:
':b'.format(11) #二进制
':d'.format(11) #十进制
':o'.format(11) # 八进制
':x'.format(11) # 十六进制,b
':#x'.format(11) #十六进制,0xb
':#X'.format(11) #十六进制,0XB
'''
输出:
3.14
-3.14
123,456,789
25.00%
2.50e-01
25
25
25
- f或者F
f-string,亦称为格式化字符串常量
(formatted string literals),是Python3.6新引入的一种字符串格式化方法。
f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’ 或 F’xxx’),以大括号 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式
。
具体格式请参考:f-string概览
print(f'3.1415926 : 0.3f') #小数点留3位 ==》 3.142
print(f'123.456 is 123.456:08.2f') #整体8位,小数保留2位,不够则补0==》123.456 is 00123.46
print(f'123.456 is 123.456:08.2e') #指数保留法==》123.456 is 1.23e+02
#小数点留3位,并用百分比表示 ==》 31.416%
print(f'0.31415926 : 0.3%')
print(f'1234: < 105678') #左对齐==》输出1234 5678。右对齐和居中对齐:>/^
print(f'123456 is 123456:,') #逗号隔开千分位=》123456 is 123,456
print(f'123456 is 123456:_') #下划线做千分位=》123456 is 123_456
print(f'''He\\'ll say "I'm Eric"''') #大括号外可以用\\转移,而大括号内不可以。
print(f'35:+') #保留正负号==》+35
print(f'35:-') #负数前加负号(-),正数前不加任何符号(默认)
8. slice
slice() 函数实现切片对象,主要用在切片操作函数里的参数传递
。用法如下:
class slice(stop)
class slice(start, stop[, step])
举例如下:
a = ("a", "b", "c", "d", "e", "f", "g", "h")
x = slice(2) #截取前2个元素
print(a[x])
x = slice(1,3) #截取第1和2个元素
print(a[x])
x = slice(0, 5, 2) #间隔一个元素取值
print(a[x])
输出:
('a', 'b')
('b', 'c')
('a', 'c', 'e')
以上是关于python的一些常用内置函数(内建函数)详解的主要内容,如果未能解决你的问题,请参考以下文章