Python3内置函数学习(二)

Python3内置函数(二)


daily learn

delattr()

删除属性

class Coordinate:
    x = 10
    y = -5
    z = 0
 
point1 = Coordinate() 
 
print('x = ',point1.x)
print('y = ',point1.y)
print('z = ',point1.z)
 
delattr(Coordinate, 'z')
 
print('--删除 z 属性后--')
print('x = ',point1.x)
print('y = ',point1.y)
 
# 触发错误
print('z = ',point1.z)

// 结果
x =  10
y =  -5
z =  0
--删除 z 属性后--
x =  10
y =  -5
Traceback (most recent call last):
print('z = ', point1.z)
AttributeError: 'Coordinate' object has no attribute 'z'

dict()

创建字典
class dict(**kwarg) – 关键字
class dict(mapping, **kwarg) – 元素的容器
class dict(iterable, **kwarg) – 可迭代对象

>>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))
{'two': 2, 'one': 1, 'three': 3}
>>> dict()
{}

dir()

不带参数时,返回当前范围内的变量、方法和定义的类型列表
带参数时,返回参数的属性、方法列表

>>> dir()
['__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'add']
>>> dir(())
['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
>>> dir([])
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

divmod()

把除数和余数运算结果结合起来,返回一个包含商和余数的元组
高版本python应该不能计算复数 3.8就不行

>>> divmod(9,3)
(3, 0)
>>> divmod(8,3)
(2, 2)

enumerate()

返回一个枚举对象
enumerate(sequence, [start=0])

>>> list(enumerate(['des','qwe','asd']))
[(0, 'des'), (1, 'qwe'), (2, 'asd')]

eval()

执行一个字符串表达式,并返回表达式的值
eval(expression[, globals[, locals]])
expression – 表达式。
globals – 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals – 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

>>> x =1
>>> eval('x-1')
0

a = "['qwe', 'asd']"
print(eval(a))
['qwe', 'asd']

exec()

支持动态执行 Python 代码
exec(object[, globals[, locals]])
无论哪种情况,如果省略了可选项,代码将在当前作用域内执行
如果只提供了 globals,则它必须是一个字典(不能是字典的子类),该字典将同时被用于全局和局部变量。
如果同时提供了 globals 和 locals,它们会分别被用于全局和局部变量。
如果提供了 locals,则它可以是任何映射对象。
请记住在模块层级上,globals 和 locals 是同一个字典。 如果 exec 得到两个单独对象作为 globals 和 locals,则代码将如同嵌入类定义的情况一样执行。

>>> exec('print("a")')
a

filter()

用于过滤序列
返回一个迭代器对象
filter(function, iterable)
function – 判断函数。
iterable – 可迭代对象。

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

float()

返回从数字或字符串 x 生成的浮点数
整数或字符串

>>> float(3)
3.0

format()

字符串格式化
可以接受不限个参数,位置可以不按顺序

>>> "{} {}".format("wqe", "ads")
'wqe ads'

frozenset()

返回一个冻结的集合
可以是列表、字典、元组等等的可迭代对象

>>> frozenset('10000')
frozenset({'0', '1'})

getattr()

用于返回一个对象属性值
getattr(object, name[, default])

>>>class A(object):
...     bar = 2 
>>> a = A()
>>> getattr(a, 'bar')        # 获取属性 bar 值
2

globals()

以字典类型返回当前位置的全部全局变量
这总是当前模块的字典(在函数或方法中,不是调用它的模块,而是定义它的模块)。

>>> globals()
{'__package__': None, 'x': 1, 'add': <function add at 0x7f2541c469d8>, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__doc__': None, '__builtins__': <module 'builtins' (built-in)>, '__spec__': None, 'a': "['qwe','asd']", '__name__': '__main__'}

hasattr()

用于判断对象是否包含对应的属性
实参是一个对象和一个字符串。
如果字符串是对象的属性之一的名称,则返回 True,否则返回 False。
如果对象实现了自己的 hash() 方法,请注意,hash() 根据机器的字长来截断返回值

class Qwe:
    x = 10
    y = -5
    z = 0
point1 = Qwe() 
print(hasattr(point1, 'x'))
True
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值