首页 > 编程语言 >Python高级之常用的内置函数

Python高级之常用的内置函数

时间:2024-05-09 15:24:48浏览次数:26  
标签:__ 内置 函数 Python list -- num str print

【一】什么是内置函数

  • 内置函数就是Python给你提供的, 拿来直接用的函数
  • 目前共有68个内置函数
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】整数 -- int
num = 1.0
print(num, type(num))
# 1.0 <class 'float'>
print(int(num), type(int(num)))
# 1 <class 'int'>

# 【2】浮点数 -- float
num = 1
print(num, type(num))
# 1 <class 'int'>
print(float(num), type(float(num)))
# 1.0 <class 'float'>

# 【3】字符串 -- str
num = 123
print(str(num) + '456')
# 123456

# 【4】列表 -- list
num_tuple = (1, 2, 3, 4, 5)
print(list(num_tuple))
# [1, 2, 3, 4, 5]

# 【5】字典 -- dict
user_list = [('username', 'ligo')]
print(dict(user_list))
# {'username': 'ligo'}

# 【6】元祖 -- tuple
num_list = [1, 2, 3, 4, 5]
print(tuple(num_list))
# (1, 2, 3, 4, 5)

# 【7】集合 -- set
num_list = [1, 2, 3, 4, 5, 2, 3, 4, 5]
print(set(num_list))
# {1, 2, 3, 4, 5}

# 【8】布尔 -- bool
num = 0
print(num, type(num))
# 0 <class 'int'>
print(bool(num), type(bool(num)))
# False <class 'bool'>

num = 1
print(num, type(num))
# 1 <class 'int'>
print(bool(num), type(bool(num)))
# True <class 'bool'>

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

# 【1】十进制转二进制(bin)
num = 100
print(bin(num))
# 0b1100100

# 【1】十进制转八进制(oct)
num = 100
print(oct(num))
# 0o144

# 【1】十进制转十六进制(hex)
num = 100
print(hex(num))
# 0x64

【四】数学运算(8)

# 【1】获取绝对值 -- abs
num = -1
print(abs(num))  # 1

# 【2】获取商和余数 -- divmod
# divmod(被除数,除数)
num1 = 10
num2 = 3
print(divmod(num1, num2))  # (3, 1)

# 【3】四舍五入 -- round
# 如果后面的数字大于5进1
print(round(4.60))  # 5
# 如果后面的数字小于5不进1
print(round(4.40))  # 4
# 如果后面的数字等于5 5后面的数字如果大于0 进1
print(round(4.51))  # 5
# 如果后面的数字等于5 5后面的数字如果不大于0 不进1
print(round(4.50))  # 4

# 控制小数点的位数 ---> 不管是0/1都能进
# 如果后面的数字大于5进1
print(round(4.46, 1))  # 4.5
# 如果后面的数字小于5不进1
print(round(4.44, 1))  # 4.4
# 如果后面的数字等于5 5后面的数字如果大于0 进1
print(round(4.451, 1))  # 4.5
# 如果后面的数字等于5 5后面的数字如果不大于0 进1
print(round(4.450, 1))  # 4.5

# 【4】a的b次幂 -- pow
'''
参数介绍:
    x — 数值表达式(整数或者浮点数);
    y — 数值表达式(整数或者浮点数);
    z — 数值表达式(整数或者浮点数),默认不设置z值;

返回值:返回 xy(x的y次方)的值;如果设置了z值,则再对结果进行取模,其结果等效于pow(x,y) %z;
'''
# 两个参数的是求当前的幂次方
print(pow(5, 3))  # 125
# 三个参数的时候是求完次幂后对第三个数取余
print(pow(5, 3, 2))  # 1
# 如果参数中有一个浮点数,则结果也变成浮点数
print(pow(3, 1.2))  # 3.7371928188465517

# 【5】求和 -- sum
print(sum(i for i in range(10)))  # 45

# 【6】最小值 -- min
num_list = [22, 9, 7, 13, 4, 47, 99]
print(min(num_list))  # 4

