Loading

常用的内置函数

【一】什么是内置函数?

  • 内置函数就是Python给你提供的, 拿来直接用的函数,比如print,input等。
  • 截止到python版本3.6.2 ,一共提供了68个内置函数,具体如下

img

Built-in Functions
Aabs()aiter()all()any()anext()ascii()
Bbin()bool()breakpoint()bytearray()bytes()
Ccallable()chr()classmethod()compile()complex()
Ddelattr()dict()dir()divmod()
Eenumerate()eval()exec()
Ffilter()float()format()frozenset()
Ggetattr()globals()
Hhasattr()hash()help()hex()
Iid()input()int()isinstance()issubclass()iter()
Llen()list()locals()
Mmap()max()memoryview()min()
Nnext()
Oobject()oct()open()ord()
Ppow()print()property()
Rrange()repr()reversed()round()
Sset()setattr()slice()sorted()staticmethod()str()sum()super()
Ttuple()type()
Vvars()
Zzip()
___import__()
  • 和数字相关
    • 数据类型
    • 进制转换
    • 数学运算
  • 和数据结构相关
    • 序列
    • 数据集合
    • 相关内置函数
  • 和作用域相关
  • 和迭代器生成器相关
  • 字符串类型代码的执行
  • 输入输出
  • 内存相关
  • 文件操作相关
  • 模块相关
  • 帮 助
  • 调用相关
  • 查看内置属性

【二】数据类型转换(8)

【1】数字类型转换

(1)整数类型转换(int)

  • int:整型
#  int(x): x转换为整数
res = '18'  # 字符串类型
print(res, type(res))  # 18 <class 'str'>

res_int = int(res)  # 将可以转换为整数的类型转换为整数
print(res, type(res_int))  # 18 <class 'int'>

(2)浮点数类型转换(float)

  • float:浮点型
# float(x) x转换为浮点型
res = 18
print(res, type(res))  # 18 <class 'int'>
res_float = float(res)  # 转换为浮点型
print(res_float, type(res_float))  # 18.0 <class 'float'>

【2】字符串类型转换(str)

  • str()将数据转化为字符串
print(str(123)+'456')  #123456

【3】布尔类型转换(bool)

  • bool:布尔类型(True/False)
res = 1
print(res, type(res))  # 1 <class 'int'>

res_bool = bool(res)
print(res_bool, type(res_bool))  # True <class 'bool'>

【4】列表类型转换(list)

  • list() 将一个可迭代对象转换成列表
a = range(10)
print(list(a))  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

【5】元祖类型转换(tuple)

  • tuple() 将一个可迭代对象转换成元组
a = range(10)
print(tuple(a))  # (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)

【6】字典类型转换(dict)

  • 字典:dict 创建一个字典
  • 注释: dict() 函数可接受可迭代对象,用键值对初始化字典。
# 示例
dictionary = dict([('key1', 'value1'), ('key2', 'value2')])
print(dictionary)
# 输出:{'key1': 'value1', 'key2': 'value2'}

【7】集合类型转换(set)

  • 集合:set 创建一个集合
  • 注释: set() 函数用于创建一个集合,自动去除重复元素。
# 示例
my_set = set([1, 2, 3, 3, 4, 5])
print(my_set)
# 输出:{1, 2, 3, 4, 5}

【三】数学进制转换(3)

【1】十进制转二进制(bin)

  • bin() 将给的参数转换成二进制

    number = 10
    
    # 十进制转二进制
    number_bin = bin(number)
    print(number_bin)  # 0b1010
    

【2】十进制转八进制(oct)

  • oct() 将给的参数转换成八进制

    number = 10
    
    # 十进制转八进制
    number_oct = oct(number)
    print(number_oct)  # 0o12
    

【3】十进制转十六进制(hex)

  • hex() 将给的参数转换成十六进制

    number = 10
    
    # 十进制转十六进制
    number_hex = hex(number)
    print(number_hex)  # 0xa
    

