Python3内置函数(三)


文章目录

  • Python3内置函数(三)
  • hansh()
  • help()
  • hex()
  • id()
  • input()
  • int()
  • isinstance()
  • issubclass()
  • iter()
  • len()
  • list()
  • locals()
  • map()
  • max()



daily learn

hansh()

用于获取取一个对象(字符串或者数值等)的哈希值

哈希值是整数。它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值(即使它们类型不同,如 1 和 1.0)。

语法 hash(object)

>>> hash('test') 
-1627587090
>>> hash(18) 
18  
>>> hash([1,2])  不能直接用于列表字典元组
Traceback (most recent call last):   
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>> hash(str([1,2,3])) 
1369706438

help()

启动内置的帮助系统(此函数主要在交互式中使用

语法 help([object])

>>> help('sys')
结果很长就不贴了 可以自己试一下

hex()

将整数转换为以“0x”为前缀的小写十六进制字符串

>>> hex(100) 
'0x64'

id()

返回对象的唯一标识符

标识符是一个整数

CPython 中 id() 函数用于获取对象的内存地址。

>>> a = '14松'   
>>> id(a) 
25060848

input()

语法 input([prompt])

如果存在 prompt实参,则将其写入标准输出,末尾不带换行符

返回为 string 类型

>>> a = input('input=:')
input=:1234
>>> type(a) 
<class 'str'>

int()

返回一个基于数字或字符串 x 构造的整数对象,或者在未给出参数时返回 0

语法 int([x]) x – 字符串或数字

语法 int(x, base=10) base --进制数,默认十进制 这个是转换到10进制用的

>>> int(1)
1
>>> int()  
0
>>> int(3.1)
3
>>> int('0xa',16) 
10

isinstance()

判断一个对象是否是一个已知的类型

语法 isinstance(object, classinfo)

如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True。 如果 object 不是给定类型的对象,函数将总是返回 False。 如果 classinfo 是类型对象元组(或由其他此类元组递归组成的元组),那么如果 object 是其中任何一个类型的实例就返回 True。 如果 classinfo 既不是类型,也不是类型元组或类型元组的元组,则将引发 TypeError 异常。

isinstance() 会认为子类是一种父类类型,考虑继承关系。而 type() 不会

>>> a =1 
>>> isinstance(a,int)  
True

issubclass()

语法 issubclass(class, classinfo)

判断参数 class 是否是类型参数 classinfo 的子类

如果 class 是 classinfo 的 (直接、间接或 虚拟) 子类则返回 True

classinfo 也以是类对象的元组,在此情况下 classinfo 中的每个条目都将被检查。 在任何其他情况下,都将引发 TypeError 异常

>>> class A:
...     pass
... 
>>> class B(A): 
...     pass
... 
>>> issubclass(B,A) 
True

iter()

用来生成迭代器

语法 iter(object[, sentinel])

根据是否存在第二个实参,第一个实参的解释是非常不同的

如果没有第二个实参,object 必须是支持迭代协议(有 iter() 方法)的集合对象,或必须支持序列协议(有 getitem() 方法,且数字参数从 0 开始)。如果它不支持这些协议,会触发 TypeError。

如果有第二个实参 sentinel,那么 object 必须是可调用的对象。这种情况下生成的迭代器,每次迭代调用它的 next() 方法时都会不带实参地调用 object;如果返回的结果是 sentinel 则触发 StopIteration,否则返回调用结果

>>> l = [12,3,4] 
>>> for i in iter(l):
...     print(i)
... 
12
3
4

len()

返回对象(字符、列表、元组等)长度或项目个数

实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)

>>> len('iphone') 
6

list()

将元组或字符串转换为列表

语法 list([iterable])

>>> list('12')       //字符串
['1', '2']
>>> list(('12','31')) //元组
['12', '31']

locals()

更新并返回表示当前本地符号表的字典(以字典类型返回当前位置的全部局部变量)

在函数代码块但不是类代码块中调用 locals() 时将返回自由变量

>>> def test(arg): //局部变量 arg z
...     z=1
...     print(locals())
...  
>>> test(100) 
{'arg': 100, 'z': 1}

map()

根据提供的函数对指定序列做映射

语法 map(function, iterable, …)

返回一个将 function 应用于 iterable 中每一项并输出其结果的迭代器

当有多个可迭代对象时,最短的可迭代对象耗尽则整个迭代就将结束

>>>def square(x) :            # 计算平方数
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]

>>> a= [1,2,3]
>>> b= [1]     
>>> res = map(lambda x,y:x**2+y,a,b) 
>>> print(list(res)) 
[2]

max()

返回给定参数的最大值

语法

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])

>>> max(12,2312,11) 
2312