# 【7】最大值 -- max
print(max(num_list))  # 99

# 【8】复数转换 -- complex
# complex(re, im) : 具有实部 re、虚部 im 的复数。im 默认为零
start = complex(4, 6)
print(start)  # (4+6j)
end = complex(2, 9)
print(end)  # (2+9j)
print(start - end)  # (2-3j)
print(start + end)  # (6+15j)
print(start * end)  # (-46+48j)
print(start / end)  # (0.7294117647058824-0.28235294117647064j)

【五】数据结构相关

【1】序列相关(5)

# 【1】翻转 -- reversed
num_list = [1, 2, 3, 4, 5]
print(list(reversed(num_list)))  # [5, 4, 3, 2, 1]
# 不会改变原列表
print(num_list)  # [1, 2, 3, 4, 5]

# 【2】切片 -- slice
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(num_list[1:10:2])  # [2, 4, 6, 8, 10]
print(slice(1, 10, 3))  # slice(1, 10, 3)
print(num_list[slice(1, 10, 3)])  # [2, 5, 8]

# 【3】计算长度 -- len
num_list = [1, 2, 3, 4, 5]
print(len(num_list))  # 5

# 【4】排序 -- sorted
# 语法:sorted(可迭代对象, key=函数(排序规则), reverse=False)
# reverse: 是否是倒叙. True: 倒叙, False: 正序
# sorted() 对可迭代对象进行排序操作 (lambda)
# (1)sort方法
num_list = [9, 23, 1, 55, 12, 5, 3, 6, 40]
num_list.sort()
print(num_list)  # [1, 3, 5, 6, 9, 12, 23, 40, 55]
# (2)sorted:会生成一个新列表
print(sorted(num_list))  # [1, 3, 5, 6, 9, 12, 23, 40, 55]
#    倒序
print(sorted(num_list, reverse=True))  # [55, 40, 23, 12, 9, 6, 5, 3, 1]

# (3)根据字符串长度给列表排序
str_list = ['one', 'two', 'three', 'four', 'five', 'six']


def f(s):
    return len(s)


print(sorted(str_list, key=f))  
# ['one', 'two', 'six', 'four', 'five', 'three']
print(sorted(str_list, key=lambda s: len(s)))  
# ['one', 'two', 'six', 'four', 'five', 'three']
print(sorted(str_list, key=lambda s: len(s), reverse=True))  
# ['three', 'four', 'five', 'one', 'two', 'six']

# 【5】枚举 -- enumerate
num_list = [i for i in range(5)]
# 把索引和元素一起获取,索引默认从0开始. 可以更改
for index, data in enumerate(num_list):
    print(f"{index}:{data}")
# 0:0
# 1:1
# 2:2
# 3:3
# 4:4
# 将索引改为2
for index, data in enumerate(num_list, 2):
    print(f"{index}:{data}")
# 2:0
# 3:1
# 4:2
# 5:3
# 6:4

【2】字符串(4)

# 【1】格式化输出 -- format
# format() 与具体数据相关, 用于计算各种小数, 精算等
# (1)居中对齐方式
s = "hello world!"
print(format(s, "^20"))  # 居  中
#     hello world!
print(format(s, "<20"))  # 左对齐
# hello world!
print(format(s, ">20"))  # 右对齐
#         hello world!
# (2)进制转换
print(format(6, 'b'))  # 二进制:110
print(format(90, 'c'))  # 转换成unicode字符:Z
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
# (3)科学计数法
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
print(bytes('very good', 'utf8'))
# b'very good'
print(bytes('你真棒', 'utf8'))
# b'\xe4\xbd\xa0\xe7\x9c\x9f\xe6\xa3\x92'

# 【3】获取字节数组 -- bytearray
# 返回一个新字节数组. 这个数字的元素是可变的, 并且每个元素的值得范围是[0,256)
res = bytearray("ligo", encoding='utf8')
print(res[1])  # 105
print(res)  # bytearray(b'ligo')
res[1] = 70
print(str(res))  # bytearray(b'lFgo')

# 【4】返回对象的字符串格式 -- repr
# repr() 返回一个对象的string形式
word = "今天\n吃了%s顿\t饭" % 10
print(word)
# 今天
# 吃了10顿	饭

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

【3】字符编码(3)

# 【1】字符编码找数字 -- ord
# ord() 输入字符找带字符编码的位置
print(ord("x"))  # 120
print(ord("强"))  # 24378

# 【2】数字找字符编码 -- chr
# chr() 输入位置数字找出对应的字符
print(chr(73))  # I
print(chr(24533))  # 忕

# 【3】数字找ASCII码 -- ascii
# ascii() 是ascii码中的返回该值 不是就返回u
for i in range(65536):
    print(chr(i), end=" ")

print(ascii("@"))  # '@'

【4】数据集合

  • frozenset() 创建一个冻结的集合,冻结的集合不能进行添加和删除操作
# frozenset() 函数返回一个不可变的 frozenset 对象,适用于作为字典的键或集合的元素
set_add = {1, 2, 3, 4}
set_add.add(5)
print(set_add)
# 正常的集合是可以添加元素的
num_set = frozenset([1, 2, 3, 4, 5])
print(num_set)

【5】条件判断(2)

# 【1】所有为真 -- all
# all() 可迭代对象中全部是True, 结果才是True
print(all([1, 'ligo', 666, True]))  # True
print(all([0, 'ligo', 666, True]))  # False

# 【2】任意为真 -- any
# any() 可迭代对象中有一个是True, 结果就是True
print(any([0, 'ligo', 0, False]))  # True

【6】高阶函数(3)

(1)打包 -- zip

  • zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
  • 如果各个迭代器的元素个数不一致, 则返回列表长度与最短的对象相同
lst1 = [1, 2, 3, 4, 5, 6]
lst2 = ['醉乡民谣', '驴得水', '放牛班的春天', '美丽人生', '辩护人', '被嫌弃的松子的一生']
lst3 = ['美国', '中国', '法国', '意大利', '韩国', '日本']

print(zip(lst1, lst2, lst3))
# <zip object at 0x00000229D7EDC140>
print(list(zip(lst1, lst2)))
# [(1, '醉乡民谣'), (2, '驴得水'), (3, '放牛班的春天'), (4, '美丽人生'), (5, '辩护人'), (6, '被嫌弃的松子的一生')]
print(list(zip(lst1, lst3)))
# [(1, '美国'), (2, '中国'), (3, '法国'), (4, '意大利'), (5, '韩国')]
print(list(zip(lst1, lst2, lst3)))
# [(1, '醉乡民谣', '美国'), (2, '驴得水', '中国'), (3, '放牛班的春天', '法国'), (4, '美丽人生', '意大利'), (5, '辩护人', '韩国'), (6, '被嫌弃的松子的一生', '日本')]

(2)过滤 -- filter

  • 语法:fiter(用来筛选的函数. 可迭代对象)
  • 用来过滤可迭代类型,只保留符合条件的数据
  • filter() 过滤 (lambda)
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]


def func(i):
    return i % 2 == 0 #判断偶数


print(filter(func, num_list))  # <filter object at 0x00000270F5419E70>
print(list(filter(func, num_list)))  # [2, 4, 6, 8]
print(list(filter(lambda i: i % 2, num_list)))  # [1, 3, 5, 7, 9]

(3)映射 -- map

  • 语法:map(用来筛选的函数. 可迭代对象)
  • 映射函数将可迭代类型中的每一个元素作为参数传递给前面的函数
  • map() 会根据提供的函数对指定序列列做映射(lambda)
# 把可迭代对象中的每一个元素传递给前面的函数进行处理,处理的结果会返回成迭代器
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]


def func(i):
    return i


print(map(func, num_list))  # <map object at 0x0000016DB825B0D0>
print(list(map(func, num_list)))  # [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(map(lambda i: i, num_list)))  # [1, 2, 3, 4, 5, 6, 7, 8, 9]

【六】作用域(2)

# locals() 返回当前作用域中的名字
# globals() 返回全局作用域中的名字
a = 10


def func():
    b = 11
    print(f'{locals()}')
    # 当前作用域:{'b': 11}
    print(f'{globals()}')
    # 全局作用域:{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000022065A748B0>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\Python\\pythonProject\\pythonProject1\\demo7.py', '__cached__': None, 're': <module 're' from 'D:\\lib\\re.py'>, 'a': 10, 'func': <function func at 0x00000220659B3E20>}


func()

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

# 【1】循环生成数据 -- range
print(range(1, 10))
# range(1, 10)
print([i for i in range(10)])
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 【2】获取迭代器 -- iter
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(iter(num_list))  # <list_iterator object at 0x000001106AC149D0>

# 【3】向下执行 -- next
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
res = iter(num_list)
print(next(res))  # 1
print(next(res))  # 2
print(next(res))  # 3
print(next(res))  # 4
print(next(res))  # 5

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

# 【1】指定指令并返回结果 -- eval
num_str = input("请输入数据:").strip()
print(eval(num_str))
# 请输入数据:1+1
# 2

# 【2】指定指令不返回结果 -- exec
num_str = input("请输入数据:").strip()
print(exec(num_str))
# 请输入数据:1+1
# None -- 不返回任何结果

# 执行指令,exec允许执行多行代码块,但是eval只能执行单行代码
name_str = '''
def func():
    print('我是ligo')
func()
'''
print(exec(name_str))
# 我是ligo
# None
print(eval(name_str)) # SyntaxError: invalid syntax

# 【3】编码指令 -- compile
# compile() 将字符串类型的代码编码. 代码对象能够通过exec语句来执行或者eval()进行求值
code_str_one = 'print([i for i in range(10) if i % 2 == 0])'
code_str = '''
def add(x,y):
    print(x+y)
add(1,5)
'''
code_eval = compile(code_str_one, '', mode="eval")
eval(code_eval)  # [0, 2, 4, 6, 8]
code_exec = compile(code_str, '', mode='exec')
exec(code_exec)  # 6

exec(code_eval)  # [0, 2, 4, 6, 8]
eval(code_exec)  # 6

【九】输入输出(2)

  • print() : 打印输出
  • input() : 获取用户输出的内容

【十】算法

  • hash() :获取到对象的哈希值(int, str, bool, tuple)
name = 'ligo'
print(hash(name))
# -1977231548399644595
# 注意:列表是不可以哈希的
#hash算法:目的是唯一性,dict查找效率非常高

【十一】文件操作

#open() : 用于打开一个文件, 创建一个文件句柄
fp = open('file','r',encoding='utf-8')
fp.read()

【十二】导入模块

# 【1】
import 函数名

# 【2】__ import__() : 用于动态加载类和函数
name = input("请输入你要导入的模块:")
json = __import__(name)
# 可以动态导入模块
print(json.dumps({"name": "dream"}))

# {"name": "dream"}

【十三】帮助函数

# help() : 函数用于查看函数或模块用途的详细说明
print(help(str)) 

【十四】调度相关

# callable() : 用于检查一个对象是否是可调用的
a = 10


def name():
    print('ligo')


# 变量a不能被调用
print(callable(a))  # False
# 函数是可以被调用的
print(callable(name))  # True

【十五】查看内置属性

  • dir() :查看对象的内置属性

  • 访问的是对象中的 __dir__() 方法

print(dir(list))
# ['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__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']

