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")()
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)
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
class A:
pass
class B(A):
pass
isinstance(A(), A)
type(A()) == A
isinstance(B(), A)
type(B()) == A
3. eval
eval() 函数 计算指定的表达式 ,如果该表达式是合法的 Python 语句,它会被执行。
str1 = '3 + 5'
print(eval(str1))
输出:
8
4. enumerate
获取集合(例如元组等)并将其作为 枚举对象 返回。
enumerate(iterable, start)
- iterable 可迭代对象
- start 数字。定义枚举对象的
起始编号 。默认值为 0,也就是说从0开始,如果从0开始,可以省略 。
x = ('apple', 'banana', 'cherry')
y = enumerate(x)
for i in y:
print(i)
输出:
(0, 'apple')
(1, 'banana')
(2, 'cherry')
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
x = ('apple', 'banana', 'cherry')
for (i,j) in enumerate(x,0):
print(i,' and ',j)
输出:
0 and apple
1 and banana
2 and cherry
x = ('apple', 'banana', 'cherry')
for (i,j) in enumerate(x,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)
print(list(zipped))
print(list(zip(a,c)))
a1, a2 = zip(*zip(a,b))
print(a1)
print(a2)
基础代码举例2:(排序的用法)
names = ['John', 'Amy', 'Jack']
scores = [98, 100, 85]
data = list(zip(names, scores))
data.sort()
print(data)
data = list(zip(scores, names))
data.sort()
print(data)
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() 函数把指定值格式化为指定格式 。
举例:
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))
print("{:<10d}".format(25))
print("{:^10d}".format(25))
'''
进制表示:
'{: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-string,亦称为格式化字符串常量 (formatted string literals),是Python3.6新引入的一种字符串格式化方法。
f-string在形式上是以 f 或 F 修饰符引领的字符串(f’xxx’ 或 F’xxx’),以大括号 {} 标明被替换的字段;f-string在本质上并不是字符串常量,而是一个在运行时运算求值的表达式 。
具体格式请参考:f-string概览
print(f'{3.1415926 : 0.3f}')
print(f'123.456 is {123.456:08.2f}')
print(f'123.456 is {123.456:08.2e}')
print(f'{0.31415926 : 0.3%}')
print(f'{1234: < 10}5678')
print(f'123456 is {123456:,}')
print(f'123456 is {123456:_}')
print(f'''He\'ll say {"I'm Eric"}''')
print(f'{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)
print(a[x])
x = slice(1,3)
print(a[x])
x = slice(0, 5, 2)
print(a[x])
输出:
('a', 'b')
('b', 'c')
('a', 'c', 'e')
|