【四】数学运算(8)

(1)获取绝对值(abs)

  • abs()返回绝对值
print(abs(-2)) # 2

(2)获取商和余数

  • divmod()返回商和余数
start_num = 20
end_num = 4
# 获取商和余数 (被除数,除数)
result = divmod(start_num, end_num)
print(result)  # (5, 0)

(3)四舍五入(round)

  • round() 四舍五入

    给定数字的四舍五入版本,有指定的小数位数。

    默认情况下,小数点的数量是0。

    因此,如果你调用 round() 时没有第二个参数,该函数将返回最近的整数。

  • 四舍五入到最近的整数

num = 3.6
print(round(num))  # 输出: 4
  • 四舍五入到一位小数
num = 3.56
print(round(num, 1))  # 输出: 3.6
  • 四舍五入到两位小数
num = 3.564
print(round(num, 2))  # 输出: 3.56
  • 注意特殊情况 - 银行家舍入
    • 当数字恰好在两个可能的舍入值的中间时,round() 会舍入到最近的偶数(这是所谓的“银行家舍入”)
print(round(2.5))  # 输出: 2
print(round(3.5))  # 输出: 4

(4)a的b次幂(pow)

  • pow(a, b) 函数用于计算 ab 次幂。当提供第三个参数时,它将计算 ab 次幂后再对第三个参数取余。以下是一些使用 pow() 函数的例子:
  • 计算 *a* 的 *b* 次幂
# 计算 2 的 3 次幂
print(pow(2, 3))  # 输出: 8

  • 计算 *a* 的 *b* 次幂,然后对 *c* 取余
# 计算 2 的 3 次幂,然后对 5 取余
print(pow(2, 3, 5))  # 输出: 3

(5)求和(sum)

  • sum()
print(sum([1, 2, 3, 4, 5, 6, 7, 2, 3, 4]))  # 37
(6)最小值(min)
  • min() 求最小值

    print(min(5,3,9,12,7,2))  
    
    # 求最小值:2
    
(7)最大值(max)
  • max() 求最大值

    print(max(7,3,15,9,4,13))  
    
    # 求最大值:15
    
(8)复数转换(complex)
  • complex : 复数
# complex(re, im) : 具有实部 re、虚部 im 的复数。im 默认为零。

start = complex(3, 4)
print(start)  # (3+4j)

second = complex(5, 9)
print(second)  # (5+9j)

res = start + second
print(res) # (8+13j)

【五】数据结构相关

【1】序列相关(5)

(1)翻转(reversed)
  • reversed()将一个序列反转,返回反转序列的迭代器
lst = "我是黄俏祺"
it = reversed(lst)
print(list(it))  # ['祺', '俏', '黄', '是', '我']
(2)切片(slice)
  • slice()列表的切片
lst = "我是黄俏祺"
li_name = list(lst)  # ['我', '是', '黄', '俏', '祺']
s = slice(0, 4)
print(li_name[s])  # ['我', '是', '黄', '俏']
(3)计算长度(len)
  • len() 返回一个对象中的元素的个数
lst = "我是黄俏祺"
print(len(lst))  # 5
(4)排序(sorted)
  • 语法:sorted(Iterable, key=函数(排序规则), reverse=False)
    • Iterable: 可迭代对象
    • key: 排序规则(排序函数), 在sorted内部会将可迭代对象中的每一个元素传递给这个函数的参数. 根据函数运算的结果进行排序
    • reverse: 是否是倒叙. True: 倒叙, False: 正序
lst = [5, 7, 6, 12, 1, 13, 9, 18, 5]
l1 = sorted(lst)
print(l1) #[1, 5, 5, 6, 7, 9, 12, 13, 18]
lst = [5, 7, 6, 12, 1, 13, 9, 18, 5]
print(lst.sort())  # None
print(lst)  # [1, 5, 5, 6, 7, 9, 12, 13, 18] 

