Python基础12-常用的内置函数

news/2024/7/2 3:52:18

abs

取绝对值,数学上的绝对值

print(abs(-1))

all

接收一个可迭代参数。如果里面有一个False的元素,那么返回值就是False,否则返回True,类似逻辑“与”。如果可迭代参数本身为空,那么返回True。需要记住什么是False的元素,False本身、数字0、空字符串""、None是False的。

f = list()
f.append([1, 0, "mysql"])
f.append([1, "", "mysql"])
f.append([1, None, "mysql"])
f.append({0: "mysql", 1: "oralce"})
f.append("")
f.append([])
f.append({})for i in f:print(i, all(i))pass
# [1, 0, 'mysql'] False   
# [1, '', 'mysql'] False  
# [1, None, 'mysql'] False  
#  True   元素本身是空的,那么返回True
# [] True# [1, 0, 'mysql'] False 0是False
# [1, '', 'mysql'] False ''是False
# [1, None, 'mysql'] False None是False
# {0: 'mysql', 1: 'oralce'} False
#  True 元素本身是空的,那么返回True
# [] True 元素本身是空的,那么返回True
# {} True 元素本身是空的,那么返回True

any

接收一个可迭代参数。如果里面有一个True的元素,那么返回值就是True,所有元素都是False则返回False,类似逻辑“或”。如果可迭代参数本身为空,那么返回False。


f = list()
f.append([1, 0, "mysql"])
f.append([1, "", "mysql"])
f.append([1, None, "mysql"])
f.append({0: "mysql", 1: "oralce"})
f.append("")
f.append([])
f.append({})for i in f:print(i, any(i))pass# [1, 0, 'mysql'] True
# [1, '', 'mysql'] True
# [1, None, 'mysql'] True
# {0: 'mysql', 1: 'oralce'} True
#  False   元素本身是空的,那么返回False
# [] False 元素本身是空的,那么返回False
# {} False 元素本身是空的,那么返回False

bin、oct、hex

转换为二进制、八进制、十六进制

print(bin(17), oct(17), hex(17))
# 0b10001 0o21 0x11

bool

判断布尔类型。只需要记住什么是False,除此之外都是True。

False本身、数字0、各类空值(None、""、[]、{})是False。

# 以下都是False
print(bool(False))
print(bool(0))
print(bool(None))
print(bool(""))
print(bool([]))
print(bool({}))

bytes

将字符串转换为字节,可以用于存储和网络传输。用什么编码,就用什么解码。

s1 = '你好'
# unicode编码每个字符3个字节 b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(bytes(s1, encoding='utf-8'))
print(bytes(s1, encoding='utf-8').decode(encoding='utf-8'))
# gbk编码每个字符2个字节 b'\xc4\xe3\xba\xc3'
print(bytes(s1, encoding='gbk'))
print(bytes(s1, encoding='gbk').decode(encoding='gbk'))

chr、ord

chr传入数字,转换为对应的字符。ord与chr相反的操作,入参是字符,返回的是字符对应的数字。

# 0,A,a
print(chr(48), chr(65), chr(97), sep=',')
print(chr(0x30), chr(0x41), chr(0x61), sep=',')
# 48,65,97,36,27721
print(ord('0'), ord('A'), ord('a'), ord('$'), ord('汉'), sep=',')

dir

打印内置方法。

print(dir(all))
# ['__call__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__name__', '__ne__', '__new__', '__qualname__', '__reduce__', '__reduce_ex__', '__repr__', '__self__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__text_signature__']

divmod

x, y = divmod(37, 5)
print(x, y)  # 商7 余2

enumerate

enumerate 接收一个可迭代的参数,返回一个迭代器,迭代器每个元素是索引位置和元素组成的元组。可以再多传入一个参数,指定索引位置的起始值。这样可以直接获取到迭代器元素的索引位置,这是推荐使用的办法

# enumerate 接收一个可迭代的参数,返回一个迭代器,每个元素是索引位置和元素
# 可以再多传入一个参数,指定索引位置的起始值
# 这样可以直接获取到迭代器元素的索引位置,这是推荐使用的办法
a = ['mysql', 'oracle', 'db2']
e = list(enumerate(a))
print(e)
# [(0, 'mysql'), (1, 'oracle'), (2, 'db2')]
for i, item in enumerate(a):print(i, item)pass
# 0 mysql
# 1 oracle
# 2 db2
for i, item in enumerate(a, 7):print(i, item)pass
# 7 mysql
# 8 oracle
# 9 db2

eval

eval的一大用处是提取字符串为某个数据类型。比如,将字符串提取成字典。

dic = {'os': 'linux', 'db': 'mysql'}
dic_str = str(dic)
d = eval(dic_str)

eval的另一个用处是直接计算字符串形式表达式的值。

express = '1+2*3-8/2'
print(eval(express))  # 3.0

hash

计算hash值。可hash的是不可变的数据类型。不可hash的是可变的数据类型。

