对象的属性值
。(属性或方法)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
判断属性是否存在。(属性或方法)
hasattr(object, attribute)
- object:对象
- attribute:待判断的属性
class Person:
name = "Bill"
age = 63
country = "USA"
print(hasattr(Person, 'age'))
print(hasattr(Person, 'sex'))
输出:
True
False
设定对象的属性值(属性或方法)。如果属性存在,则更新它的值,如果不存在,则创建它。
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
从指定的对象中删除指定的属性(属性或方法)
delattr(object, attribute)
- object:对象
- 待要删除的属性
class Person:
name = "Bill"
age = 63
country = "USA"
delattr(Person, 'age')
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) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
eval() 函数 计算指定的表达式
,如果该表达式是合法的 Python 语句,它会被执行。
str1 = '3 + 5'
print(eval(str1))
输出:
8
获取集合(例如元组等)并将其作为 枚举对象
返回。
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): #如果是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): #索引i,从2开始
print(i,' and ',j)
输出:
2 and apple
3 and banana
4 and cherry
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)) # [(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列表不会发生改变
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'}
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-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: < 10}5678') #左对齐==》输出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:-}') #负数前加负号(-),正数前不加任何符号(默认)
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')