查看对象类型的python内置函数_Python 全栈:16 个类型函数和 10 个类对象相关的内置函数大盘点...

今天,学习 Python 与类型创建、管理自定义类相关的内置函数。

在讲解下面 26 个内置函数前,介绍一个非常重要的知识点:函数作用域问题。

在学习 Python 函数时,我们经常会遇到变量作用域的问题,有全局变量,局部变量等,Python 查找变量的顺序遵守 LEGB 规则,即遇到某个变量时:

优先从它所属的函数(local)内查找;

若找不到,并且它位于一个内嵌函数中,就再到它的父函数(enclosing)中查找;

如果还是找不到,再去全局作用域(global)查找;

再找不到,最后去内置作用域(build-in)查找。

若还是找不到,报错。

如下例子,变量 c 在局部作用域(local)被发现;变量 b 在 parent 函数和 son 函数间(enclosing)被发现;变量 a 在全局作用域(global)被发现;min 函数属于 Python 中内置函数,所以在搜寻完 LEG 三个区域后,最终在 build-in 域被找到。

a = 10

def parent():

b = 20

def son():

c = 30 # c: local

print(b + c) # b: enclosing

print(a + b + c ) # a: global

print(min(a,b,c)) # min : built-in

son()

In [72]: parent()

50

60

10

如下变量 d,在 LEGB 四个域都被搜寻一遍后,还是未找到,就会抛出 d 没有被发现的异常。

a = 10

def parent():

b = 20

def son():

c = 30 # c: local

print(b + c) # b: enclosing

print(a + b + c ) # a: global

print(min(a,b,c)) # min : built-in

print(d) # 在 LEGB 四个域都未找到后,报错!

son()

parent()

# NameError: name 'd' is not defined

类型函数

bool([x])

测试一个对象是 True,还是 False。

In [38]: bool([0,0,0])

Out[38]: True

In [39]: bool([])

Out[39]: False

In [40]: bool([1,0,1])

Out[40]: True

bytes([source[, encoding[, errors]]])

将一个字符串转换成字节类型:

In [44]: s = "apple"

In [45]: bytes(s,encoding='utf-8')

Out[45]: b'apple'

str(object='')

将字符类型、数值类型等转换为字符串类型:

In [1]: i = 100

In [2]: str(i)

Out[2]: '100'

chr(i)

查看十进制整数对应的 ASCII 字符:

In [54]: chr(65)

Out[54]: 'A'

ord(c)

查看某个 ASCII 字符对应的十进制数:

In [60]: ord('A')

Out[60]: 65

dict()

class dict(**kwarg)

class dict(mapping, **kwarg)

class dict(iterable, **kwarg)

创建数据字典:

In [92]: dict()

Out[92]: {}

In [93]: dict(a='a',b='b')

Out[93]: {'a': 'a', 'b': 'b'}

In [94]: dict(zip(['a','b'],[1,2]))

Out[94]: {'a': 1, 'b': 2}

In [95]: dict([('a',1),('b',2)])

Out[95]: {'a': 1, 'b': 2}

object()

返回一个根对象,它是所有类的基类。

In [137]: o = object()

In [138]: type(o)

Out[138]: object

使用魔法函数 dir,查看 object 对象上的所有方法:

In [2]: o.__dir__()

Out[2]:

['__repr__',

'__hash__',

'__str__',

'__getattribute__',

'__setattr__',

'__delattr__',

'__lt__',

'__le__',

'__eq__',

'__ne__',

'__gt__',

'__ge__',

'__init__',

'__new__',

'__reduce_ex__',

'__reduce__',

'__subclasshook__',

'__init_subclass__',

'__format__',

'__sizeof__',

'__dir__',

'__class__',

'__doc__']

int(x)

int(x, base =10),x 可能为字符串或数值,将 x 转换为一个整数。

In [16]: int('12')

Out[16]: 12

In [120]: int('12',16)

Out[120]: 18

若 x 不能转化为整数,则抛出 ValueError 异常:

In [3]: int('ws')

ValueError: invalid literal for int() with base 10: 'ws'

float(x)

将一个字符串或整数转换为浮点数:

In [103]: float('30')

Out[103]: 30.0

frozenset([iterable])

创建一个不可修改的冻结集合,一旦创建不允许增删元素。

In [30]: s = frozenset([1,1,3,2,3])

In [31]: s

Out[31]: frozenset({1, 2, 3})

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值