当您使用list.sort()方法时,它会对原列表进行排序并返回None。这意味着该方法会直接修改原列表,而不会返回一个新的已排序列表。因此,当您尝试打印lst.sort()的结果时,它实际上是打印了None,因为list.sort()返回的是None

(5)枚举(enumerate)
  • enumerate() 获取集合的枚举对象
lst = ['one', 'two', 'three', 'four', 'five']
dic1 = {}
for index,e in enumerate(lst,1):
    dic1[index] = e
print(dic1) # {1: 'one', 2: 'two', 3: 'three', 4: 'four', 5: 'five'}

【2】字符串(4)

(1)格式化输出(format)

format() 与具体数据相关, 用于计算各种小数, 精算等.

  • 居中对齐方式
# 将文本 "Hello" 居中对齐,总共占用 20 个字符的空间
text = "Hello"
formatted_text = format(text, "^20")
print(formatted_text)  # 输出: '       Hello 

# 将文本 "Hello" 居中对齐,总共占用 20 个字符的空间,并使用 * 填充空白
text = "Hello"
formatted_text = format(text, "*^20")
print(formatted_text)  # 输出: '*******Hello********'
  • 进制转换
print(format(3, 'b'))  # 二进制:11
print(format(97, 'c'))  # 转换成unicode字符:a
print(format(11, 'd'))  # ⼗进制:11
print(format(11, 'o'))  # 八进制:13
print(format(11, 'x'))  # 十六进制(⼩写字母):b
print(format(11, 'X'))  # 十六进制(大写字母):B
print(format(11, 'n'))  # 和d⼀样:11
print(format(11))  # 和d⼀样:11
  • 科学计数法
print(format(123456789, 'e'))  # 科学计数法. 默认保留6位小数:1.234568e+08
print(format(123456789, '0.2e'))  # 科学计数法. 保留2位小数(小写):1.23e+08
print(format(123456789, '0.2E'))  # 科学计数法. 保留2位小数(大写):1.23E+08
print(format(1.23456789, 'f'))  # 小数点计数法. 保留6位小数:1.234568
print(format(1.23456789, '0.2f'))  # 小数点计数法. 保留2位小数:1.23
print(format(1.23456789, '0.10f'))  # 小数点计数法. 保留10位小数:1.2345678900
print(format(1.23456789e+3, 'F'))  # 小数点计数法. 很大的时候输出INF:1234.567890
(2)字符串转bytes(bytes)
  • bytes() 把字符串转化成bytes类型

    bs = bytes("今天吃饭了吗", encoding="utf-8")
    
    print(bs) 
    # b'\xe4\xbb\x8a\xe5\xa4\xa9\xe5\x90\x83\xe9\xa5\xad\xe4\xba\x86\xe5\x90\x97'
    
(3)获取字节数组(bytearray)
  • bytearray()

    • 返回一个新字节数组. 这个数字的元素是可变的, 并且每个元素的值得范围是[0,256)

      ret = bytearray("dream", encoding='utf-8')
      
      print(ret[0])
      # 100
      
      print(ret)
      # bytearray(b'dream')
      
      ret[0] = 65
      # 把65的位置A赋值给ret[0]
      
      print(str(ret))
      # bytearray(b'Aream')
      
(4)返回对象的字符串格式(repr)
  • repr() 返回一个对象的string形式

    word = "今天\n吃了%s顿\t饭" % 3
    print(word)
    # 今天
    # 吃了3顿	饭
    
    # 原样输出,过滤掉转义字符 \n \t \r 不管百分号%
    print(repr(word))
    # '今天\n吃了3顿\t饭'
    

【3】字符编码(3)

(1)字符编码找数字(ord)
  • ord() 输入字符找带字符编码的位置

    print(ord('a'))  
    # 字母a在编码表中的码位:97
    
    print(ord('中'))  
    # '中'字在编码表中的位置:20013
    