s = 'mysql'
print(hash(s))  # -5554907091058110952
print(hash(s))  # -5554907091058110952
print(hash(s))  # -5554907091058110952
s = 'oracle'
print(hash(s))  # 6847068001075588286

help

打印方法的使用方法。我们打印all的使用发放看看。

print(help(all))
# Help on built-in function all in module builtins:
# 
# all(iterable, /)
#     Return True if bool(x) is True for all values x in the iterable.
#     
#     If the iterable is empty, return True.
# 
# None

globals、locals

globals打印全局变量。locals打印当前级别的局部变量。

os = 'linux'def test():db = 'mysql'print(globals())print(locals())passtest()
# {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x0000000000640940>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/dev/basic/day16-built-in.py', '__cached__': None, 'os': 'linux', 'test': <function test at 0x00000000006251F0>}
# {'db': 'mysql'}

max、min、sorted

字面意思,最大值、最小值、排序。

max、min、sorted的高级用法。可以自己指定比较大小的规则。

首先,了解max和min的比较大小逻辑。遍历传入的可迭代参数,逐个比较大小,得到最值。

其次,了解比较大小逻辑。数字比较大小。可迭代的元素,逐个迭代比较大小,比如字符串按照字符串的编码规则比较大小,比如元组先比较第一个元素,比较不出大小再比较下一个位置的元素。

最后,max和min的可选参数key。key可以指定一个取数逻辑,也就是被比较的是什么,也就是这个key取出的数去比较大小。比如,我们可以指定长度大的字符串大。也可以指定个位数字大的数字大。也可以指定比较的是字典中的年龄age。等等……

排序函数sorted本质是比较大小,用法类似。

s = ['mysql', 'oracle', 'db2', 'database']
# 字符串比较大小,逐个比较字符的编码大小
# 最大的是oracle,最小的是database
# 排序按照字母序 ['database', 'db2', 'mysql', 'oracle']
print(max(s))
print(min(s))
print(sorted(s))
# 指定长度大的字符串大
# 最大的是database,最小的是db2
# 排序按照长度排序 ['db2', 'mysql', 'oracle', 'database']
print(max(s, key=lambda x: len(x)))
print(min(s, key=lambda x: len(x)))
print(sorted(s, key=lambda x: len(x)))# 元组类似,先比较第一个元素,相等再比较后面的元素
server = [('linux', 'mysql'),('linux', 'oracle'),('aix', 'oracle'),
]
print(max(server))n = [1213, 345, 232, 39]
# 数字最大1213,最小39,排序[39, 232, 345, 1213]
print(max(n))
print(min(n))
print(sorted(n))
# 个位数大的数字大,最大39,最小232,排序[232, 1213, 345, 39]
print(max(n, key=lambda x: x % 10))
print(min(n, key=lambda x: x % 10))
print(sorted(n, key=lambda x: x % 10))p = [{'name': 'Able', 'age': 18},{'name': 'Fox', 'age': 298},{'name': 'Easy', 'age': 17},{'name': 'Dog', 'age': 36},
]
# 找出年龄最大的人的名字# 先找出年龄最大的人的元素 {'name': 'Fox', 'age': 298}
# 先找出年龄最小的人的元素 {'name': 'Easy', 'age': 17}
print(max(p, key=lambda x: x['age']))
print(min(p, key=lambda x: x['age']))
# 再在年龄最大的人的元素里面取出名字,Fox
# 再在年龄最大的人的元素里面取出名字,Easy
print(max(p, key=lambda x: x['age'])['name'])
print(min(p, key=lambda x: x['age'])['name'])
# 按照年龄排序
# [
# {'name': 'Easy', 'age': 17},
# {'name': 'Able', 'age': 18},
# {'name': 'Dog', 'age': 36},
# {'name': 'Fox', 'age': 298}
# ]
print(sorted(p, key=lambda x: x['age']))
# 按照姓名排序
# [
# {'name': 'Able', 'age': 18},
# {'name': 'Dog', 'age': 36},
# {'name': 'Easy', 'age': 17},
# {'name': 'Fox', 'age': 298}
# ]
print(sorted(p, key=lambda x: x['name']))

 zip

拉链?zip接收多个可迭代的参数,返回一个迭代器。返回迭代器的每个元素是元组,第n个元组的元素是入参的迭代器的第那个元素组成的。好绕啊!!!看例子吧。

a = ['mysql', 'linux', 'oracle']
print(list(zip(*a)))
# [('m', 'l', 'o'), ('y', 'i', 'r'), ('s', 'n', 'a'), ('q', 'u', 'c'), ('l', 'x', 'l')]li = ['aa', 'bb']
tu = (11, 22, 33,)
print(list(zip(li, tu)))
# [('aa', 11), ('bb', 22)]p = {'name': 'Kevin','age': 29,'gender': None
}print(list(zip(p.keys(), p.values())))
# [('name', 'Kevin'), ('age', 29), ('gender', None)]

pow

