基础篇_010_函数_其他内置函数
除了map()、filter()、reduce()之外还有许多内置函数,但是大多数都可以从函数名的字面上理解其功能。
----"a"开头的 ===》
1. abs(value): 返回value的绝对值。
2. all(iterable): 将可迭代序列中所有的值拿出来做布尔值运算,然后求逻辑与运算并返回。如果序列是空的也返回true。
print(all("123123")) # 输出:True
print(all([1, 2, ""])) # 输出:False
print(all([1, 2, 3])) # 输出:True
print(all([])) # 输出:True
print(all("")) # 输出:True
print(all("1230")) # 输出:True
print(all([1, 2, 0])) # 输出:False
print(all("0")) # 输出:True
这里有朋友就会问了: "这倒数后三个是怎么回事啊?"。这很容易解释,因为python在将他们中的元素遍历的时候并没有把他们当成数字处理,而是将他们看成了字符,然后转换成相应的utf-8的编码对应的十进制值,不为零则为True。大家不妨试试 ===》
for x in "1230":
print(bool(x)) # 输出的值都是True
3. ascii(value): 将value的ascii码返回。如果value是能由ascii码表示,则返回其本身;否则返回用"\x"、"\u"、"U"来表示 ===》
-
\xhh转义序列用于表示码点范围在U+007F~U+00FF之间的 Unicode 字符。(hh代表数字) -
\uxxxx转义序列用于表示码点范围在U+0100~U+FFFF之间的 Unicode 字符。(xx..代表数字) -
\Uxxxxxxxx转义序列用于表示码点范围在U+10000及以上的字符。(xxx...代表数字)
作者:import_hello
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
4. any(iterable): 只要可迭代序列中有一个元素的布尔值是真,那返回True。如果序列是空则返回False。
----"b"开头 ===》
1. bool(value): 返回value的bool值。这里要注意一点: 在Python中,"\0", "\000"的布尔值并不是False,而是True,它们是占位符,只有""才是False。bool值为False的有: 0, "", None, [], (), {}。
2. bytes(value, encoding = "xxx"): 以自定义的编码储存value并返回其字节形式。有以下几点需要注意:
--(1). "xxx"不能Unicode!
--(2). 当选择encoding的时候,value的类型必须用str,因为只有str类型的数据才能被编码。
--(3). 当字符串可以被ascii码表示的时候直接返回本身;否则返回十六进制表示的字节。
--(4). 可以再后面加上.decode("xxx")来解码: print(bytes("是", encoding = "utf8").decode("utf8")),输出: 是。decode()中的默认值就是python3中的utf8编码。
----"c"开头 ===》
1. chr(integer): 将ascii码值为integer的字符以字符的形式返回。eg: print(chr(97)) # 输出:a。
----"d"开头 ===》
1. dir(object): 以字符串的方式储存对象中每一个方法和属性的名字,然后存在一个列表中,返回此列表。
2. divmod(real_num, real_num): div求商,mod取余。以元组的形式返回(商, 余)。可以应用于搜索结果的分页处理。
----"g"开头 ===》
1. globals(): 函数返回一个全局变量的字典,包括所有导入的变量。
----"h"开头 ===》
1. hash(): 可hash的数据类型必须是不可变数据类型。hash有这样3个特点 ===>
--(1). 甭管你传入的参数的字符串或者数据有多长,hash之后的得到的数字长度是固定的(当然,如果传入的就是数字,结果就是本身)
--(2). 不可反推性。
print(hash("asdfadsfasdfs"))
# -1315381011667841813
# 6646911265014974642
# 7720888865356903687 .....
# 发现每次输出的结果都不同
--(3). 不变性。看起来这个性质和第2个性质相冲突,实际上,这里的不变性是指在同一个程序中执行的时候,只要传入的value值不变,那么他的hash值就不会变 ===》
print(hash("asdfadsfasdfs")) # 输出:-6881123966098222011
print(hash("asdfadsfasdfs")) # 输出:-6881123966098222011
print(hash("asdfadsfasdfs")) # 输出:-6881123966098222011
print(hash("asdfadsfasdfs")) # 输出:-6881123966098222011
那么这有什么用呢?他的作用可大了: 在网络传输的时候都是传的字符串,这时候如果没有外界的干扰,我们将文件打包整体hash的时候,它的hash值是不会变化的(下载的时候是在同一程序中进行的);但一旦有外界作出干扰,比如在文件中植入木马病毒,这时hash值将会变化,从而检测出来。我们现在来模拟一下这个过程 ===》
# 正常下载文件的时候,两者的hash值应该一样
document = "SimbaWang"
source_hash_value = hash(document)
download_hash_value = hash(document)
print("源文件和本地下载中的文件的hash值是否一样: ", source_hash_value == download_hash_value)
# 源文件和本地下载中的文件的hash值是否一样: True
# 现在突然有外界干扰,如移植病毒,两者的hash值不同了
source_hash_value = hash(document)
document = "Sim病毒baWang"
download_hash_value = hash(document)
print("源文件和本地下载中的文件的hash值是否一样: ", source_hash_value == download_hash_value)
# 输出:源文件和本地下载中的文件的hash值是否一样: False
2. help(object): 查看对象的帮助,比如输入str,返回的就是一个str对象的所有属性和方法及其解释。
----"l"开头 ===》
1. locals(): 与globals()相对,以字典的形式返回本地级别的变量。
----"o"开头 ===》
1. ord(str): 与chr()相反,传入一个字符后返回它的ascii码。
----"p"开头 ===》
1. pow(x, y, z): 返回x**y(如果只传了两个参数);返回 x**y%z(如果传了第三个参数z)。
----"r"开头 ===》
1. reversed(iterable): 取反序列,返回一个reverseiterable对象,但是不改变传入的序列。
----"s"开头 ===》
1. slice(start, end, step): 将可迭代对象切片。
my_string = "hello"
slice1 = slice(1, 4, 2) # 这就相当于[]中的三个参数
print(my_string[slice1]) # 输出:el
print(slice1.start) # 输出第一个参数:1
print(slice1.stop) # 输出第二个参数:4
print(slice1.step) # 输出第三个参数:2
2. sorted(sequence, key = ): 将一个可迭代的序列按照给定的方法(匿名方法)从小到大排序。"基础篇_010_函数_sorted()函数"
----"t"开头 ===》
1. type(): 查看传入参数的类型。
----__improt__(str) ===》
我们知道导入模块用的是import file_name,比如这样 ===》
# 在文件selfing_define.py中写入 ===》
#!/usr/bin/env python
# -*- coding: utf8 -*-
def hello_world():
print("hello world!")
# 在test.py中写入 ===》
import selfing_define
selfing_define.hello_world()
# 输出:hello world
但是大多数时候我们遇到的并不是直接导入文件,而是得到了一个文件名的字符串形式,eg: model_name = "selfing_define",这是就不能直接用import关键字了,但是天无绝人之路,贴心的Python在已经为我们想到了这些东西,给我们提供了__import__()函数,让我们能将字符串形式的文件名改成模块 ===》
model_name_str = "selfing_define"
selfing_define = __import__(model_name_str)
selfing_define.hello_world() # hello world!
这里稍作补充: import关键字导入模块的时候,回去调用OS,然后OS找到__import__()这个方法,传入文件名,这是因为我们所写的一切代码在OS底层都是字符串的形式。


浙公网安备 33010602011771号