(2)数字找字符编码(chr)
  • chr() 输入位置数字找出对应的字符

    print(chr(65))  
    # 已知码位,求字符是什么:A
    
    print(chr(19999))  
    # 丟
    
(3)数字找ASCII码(ascii)
  • ascii() 是ascii码中的返回该值 不是就返回u

    for i in range(65536):  #打印出0到65535的字符
        print(chr(i), end=" ")
    
    print(ascii("@"))  #'@'
    

【4】数据集合(1)

  • 创建一个冻结的集合(frozenset)
  • frozenset() 创建一个冻结的集合,冻结的集合不能进行添加和删除操作。
  • 注释: frozenset() 函数返回一个不可变的 frozenset 对象,适用于作为字典的键或集合的元素。
# 示例
frozen_set = frozenset([1, 2, 3, 4, 5])
print(frozen_set)
# 输出:frozenset({1, 2, 3, 4, 5})

【5】判断条件(2)

(1)所有为真(all)

  • all() 可迭代对象中全部是True, 结果才是True

    # 列表中的所有元素都是真值
    items = [1, 2, 3, 4]
    print(all(items))  # 输出: True
    
    # 列表中包含一个假值(0)
    items = [0, 1, 2, 3]
    print(all(items))  # 输出: False
    
    # 空列表
    items = []
    print(all(items))  # 输出: True
    
    # 包含非布尔但为真的值(如非空字符串)
    items = ['a', 'b', True]
    print(all(items))  # 输出: True
    

(2)任意为真(any)

  • any() 可迭代对象中有一个是True, 结果就是True

    # 列表中至少有一个真值
    items = [0, False, 5]
    print(any(items))  # 输出: True
    
    # 列表中没有真值元素
    items = [0, False, None, []]
    print(any(items))  # 输出: False
    
    # 空列表
    items = []
    print(any(items))  # 输出: False
    
    # 包含非布尔但为真的值(如非空字符串)
    items = ['', 0, 'Python']
    print(any(items))  # 输出: True
    

【6】高阶函数(3)

(1)打包(zip)

  • zip()函数
    • 用于可迭代的对象作为参数
    • 将对象中对应的元素打包成一个元组
    • 最后返回由这些元组组成的列表
    • 可以直接用dict()转成字典
  • 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同
numbers = [1, 2, 3]
letters = ['a', 'b', 'c']
symbols = ['!', '@', '#', '$']  # 注意这个比前两个长

# 使用zip打包
zipped = zip(numbers, letters, symbols)

# 转换为列表查看结果
zipped_list = list(zipped)
print(zipped_list)

# 使用zip创建字典
zipped_dict = dict(zip(letters, numbers))
print(zipped_dict)

(2)过滤(filter)

  • 语法:fiter(function. Iterable)
    • function: 用来筛选的函数.
      • 在filter中会自动的把iterable中的元素传递给function.
      • 然后根据function返回的True或者False来判断是否保留留此项数据
    • Iterable: 可迭代对象
  • filter() 过滤 (lamda)
l1 = list(range(100))


def func(l1):
    return l1 % 2 == 0


lst = filter(func, l1)
print(list(lst))

(3)映射(map)

  • 语法 : map(function, iterable)
    • 可以对可迭代对象中的每一个元素进行映射. 分别去执行 function
  • map() 会根据提供的函数对指定序列列做映射(lamda)
lst = [1, 2, 3, 4, 5, 6, 7, ]


def func(i):
    return i % 2 == 0


it = map(func, lst)
print(it)  # <map object at 0x0000016372ACD540>
print(list(it))  # [False, True, False, True, False, True, False]

【六】作用域(2)

  • locals() 返回当前作用域中的名字
  • globals() 返回全局作用域中的名字
global_var = "This is a global variable"

def my_function():
    # 局部变量
    local_var = "This is a local variable"
    
    # 打印局部作用域中的变量
    print("Local Scope:", locals())
    
    # 打印全局作用域中的变量
    print("Global Scope:", globals())

# 调用函数
my_function()

【七】迭代器生成器(3)

【1】循环生成数据(range)

  • range() 生成数据
print(range(1, 10))
# range(1, 10)

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

【2】获取迭代器(iter)

  • iter()
  • 获取迭代器, 内部实际使用的是__ iter__()方法来获取迭代器
lst = [1, 2, 3, 4, 5, 6, 7, ]
it = iter(lst) # 获得迭代器it
print(it) # <list_iterator object at 0x0000013FEB5193F0>

【3】向下执行next()

  • next()
  • 迭代器向下执行一次, 内部实际使用了__ next__()方法返回迭代器的下一个项目
lst = [1, 2, 3, 4, 5, 6, 7, ]
it = iter(lst) # 获得迭代器it
print(it) # <list_iterator object at 0x0000013FEB5193F0>
print(next(it))
print(next(it))
print(next(it))
print(next(it))

【八】字符串类型代码的执行(3)

【1】指定指令并返回结果(eval)

  • eval() 执行字符串类型的代码. 并返回最终结果
s1 = input('请输入想要计算的算式')  # 输入8*8
print(eval(s1))  # 64

【2】指定指令不返回结果(exec)

  • exec() 执行字符串类型的代码
s2 = 'for i in range(5):print(i)'
print(exec(s2))  # 0 1 2 3 4 5 None

def func():
    print('我是黄俏祺')
""")

func() # 我是黄俏祺

【3】编码指令

  • compile()将字符串类型的代码编码,代码对象能够通过exec()或者eval()进行求值
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1)
  • source 可以是字符串或者字节字符串,后者AST对象
  • filename 是代码读取的文件名,source是从哪个文件里读取的,就用哪个文件的名称,如果不是从文件读取的source,则填写一个可辨识值,一般用''
  • mode 编码模式,如果source是语句,则mode可以是exec,如果是单一表达式,则可以是eval,如果source是单个交互式语句,mode可以是single
  • flags 和 dont_inherit 用来控制编译源码时的标志,一般情况下使用默认值
code1 = 'print("my name is green")'
str1 = compile(code1, '', 'eval')
print(str1)  # <code object <module> at 0x0000019C1DBEAC10, file "", line 1>
exec(str1)  # my name is green

【九】输入输出(2)

  • print() : 打印输出

    print("hello", "world", sep="*", end="@") 
    # sep:打印出的内容用什么连接
    # end:以什么为结尾
    # hello*world@
    
  • input() : 获取用户输出的内容

【十】算法(1)

  • hash() :

    • 获取到对象的哈希值(int, str, bool, tuple).
    s = 'dream'
    print(hash(s))  
    # 1612413944648601058
    
    • 列表不允许hash
    lst = [1, 2, 3, 4, 5]
    print(hash(lst))
    # 报错,列表是不可哈希的
    r'''
    Traceback (most recent call last):
      File "E:\PythonProjects\09Python的内置函数\01start.py", line 361, in <module>
        print(hash(lst))  # 报错,列表是不可哈希的
    TypeError: unhashable type: 'list'
    '''
    
  • hash算法:

    • (1) 目的是唯一性
    • (2) dict 查找效率非常高
  • hash表:

    • 用空间换的时间 比较耗费内存

【十一】文件操作(1)

  • open() : 用于打开一个文件, 创建一个文件句柄

    f = open('file',mode='r',encoding='utf-8')
    f.read()
    f.close()
    

【十二】导入模块(1)

  • __ import__() : 用于动态加载类和函数

    # 让用户输入一个要导入的模块
    name = input("请输入你要导入的模块:")
    json = __import__(name)
    # 可以动态导入模块
    print(json.dumps({"name": "green"}))
    
    # {"name": "green"}
    
posted @ 2024-01-13 23:14  HuangQiaoqi  阅读(7)  评论(0编辑  收藏  举报