pow,数学计算的乘方,可选参数可以取余数。

print(pow(2, 10))  # 2**10=1024
print(pow(3, 3))  # 3**3=27
print(pow(3, 3, 2))  # 3**3%2=1

reversed

字面意思,将序列入参反转。但是这个对字符串似乎不行,所以字符串反转,还是考虑使用切片方式,将切片的步长设置为-1。

x = ['mysql', 'oracle', 'db2']
# ['db2', 'oracle', 'mysql']
print(list(reversed(x)))s = 'Kevin'
# 没有搞懂为什么reversed不能直接将字符串反转
# #这个不能反转,得到的是 <reversed object at 0x0000000002423A00>
print(str(reversed(s)))
for i in reversed(s):print(i)pass
# 如果要字符串反转,考虑使用切片,步长为-1,得到niveK
sr = s[::-1]
print(sr)

round

round数学上的四舍五入,默认保留到整数,可选保留几位小数。

# 3 和 3.1416
print(round(3.1415926))
print(round(3.1415926, 4))

slice

字面意思,切片,可以定义切片的方式。

s = 'Oracle'
db = ['debian', 'ubuntu', 'centos', 'redhat', 'suse', 'kali']# 定义一个切片,取3到5的切片
sl = slice(3, 6)
# cle
print(s[sl])
# ['redhat', 'suse', 'kali']
print(db[sl])# 定义一个切片,从头到尾,步长为-1,实际上就是反转
s_reversed = slice(None, None, -1)
# elcarO
print(s[s_reversed])
# ['kali', 'suse', 'redhat', 'centos', 'ubuntu', 'debian']
print(db[s_reversed])

type

type函数返回一个变量的类型。对于int、str、tuple、list、dict、set等内置类型推荐使用type。获取的结果用is和类型名做判断。

对于对象,推荐使用isinstance,这个暂时还没有研究,isinstance考虑了子类继承的情况。

x = '256'if type(x) is str:n = int(x) + 1print(n)pass

 


http://lihuaxi.xjx100.cn/news/236096.html

相关文章

百度DisConf分布式配置框架源码试读(一)HttpClient 长连接

Spring Cloud Config配置中心我在学习Spring Cloud Config配置中心时理解了它体系下的配置中心的强大。实现了配置的远程管理、微服务的配置更新。Spring Cloud Config配置中心体系还是有其不足的地方。虽然它实现了配置和服务的分离。但是做不到实时的更新。需要手动触发POST …

colly源码学习

colly源码学习 colly是一个golang写的网络爬虫。它使用起来非常顺手。看了一下它的源码&#xff0c;质量也是非常好的。本文就阅读一下它的源码。 使用示例 func main() {c : colly.NewCollector()// Find and visit all linksc.OnHTML("a[href]", func(e *colly.HTM…

CV00-01-CV基础理论

目录 CV的level和CV的方向 CV的level CV研究方向 CV应用方向 CV工程方向 CV的路线 CV比较好的会议 CV的平台、框架 认识几个CV的缩写 CV的level和CV的方向 CV的level Low Level&#xff0c;图像的基本操作&#xff1b;比如&#xff0c;图像的变换、像素操作、色彩等…

flask的客户端服务端

1.首先要进行后端与前端的连接有get 和post请求 get请求是直接在网页上打出已将定义好的网址 if __name__ __main__: app.run(host"localhost",port8800)host也可以写ip地址2.在进行交互前需要提前引入 flask 模块 pip3 install Flask详细代码 1 import json2 #…

java中两个Integer类型的值相比较的问题

转载自&#xff1a; https://www.cnblogs.com/xh0102/p/5280032.html 两个Integer类型整数进行比较时&#xff0c;一定要先用intValue()方法将其转换为int数之后再进行比较&#xff0c;因为直接使用比较两个Integer会出现问题。 总结&#xff1a; 当给Integer直接赋值时&#x…

Python基础13-文件处理

目录 用内置函数open打开文件 以文本方式打开文件 只读模式r 只写模式w 追加模式a 覆盖模式 以二进制方式打开文件 以二进制方式读 以二进制方式写 open函数的newline参数 file object的方法 tell显示当前光标的位置 seek控制光标的移动 truncate切片文件 用内置…

区块链技术特点之去中心化特性

想知道更多关于区块链技术知识&#xff0c;请百度【链客区块链技术问答社区】 链客&#xff0c;有问必答&#xff01;&#xff01; 由于区块链技术去中心化的特性&#xff0c;其在我们生活中的很多重要领域&#xff08;如金融、管理&#xff09;等方面具有重要的意义。例如&…

Java8 新特性之流式数据处理

2019独角兽企业重金招聘Python工程师标准>>> 一、流式处理简介 在我接触到java8流式处理的时候&#xff0c;我的第一感觉是流式处理让集合操作变得简洁了许多&#xff0c;通常我们需要多行代码才能完成的操作&#xff0c;借助于流式处理可以在一行中实现。比如我们希…