欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

内置函数

程序员文章站 2022-06-05 14:28:00
1、作用域相关 locals() 功能:返回当作用域中的名字 globals() 功能:返回全局作用域中的名字 2、迭代器/生成器相关 range() 功能:生成数据 iter() 功能:获取迭代器,内部实际使用的是__iter__()方法来获取迭代器 next() 功能:迭代器向下执行一次,内部实 ......

 1、作用域相关

  • locals()

功能:返回当作用域中的名字

  • globals()

功能:返回全局作用域中的名字

2、迭代器/生成器相关

  • range()

功能:生成数据

lst = [i for i in range(10)]
print(lst)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

  • iter()

功能:获取迭代器,内部实际使用的是__iter__()方法来获取迭代器

  • next()

功能:迭代器向下执行一次,内部实际使用了__next__()方法返回迭代器的下一个项目

lst = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

ret = iter(lst)  # 获取迭代器

print(next(ret)) # 0   执行迭代器

3、字符串类型代码的执行

  • eval()

功能:执行字符串类型的代码。并返回最终结果

print(eval("[11, 22, 33, 44]"))  # [11, 22, 33, 44]

print(eval("2+2"))  # 4

def func():
    print(666)
eval("func()")  # 666
  • exec()

功能:执行字符串类型的代码

exec("""
for i in range(10):
    print(i)
""")  # 0 1 2 3 4 5 6 7 8 9

exec("""
def func():
    print("我是赛利亚")

func()
""")  # 我是赛利亚
  • compile()

功能:将字符串类型的代码编译,有返回值的字符串形式代码用eval()求值,没有返回值的字符串形式代码用exec()执行

参数说明:

1)resource:要执行的代码,动态代码片段

2)文件名:代码存放的文件名,当传入第一个参数的时候,这个参数给空就可以了

3)模式,取值有3个:

a) exec:一般放一些流程语句的时候

b) eval:resource只存放一个求值表达式

c) single:resource存放的代码有交互的时候,mode应为single,但只允话代码只有一行,否则报错

code = """
for i in range(5):
    print(i)
"""
c1 = compile(code, "", mode="exec")
exec(c1)  # 0 1 2 3 4



code2 = """
name = input("请输入你的名字:")
"""
c2 = compile(code2, "", mode="single")
exec(c2)
print(name) # tom

 4、输入输出相关

  • input()

功能:获取用户输入的内容

  • print()

功能:打印输出

5、内存相关

  • hash()

功能:获取对象的哈希值(int,bool,str,tuple)

注意:

1) 数字的哈希值就是它本身

2) 每次调用hash()得到的哈希值不一样(除数字外),所以哈希值不能做密码

num = 10
s = "hello"

print(hash(num))  # 10

# 第一次调用
print(hash(s))  # 3718209680369926059

# 再次调用
print(hash(s))  # 263127024043316082
  • id()

功能:获取对象的内存地址

6、与文件相关

  • open()

功能:用于打开一个文件,创建一个文件句柄

7、模块相关

  • __import__()

功能:用于动态加载类和函数

8、帮助

  • help()

功能:函数用于查看函数或模块用途的详细说明

9、调用相关

  • callable()

功能:用于检查一个对象是否是可调用的。如果返回true, object有可能调用失败,但如果返回false,那么调用绝对不会成功

n = 10

def func():
    pass

print(callable(n)) # false

print(callable(func)) # true

10、查看内置属性

  • dir()

功能:查看对象的内置属性,方法。访问的是对象的__dir__()方法

11、基础数据类型相关

1)和数字相关

a) 数据类型

  • bool()

功能:将给定的数据转换成bool值。如果不给值,返回false

  • int()

功能:将给定的数据转换成int值。如果不给值,返回0

  • float()

功能:将给定的数据转换成float值,也就是小数

  • complex()

功能:创建一个复数,第一个参数为实部,第二个参数为虚部,或者第一个参数直接用字符串来描述复数

b) 进制转换

  • bin()

功能:将给的参数转换成二进制

  • otc()

功能:将给的参数转换成八进制

  • hex()

功能:将给的参数转换成十六进制

c) 数学运算

  • abs()

功能:返回绝对值

  • divmod()

功能:返回商和余数

  • round()

功能:四舍五入

对于x.5,如果整数个位数为偶数靠近偶数进行舍弃,如果整数个位数为奇数靠近偶数进行舍弃

print(round(4.5)) # 4
print(round(5.5)) # 6
print(round(5.4)) # 5
  • pow(a, b)

功能:求a的b次幂,如果有三个参数,则求完次幂后对第三个数取余

print(pow(2, 3)) # 8

print(pow(2, 3, 5)) # 3
  • sum(可迭代对象)

功能:求和

  • min()

