zoukankan      html  css  js  c++  java
  • Python【day 13】内置函数02

    一、作用域相关-2个
    1、locals()
    参数是空
    返回当前位置作用域的所有变量,返回的是字典
    当前位置:函数内,返回局部变量
    当前位置:函数外,返回全局变量
    2、globals()
    参数是空
    返回全局变量,返回的是字典

    二、迭代器-生成器相关--3个
    1、range()
    生成数字数据,例如:等差数列
    参数是数字
    2、next()
    参数是迭代器-Iterator,返回的是迭代器的一个取值,只能向下取值,不能后退
    和迭代器.__next__()等效--内部原理
    3、iter()
    用于把Iterable转换成迭代器
    参数是Iterable,返回的是迭代器,内部调用的是Iterable.__iter__()

    可迭代类型的(可迭代的):Iterable
    包括:str list tuple dict set range() open()
    迭代器:Iterator
    Iterator = iter(Iterable) 或者
    Iterator = Iterable.__iter__()
    注意:列表是Iterable,而不是Iterator

    三、其他-12个
    1、字符串类型代码的执行--3个
    1、eval()
    作用:用于实现计算器,字符串表达式的执行
    参数:字符串表达式 比如:'1+3'
    返回:int--计算结果
    应用场景:有返回值的字符串形式的代码-
    比如:计算器、'[1,2]'或者"{'name':'jack'}"去掉引号,json字符串转成字典

    2、exec()
    作用:执行字符串中的代码
    参数:字符串代码
    返回:None,没有返回值
    应用场景:没有返回值的字符串形式的代码-比如:函数、for循环等

    3、compile()
    作用:将字符串中的代码进行编译,将编译后的结果存入变量,然后把变量交给eval()或者exec()执行
    参数:
    参数1:字符串形式的代码
    参数2:py文件-如果参数1传了,参数2是空字符串""即可
    参数3:模式有3个
    1、'eval' 计算字符串表达式
    2、'exec' 循环或者if语句或者函数
    3、'single' 有交互的时候,包含input
    注意:single这个模式只能用于input,不能在input之外加上其他任何语句,
    比如:有print不行,否则报错
    返回:
    应用场景:
    1、有返回值的字符串形式的代码-用eval()
    2、没有返回值的字符串形式的代码-用exec()
    3、compile()用的较少

    2、输入输出--2个
    1、input()
    作用:获取用户键盘输入的内容
    参数:字符串,比如:用于提示用户输入
    返回:字符串
    注意:用户输入的是数字1,返回的是字符串'1'
    这里的字符串'1'如果需要用于计算,就需要先转换成int,否则报错
    应用场景:有交互的时候
    2、print()
    作用:打印输出
    参数:变量-必选参数
    返回:变量的值
    应用场景:一步步调试程序,打印变量

    3、内存相关-2个
    1、id()
    作用:获取到对象的内存地址
    参数:对象、变量
    返回:内存地址
    应用场景:可以用于确定两个变量是否指向同一个对象
    a1 is a2 如果返回的是True
    a1和a2都指向了同一个内存空间,a1和a2分别是同一个内存空间的不同别名
    a1和a2并没有在内存中开辟2个不同的内存空间

    2、hash()
    作用:获取到对象的哈希值
    参数:不可变对象(int str bool tuple)
    返回:int(19位数字或者19位数字前面加一个-)
    应用场景:
    可变对象(不可哈希的):list dict set
    不可变对象(可哈希的):int str bool tuple frozenset
    只有不可变对象才有哈希值,可变对象是没有哈希值的
    字典的key必须是不可变对象(可哈希的)

    4、文件操作相关-1个
    open()
    作用:获取文件对象-文件句柄(类比:锅上的锅炳,锅炳可以控制锅;文件句柄可以操作文件)
    参数:
    参数1:文件全路径(包括文件名字)
    参数2:模式mode,默认是只读r
    参数3:编码方式,默认是None(即和操作系统保持一致,中文操作系统是gbk),
    一般需要指定utf-8
    返回:文件对象
    应用场景:
    读写操作文件(包括文本文件txt csv和二进制文件excel)

    相对路径小结
    .. 表示上一级目录 例如:path1 = r'..code1.py'
    ....表示上上级目录 例如:path2 = r'.... est.py' 这里的r是去掉转义
    ......表示上3级目录 例如:path3 = r'......zuoye.py'

    5、模块相关--1个
    __import__()
    用于动态加载类和函数
    常用的是:import 导包

    6、帮助--1个
    help()
    用于查看函数或者模块用途的详细说明

    7、调用--1个
    callable()
    作用:用于检查一个对象是否是可以被调用的
    如果是可以被调用的,比如:函数、类,就返回True
    如果不是可以被调用的,比如:str int 类的对象,就返回False
    参数:str int 类的对象、函数名、类名
    返回:bool值 True或者False
    应用场景:

    8、查看内置属性--1个
    dir()
    作用:获取参数的属性、方法列表
    参数:列表、字典等任意对象
    返回:
    返回的是一个列表
    列表中是该参数的属性、方法列表
    应用场景:
    可以用于查看列表、字典等对象的属性和方法列表
    比如:想查看列表中有多少内置方法,可以被使用

    四、基础数据类型相关--38个
    1、和数字相关
    1、数字类型
    1、bool()
    作用:将给定的参数,转换成布尔值,True或者False
    参数:
    False:None 0 '' [] () {}
    数字0、空字符串、空列表、空元组、空字典
    True:1或者其他所有非空的(包含空格 ' ' ' ' ' '等)
    返回:
    True
    False
    应用场景:
    备注:
    1、bool是int的子类
    2、如果不给参数,返回的是False

    2、int()
    作用:将给定的参数(小数或者字符串)转换成int值
    参数:
    小数:小数会直接取整,而不是四舍五入
    字符串:只能将字符串形式的数字,转换成数字,比如:'12'转成12
    而不能把'a'转成int,会报错
    返回:
    int值
    应用场景:
    备注:
    1、如果不给参数,返回的是0
    2、参数2不写,默认是base=10;还可以按照其他进制,比如base=8

    3、float()
    作用:将给定的参数(整数int或者字符串形式的小数)转换成小数
    参数:
    整数int
    字符串形式的小数
    返回:
    小数
    应用场景:
    备注:
    如果不给参数,返回的是0.0

    4、complex()
    作用:将给定的参数,转换成复数
    参数:
    参数1:实部
    参数2:虚部
    返回:
    复数
    应用场景:
    备注:
    如果不给参数,返回的是0j

    2、进制转换
    1、bin()
    作用:将给定的参数,转换成二进制
    参数:十进制数字,整数int,不能是小数
    返回:二进制的字符串-0b开头,而不是二进制数字
    应用场景:
    备注:

    2、oct()
    作用:将给定的参数,转换成八进制
    参数:十进制数字,整数int,不能是小数
    返回:八进制的字符串-0o开头,而不是八进制数字
    应用场景:
    备注:

    3、hex()
    作用:将给定的参数,转换成十六进制
    参数:十进制数字,整数int,不能是小数
    返回:十六进制的字符串-0x开头,而不是十六进制数字
    应用场景:
    备注:

    3、数学运算
    1、abs()
    作用:将给定的参数,转换成绝对值
    参数:int或者float
    返回:正数--去掉了负号
    应用场景:
    备注:

    2、divmod()
    作用:返回商和余数
    参数:
    参数1:被除数
    参数2:除数
    返回:商和余数组成的元组 (a//b,a%b)
    应用场景:
    备注:

    3、round()
    作用:返回小数的四舍五入
    参数:
    参数1:小数
    参数2:保留几位小数
    返回:小数
    应用场景:小数点后位数较多,保留几位小数
    备注:

    4、pow()
    作用:求幂
    参数:
    参数1:a
    参数2:b
    返回:返回a的b次幂,等效于a**b
    应用场景:
    备注:

    5、sum()
    作用:求和
    参数:
    参数1:Iterable:列表、元组、字典等
    参数2:不写默认是0,
    返回:返回Iterable中元素的和,如果参数2是3,最后的和还需要加3
    应用场景:用于计算累加,列表中元素的和
    备注:

    6、min()
    作用:求最小值
    参数:
    1、多个参数:可以是多个数字
    2、一个参数:多个数字组成的列表
    返回:最小值int或者float
    应用场景:
    备注:

    7、max()
    作用:求最大值
    参数:
    1、多个参数:可以是多个数字
    2、一个参数:多个数字组成的列表
    返回:最大值int或者float
    应用场景:
    备注:


    2、和数据结构相关
    1、数据集合
    1、字典
    dict()
    作用:创建一个字典
    参数:
    方式1:关键字
    方式2:Iterable
    方式3:映射函数
    返回:字典
    备注:

    2、集合
    1 set()
    作用:创建一个集合,把参数转换成集合
    参数:
    Iterable
    返回:集合(无序,去重)
    备注:集合的本质是没有value,只有key的字典
    例子:
    s1 = 'bob'
    s2 = 'alexab'

    set1 = set(s1) #把字符串转换成集合
    print(set1) #{'b', 'o'} #去重和无序

    set2 = set(s2)
    print(set2) #{'b', 'x', 'l', 'e', 'a'}

    print(set1 & set2) #{'b'} 求交集 (并且,两个集合都有的)
    print(set1 | set2) #{'x', 'o', 'e', 'a', 'l', 'b'} 求并集(合集)
    print(set2 - set1) #{'l', 'e', 'a', 'x'} 求差集

    2 frozenset()
    作用:创建一个不可变(冻结)的集合
    参数:
    Iterable:列表、元组、字典
    返回:
    不可变的集合
    备注:冻结的意思是:元素不能添加和删除
    例子:
    s1 = 'bob'
    print(frozenset(s1)) #创建一个不可变的集合(不能添加或者删除元素)
    #类比:set和frozenset list和tuple
    #frozenset({'b', 'o'})

    2、相关内置函数
    1 len()
    作用:返回一个对象中元素的个数
    参数:
    列表、元组、字符串等Iterable
    返回:
    个数int
    备注:
    例子:
    li1 = [1,2]
    print(len(li1)) #2 列表中元素的个数

    2 sorted()
    作用:对可迭代对象进行排序
    参数:
    可迭代的对象Iterable
    返回:
    排序后的可迭代对象
    备注:
    sort()和sorted()的区别
    1 sort()是列表的内置方法,排序的同时,将原列表修改了
    2 sorted()的参数不仅仅是列表,还可以是字符串等其他Iterable的对象
    排序的同时,新产生了一个新的排序后的对象,原对象没有任何改变
    例子:
    li2 = [1,3,2]
    li3 = sorted(li2) #reverse不写默认是False 升序
    print(li3) #[1, 2, 3]

    li4 = sorted(li2,reverse = True) #倒序
    print(li4) #[3, 2, 1]

    li2 = [1,3,2]
    li5 = sorted(li2,key=lambda x:x*-1) #通过参数key 进行倒序
    #key参数还可以用于指定对象中的一个元素进行排序
    print(li5) #[3, 2, 1]

    li6 = sorted(li2,key=lambda x:x)
    print(li6) #[1, 2, 3] #通过参数key 进行升序

    li2 = [1,3,2]
    li2.sort() #这里返回值是None 注意
    print(li2) #[1, 2, 3]

    3 enumerate()
    作用:将一个可迭代对象中元素的索引号和元素本身作为一个元组,元组作为新列表的元素
    参数:
    iterable
    返回:
    枚举对象
    备注:

    4 all()
    作用:可迭代对象中元素全部是True,结果才是True
    参数:
    Iterable
    元素中含有0 空字符串'' None Fasle ,结果就是False
    注意:列表或者元组的元素是空白,结果是True
    返回:
    布尔值 bool True或者False
    备注:

    5 any()
    作用:可迭代对象中元素有一个是True,结果就是True
    参数:
    Iterable
    元素中:0 空字符串'' None Fasle ,上述4个元素是False,其余都是True

    返回:
    布尔值 bool True或者False
    备注:

    all()和any()的区别
    1 前者是iterable中的元素全部是True,结果才是True
    2 后者是iterable中的元素只要有一个是True,结果就是True
    3、元素中0 '' None False是False,其余都是True
    4、注意点
    空列表(列表中的元素是空白)、空元组、空字符串,all()函数返回True--特殊点
    空列表(列表中的元素是空白)、空元组、空字符串,any()函数返回False

    6 zip()
    作用:把iterable1和iterable2的第一个元素组成一个元组,
    把iterable1和iterable2的第2个元素组成一个元组,.。。元组作为列表的元素
    以iterable中最少的元素为准
    参数:
    参数1:可迭代对象
    参数2:可迭代对象
    返回:
    迭代器
    备注:
    例子:
    li1 = [1,2]
    li2 = [3,4]
    ret1 = zip(li1,li2)
    print(ret1) #<zip object at 0x00000021A24E4788>
    print(list(ret1)) #[(1, 3), (2, 4)]

    7 filter()
    8 map()

    3、序列
    1、列表和元组--2个
    1 list()
    作用:将可迭代对象-iterable转换成列表
    参数:
    可迭代对象-iterable
    返回:
    列表
    备注:

    2 tuple()
    作用:将可迭代对象-iterable转换成元组
    参数:
    可迭代对象-iterable
    返回:
    元组
    备注:

    2、相关内置函数--2个
    1 reversed()
    作用:将一个序列(iterable)反转,返回一个迭代器
    参数:
    iterable:str list tuple range()等 dict set open()
    返回:
    迭代器
    备注:
    li1 = [1,3,2]
    it1 = reversed(li1) #将可迭代对象-iterable的元素进行反转(注意:反转不是倒序)
    print(it1) #
    print(list(it1)) #[2, 3, 1] #迭代器转换成列表

    2 slice()
    作用:用于切片,用的较少
    推荐:s1[1:5:2] li1[1:5:2]
    备注:
    字符串或者列表反转
    方法1: 最简洁
    s1[::-1]
    li1[::-1]

    方法2:
    reversed(li1)
    reversed(s1)

    3、字符串--9个
    1 str()
    作用:将数据转换成字符串
    参数:
    任意对象
    返回:
    字符串
    备注:

    2 format()
    作用:进行格式化
    参数:
    参数1:可以是字符串、数字、小数
    返回:
    字符串
    备注:
    #01 字符串
    print(format('jack','<20')) #字符串左对齐,一共是20个字符
    print(format('jack','>20')) #字符串右对齐,一共是20个字符
    print(format('jack','^20')) #字符串居中对齐,一共是20个字符,jack左右各8个字符
    print('----------------------6-1 format() 字符串')

    #02 数值--进制转换
    print(format(3,'b')) #11 十进制数字3转换成二进制数字11的字符串形式
    print(type(format(3,'b'))) #<class 'str'>
    print(format(8,'o')) #10 十进制数字8转换成八进制数字10的字符串形式
    print(format(16,'x')) #10 十进制数字16转换成十六进制数字10的字符串形式
    print(format(15,'X')) #F 十进制数字15转换成十六进制数字F(大写的)
    print(format(97,'c')) #a 十进制数字97转换成ascii码表(ascii属于unicode)中的字母
    print('----------------------6-2 format() 进制转换')

    #03 浮点数--小数
    print(format(1.2354,'0.2f')) #1.24 保留2位小数,四舍五入
    print(type(format(1.2354,'0.2f'))) #<class 'str'>
    print(format(12345678,'e')) #1.234568e+07 科学计数法(默认保留6位小数)
    print(format(1235567,'0.2e')) #1.24e+06 科学计数法(保留2位小数,e小写)
    print(format(1235567,'0.2E')) #1.24E+06 科学计数法(保留2位小数,e大写)
    print('----------------------6-3 format() 小数')

    3 bytes()
    作用:把字符串转换成bytes类型(字节)
    参数:
    字符串、整数、iterable
    返回:
    字节
    备注:
    #把字符串转换成字节(utf-8编码)
    s1 = '你好'
    s2 = 'jack'
    li1 = [1,2,3]
    print(bytes(s1,encoding='utf-8')) #b'xe4xbdxa0xe5xa5xbd' b开头表示字节
    #一个汉字(中文字符)是3个字节--utf-8中
    print(bytes(s2,encoding='utf-8')) #b'jack'
    #一个英文字母是一个字节--utf-8中
    print(bytes(li1)) #b'x01x02x03'
    print('----------------------7-1 bytes()')

    b1 = s1.encode() #这里参数不写,默认是'utf-8'
    print(b1) #b'xe4xbdxa0xe5xa5xbd'
    #将中文字符串转换(编码-压缩-加密)成字节(utf-8)
    #中文字符串就是明文,字节就是密文

    s11 = b1.decode() #这里参数不写,默认是'utf-8'
    print(s11) #你好
    #将字节(utf-8)转换(解码-解压缩-解密)成中文字符串
    print('----------------------7-2 bytes()')

    4 bytearray()
    备注:和bytes有类似,用的较少

    5 memoryview()
    作用:查询字符串对应的字节(utf-8)在内存的地址
    参数:
    字符串对应的字节
    返回:
    内存的地址
    备注:
    s1 = 'jack'
    print(memoryview(s1.encode('utf-8')))
    # print(memoryview(s1)) #报错 TypeError: memoryview: a bytes-like object is required, not 'str'
    #<memory at 0x0000003D28B881C8>

    6 ord()
    作用:输入字符,找到字符编码的位置-ascii,输出数字
    参数:
    字符
    返回:
    数字
    备注:
    print(ord('a')) #97 #字母a的ascii是97
    print(ord('一')) #19968 #中文字符‘一’对应的utf-8的字符编码的位置是19968
    # print(ord('一期')) #报错 TypeError: ord() expected a character, but string of length 2 found

    7 chr()
    作用:把数字(字符编码的位置)转换成字符
    参数:
    数字
    返回:
    字符
    备注:
    print(chr(65)) #A ascii中65对应的字符是'A'
    print(chr(19968)) #一 字符编码位置是19968对应的字符是'一'

    8 ascii()
    作用:用于判断字符是否在ascii中
    参数:
    参数是ascii表中的字符,就返回参数本身;参数不是ascii表中的字符,就返回u开头
    返回:
    备注:
    print(ascii('a')) #'a'
    print(ascii('ab')) #'ab'
    print(ascii('一')) #'u4e00'

    9 repr()
    作用:引号等原封不动的输出,转义符不起作用,取字面的意思
    参数:
    返回:
    备注:
    s1 = '祖国'
    print('我爱%s' % s1) #我爱祖国 占位符
    print('我爱%r' % s1) #我爱'祖国' 原封不动的输出

    print('大家好, 我是jack')
    # 大家好,
    # 我是jack
    print(repr('大家好, 我是jack'))
    #'大家好, 我是jack' 原封不动的输出,引号和转义符都原样输出

    s1 ='jack' #字符串
    print(s1) #jack 不带引号
    print(repr(s1)) #'jack' 带引号
  • 相关阅读:
    PAT顶级 1024 Currency Exchange Centers (35分)(最小生成树)
    Codeforces 1282B2 K for the Price of One (Hard Version)
    1023 Have Fun with Numbers (20)
    1005 Spell It Right (20)
    1092 To Buy or Not to Buy (20)
    1118 Birds in Forest (25)
    1130 Infix Expression (25)
    1085 Perfect Sequence (25)
    1109 Group Photo (25)
    1073 Scientific Notation (20)
  • 原文地址:https://www.cnblogs.com/wangtp/p/11780455.html
Copyright © 2011-2022 走看看