【十六】调试器(breakpoint)

  • 语法:breakpoint(*args, **kws)`
  • *args, **kws---不定长参数
count = 0
while count <= 5:
    breakpoint()
    count += 1
    print(count)

【十七】判断你内存空间地址(id)

  • id()函数返回该对象的内存地址,每个对象都有一个唯一的内存地址
print(id(1))  # 2979228942576
print(id('ligo'))  # 2979230255920

标签:__,内置,函数,Python,list,--,num,str,print
From: https://www.cnblogs.com/ligo6/p/18179994

相关文章

  • Python高级之模块与包
    【一】模块介绍【1】什么是模块在Python中,一个py文件就是一个模块,文件名为xxx.py模块名则是xxx,导入模块可以引用模块中已经写好的功能使用模块既保证了代码的重用性,又增强了程序的结构性和可维护性另外除了自定义模块外,我们还可以导入使用内置或第三方模块提供的现成功能......
  • 利用标准IO函数接口实现文件拷贝,把本地磁盘的文件A中的数据完整的拷贝到另一个文本B中
    利用标准IO函数接口实现文件拷贝,把本地磁盘的文件A中的数据完整的拷贝到另一个文本B中,如果文本B不存在则创建,要求文本A的名称和文本B的名称通过命令行传递,并进行验证是否正确。/******************************************************************** author :18312615416@1......
  • 《最新出炉》系列入门篇-Python+Playwright自动化测试-45-鼠标操作-下篇
    1.简介鼠标为我们使用电脑提供了很多方便,我们看到的东西就可以将鼠标移动过去进行点击就可以打开或者访问内容,当页面内容过长时,我们也可以使用鼠标滚轮来实现对整个页面内容的查看,其实playwright也有鼠标操作的方法。上一篇文章中已经讲解过鼠标的部分操作了,今天宏哥在这里将剩下......
  • SqlFunc查询函数
    一、常用的C#函数支持一些常用的C#函数.ToString().Contains().Length().ToLower().ToUpper().ToSubstring().Equals().Replace().EndsWith().StartsWith().Trim().HasValue.Value.AddDays(AddHours等)和常用的Convert.ToInt32等三元xx??0时......
  • Python高级之函数参数进阶Optional
    【一】引言在Python3.5版本后引入的typing模块为Python的静态类型注解提供了支持。这个模块在增强代码可读性和维护性方面提供了帮助。本文将深入探讨typing模块,介绍其基本概念、常用类型注解以及使用示例,以帮助读者更全面地了解和应用静态类型注解。【二】基本类型注解【......
  • Python高级之名称空间和作用域
    【一】名称空间【1】什么是名称空间名称空间就是存放函数名与函数值对应关系的地方内存空间就是申请一块内存空间,然后将函数值放到内存空间里再将变量名和变量值绑定存到名称空间里程序执行期间最多会存在三种名称空间【2】内置名称空间会跟着python解释器的启动而生成,......
  • Python高级之匿名函数
    【一】匿名函数的定义在Python里有两类函数:用def关键词定义的正规函数用lambda关键词定义的匿名函数lambda参数:表达式lambda:定义匿名函数的关键词。函数参数它们可以是位置参数、默认参数、关键字参数表达式,输入函数参数,输出一些值,表达式本身结果就是返回......
  • Python高级之函数对象与闭包函数
    【一】函数对象函数对象是指函数可以被当成数据来处理,python中一切皆为对象【1】函数可以被引用defadd(a,b):returna+bres=add(3,4)print(res)#7【2】函数作为容器类型的元素defadd(a,b):returna+bnum_list=[add,1]res=num_list[0......
  • Python高级之函数的参数
    【一】形参和实参函数的参数分为形参和实参,形参就是定义在函数名后面括号里的参数(用来接收外部传来的值),实参就是调用函数时,括号里传进去的值(值可以是常量、变量、表达式)defadd(x,y):returnx+y#实参是常量print(add(3,4))#输出7#实参是变量x=3y=4prin......
  • Python高级之函数
    【一】函数的基本使用我们在前面的学习中,所有的功能代码都集中在一块,需要使用同一功能时,需重复编写该功能的代码,这样比较麻烦,当我们到后面代码变得越来越长,也不利于我们修改其中一个小功能的代码我们完全可以从现实生活中找到简化程序设计的方案:比如一个修理工会事先准备好螺......