功能:求最小值

  • max()

功能:求最大值 

2)和数据结构相关

a) 列表和元组

  • list()

功能:将一个可迭代对象转换成列表

  • tuple()

功能:将一个可迭代对象转换成元组

  • reversed()

功能:将一个序列翻转,返回翻转序列的迭代器

lst = [1, 2, 3, 4, 5, 6]
ret = reversed(lst)
print(ret)  # <list_reverseiterator object at 0x000001b589038208>

for i in ret:
    print(i)  # 6 5 4 3 2 1
  • slice

功能:列表的切片

lst = [1, 2, 3, 4, 5, 6]

s = slice(1, 5, 2)
print(lst[s])  # [2, 4]

b) 字符串相关

  • str()

功能:将数据转化成字符串

  • format()

功能:与具体数据相关,用于计算各种小数,精算等

# 字符串
print(format('test', '<20'))    # 左对齐 
print(format('test', '>20'))    # 右对齐 
print(format('test', '^20'))    # 居中 

# 数值 
print(format(3, 'b'))           # ⼆进制 
print(format(97, 'c'))          # 转换成unicode字符
print(format(11, 'd'))          # ⼗进制 
print(format(11, 'o'))          # ⼋进制 
print(format(11, 'x'))          # ⼗六进制(⼩写字母) 
print(format(11, 'x'))          # ⼗六进制(⼤写字母) 
print(format(11, 'n'))          # 和d一样 
print(format(11))               # 和d一样 

# 浮点数 
print(format(123456789, 'e'))           # 科学计数法. 默认保留6位小数 
print(format(123456789, '0.2e'))        # 科学计数法. 保留2位小数(小写) 
print(format(123456789, '0.2e'))        # 科学计数法. 保留2位小数(大写) 
print(format(1.23456789, 'f'))          # 小数点计数法. 保留6位小数 
print(format(1.23456789, '0.2f'))       # 小数点计数法. 保留2位小数 
print(format(1.23456789, '0.10f'))      # 小数点计数法. 保留10位小数 
print(format(1.23456789e+10000, 'f'))   # 小数点计数法.
  • bytes()

功能:把字符串转化成bytes类型

s = "你好"

bs = bytes(s, encoding="utf-8")
print(bs)  # b'\xe4\xbd\xa0\xe5\xa5\xbd'
  • bytearray()

功能:返回一个新字节数组,这个数组里的元素是可变的,并且每个元素的值的范围是[0, 256]

ret = bytearray('alex', encoding='utf-8')
print(ret)  # bytearray(b'alex')

ret[0] = 65
print(ret) # bytearray(b'alex')
  • memoryview()

功能:查看bytes在内存中的情况

s = "你好"
ret = memoryview(s.encode("utf-8"))
print(ret)  # <memory at 0x0000022fc0071048>
  • ord()

功能:输入字符找带字符编码的位置

  • chr()

功能:输入位置数字找出对应的字符

  • ascii()

功能:在ascii码中就返回这个值,如里不在就返回\u...

s = "你好"
print(ascii(s))  # '\u4f60\u597d'
  • repr()

功能:返回一个对象的官方表示形式

s = "你好\我叫赛利亚"
print(repr(s)) # '你好\\我叫赛利亚'
print(s) #你好\我叫赛利亚

c) 数据集合

  • dict()

功能:创建一个字典

  • set()

功能:创建一个集合

  • frozenset()

功能:创建一个冻结的集合,冻结的集合不能进行添加和删除操作

d) 其他相关

  • len()

功能:返回一个对象中的元素的个数

  • sorted()

功能:对可迭代对象进行排序操作

  • enumerate(可迭代对象,start=0)

功能:获取集合的枚举对象

lst = [11, 22, 33]
for index, el in enumerate(lst):
    print(index, el)

结果:
0 11
1 22
2 33
  • all()

功能:可迭代对象中全部是true,结果才是true

print(all([1, 2, 0, true])) # false
  • any()

功能:可迭代对象中有一个是true, 结果就是true

print(any([1, 2, 0, true])) # true
  • zip()

功能:函数用于将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的一个可迭代对象zip object。如果各个迭代器的元素不一致,则返回对象长度与最短的对象相同

lst1 = [1, 2, 3]
lst2 = ["a", "b", "c", "d"]
lst3 = (11, 22, 33, 44, 55)

print(zip(lst1, lst2, lst3))       #  <zip object at 0x000001e7d275bf48>
print(list(zip(lst1, lst2, lst3))) #[(1, 'a', 11), (2, 'b', 22), (3, 'c', 33)]

for i in zip(lst1, lst2, lst3):
    print(i)                       # (1, 'a', 11)  (2, 'b', 22) (3, 'c', 33)

内置函数结构图如下: