分 享

【凤凰社】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、字符串类型代码的Run--3个
1、eval()
作用:用于实现计算器,字符串表达式的Run
参数:字符串表达式 比如:'1+3'
返回:int--计算结果
应用场景:有返回值的字符串形式的代码-
比如:计算器、'[1,2]'或者"{'name':'jack'}"去掉引号,json字符串转成字典

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

3、compile()
作用:将字符串中的代码进行编译,将编译后的结果存入变量,然后把变量交给eval()或者exec()Run
参数:
参数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'..\..\test.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或者其他所有非空的(包含空格 '\r' '\n' '\t'等)
返回:
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'\xe4\xbd\xa0\xe5\xa5\xbd' b开头表示字节
#一个汉字(中文字符)是3个字节--utf-8中
print(bytes(s2,encoding='utf-8')) #b'jack'
#一个英文字母是一个字节--utf-8中
print(bytes(li1)) #b'\x01\x02\x03'
print('----------------------7-1 bytes()')

b1 = s1.encode() #这里参数不写,默认是'utf-8'
print(b1) #b'\xe4\xbd\xa0\xe5\xa5\xbd'
#将中文字符串转换(编码-压缩-加密)成字节(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('大家好,\n \t 我是jack')
# 大家好,
# 我是jack
print(repr('大家好,\n \t 我是jack'))
#'大家好,\n \t 我是jack' 原封不动的输出,引号和转义符都原样输出

s1 ='jack' #字符串
print(s1) #jack 不带引号
print(repr(s1)) #'jack' 带引号

0 评论

回复