PythonDay14(内置函数,匿名函数(lambda表达式))内置函数截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是pytho
Python Day 14 (内置函数,匿名函数(lambda表达式))
内置函数
截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。
|
|
内置函数 |
|
|
abs() |
dict() |
help() |
min() |
setattr() |
all() |
dir() |
hex() |
next() |
slice() |
any() |
divmod() |
id() |
object() |
sorted() |
ascii() |
enumerate() |
input() |
oct() |
staticmethod() |
bin() |
eval() |
int() |
open() |
str() |
bool() |
exec() |
isinstance() |
ord() |
sum() |
bytearray() |
filter() |
issubclass() |
pow() |
super() |
bytes() |
float() |
iter() |
print() |
tuple() |
callable() |
format() |
len() |
property() |
type() |
chr() |
frozenset() |
list() |
range() |
vars() |
classmethod() |
getattr() |
locals() |
repr() |
zip() |
compile() |
globals() |
map() |
reversed() |
__import__() |
complex() |
hasattr() |
max() |
round() |
|
delattr() |
hash() |
memoryview() |
set() |
|
1.1 作用域相关
** locals():函数会以字典的类型返回当前位置的全部局部变量。
** globals():函数以字典的类型返回全部全局变量。
1.2 其他相关
1.2.1 执行相关
*** eval() 去除字符串的引号,返回对应内部的值。
s = '{"a":1,"b":3}'
dic = eval(s)
print(dic,type(dic))
print(eval('2 + 2'))
print(eval('print(666)'))
==============
{'a': 1, 'b': 3}
4
666
None
*** exec() 执行字符串内部的代码。
print(exec('1 + 1'))
==============
None #exec 没有返回值,主要用于直接打印结果,或交互型。
ret = '''
name = input('请输入名字:').strip()
if name == 'alex':
print(666)
'''
exec(ret)
compile() 将字符串类型的代码编译。代码对象能够通过exec语句来执行或者eval()进行求值。
'''
参数说明:
1. 参数source:字符串或者AST(Abstract Syntax Trees)对象。即需要动态执行的代码段。
2. 参数 filename:代码文件名称,如果不是从文件读取代码则传递一些可辨认的值。当传入了source参数时,filename参数传入空字符即可。
3. 参数model:指定编译代码的种类,可以指定为 ‘exec’,’eval’,’single’。当source中包含流程语句时,model应指定为‘exec’;当source中只包含一个简单的求值表达式,model应指定为‘eval’;当source中包含了交互式命令语句,model应指定为'single'。
'''
>>> #流程语句使用exec
>>> code1 = 'for i in range(0,10): print (i)'
>>> compile1 = compile(code1,'','exec')
>>> exec (compile1)
>>> #简单求值表达式用eval
>>> code2 = '1 + 2 + 3 + 4'
>>> compile2 = compile(code2,'','eval')
>>> eval(compile2)
>>> #交互语句用single
>>> code3 = 'name = input("please input your name:")'
>>> compile3 = compile(code3,'','single')
>>> name #执行前name变量不存在
Traceback (most recent call last):
File "", line 1, in
name
NameError: name 'name' is not defined
>>> exec(compile3) #执行时显示交互命令,提示输入
please input your name:'pythoner'
>>> name #执行后name变量有值
"'pythoner'"
1.2.2 输入输出相关
input() 交互输入信息,数据类型为字符串。
print() 打印信息。
1.2.3 内存相关
* hash() 将不可变的数据通过hash算法转化成hash值,数字类型hash值是数字本身,其他类型hash值不固定。
print(hash('name'))
print(hash('age'))
print(hash((1, 2, 3,)))
id()
1.2.4 文件操作相关
***(open() 函数用于打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。
1.2.5 模块相关
__import__: 函数用于动态加载类和函数
1.2.6 帮助
* help() 函数用于查看函数或模块用途的详细说明。
1.2.7 调用相关
*** callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
def func1():
print(666)
age = 16
print(callable('name')) #字符串不是可调用的对象
print(callable(age)) #变量名不是可调用的对象
print(callable(func1)) #True
1.2.8 查看内置属性
** dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。
1.3 迭代器生成器相关
*** range()
*** iter()
l = [1, 2, 3, 4, 5]
l_obj = l.__iter__()
l_obj = iter(l)
效果一致 iter()调用__iter__()
*** next()
print(l_obj.__next__())
print(next(l_obj))
1.4 数字相关
1.4.1 数据类型
bool() 用于将给定参数转换为布尔类型,如果没有参数,返回 False。
int() 函数用于将一个字符串或数字转换为整型,不能将内部为浮点数的字符串转换为整数。
float():函数用于将整数和字符串转换成浮点数。
complex:函数用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数,如果第一个参数为字符串,则不需要指定第二个参数。
1.4.2 进制转换
bin:将十进制转换成二进制并返回。
print(bin(100))
0b1100100
oct:将十进制转化成八进制字符串并返回。
hex:将十进制转化成十六进制字符串并返回。
1.4.3 数学运算
*** abs() 函数返回数字的绝对值。
*** divmod() 计算除数与被除数的结果,返回一个包含商和余数的元组(a // b, a % b)。
print(divmod(7, 3))
(2, 1)
** round() 保留浮点数的小数位数,默认保留整数。
print(round(1.234,2))
1.23
*pow():求x**y次幂。(三个参数为x**y的结果对z取余)
print(pow(2, 3)) # 2的三次幂 8
print(pow(2, 3, 3)) # 2的三次幂对3取余数 2
***sum():对可迭代对象进行求和计算(可设置初始值)。
print(sum([1, 2, 3, 4])) #10
print(sum([1, 2, 3, 4], 100)) #110
*** min():返回可迭代对象的最小值(可加key,key为函数名,通过函数的规则,返回最小值)。
print(min([1, 3, 5, 7, -4])) # -4
print(min([1, 3, 5, 7, -4], key=abs)) # 1
*** max(): 返回可迭代对象的最大值(可加key,key为函数名,通过函数的规则,返回最大值)。
print(max([1, 3, 5, 7, -4])) #7
print(max([1, 3, 5, 7, -9], key=abs)) #-9
1.5 数据结构相关
1.5.1 列表和元组
list():将一个可迭代对象转化成列表(如果是字典,默认将key作为列表的元素)。
l1 = list({'name':'alex','age':1000}) #只取键
print(l1)
['name', 'age']
tuple():将一个可迭代对象转化成元祖(如果是字典,默认将key作为元祖的元素)。
1.5.2 相关内置函数
*** reversed():将一个序列翻转,并返回此翻转序列的迭代器。
l1 = [11, 22, 33, 44, 77, 66]
l_obj = reversed(l1)
for i in l_obj:
print(i)
66
77
44
33
22
11
slice():构造一个切片对象,用于列表的切片。
l1 = [11, 22, 33, 44, 77, 66]
l2 = [111, 222, 333, 444, 777, 666]
print(l1[1::2])
rule = slice(1, len(l2), 2) #重复切片动作,使用同一规则时使用slice
print(l2[rule])
1.6 字符串相关
str():将数据转化成字符串。
format:与具体数据相关,用于计算各种小数,精算等。
print(format('test', '<20')) # 左对齐
print(format('test', '>20')) # 右对齐
print(format('test', '^20')) # 居中
test
test
test
*** bytes:str---> bytes 与 str.encode 相同
s1 = 'alex'
b1 = s1.encode('utf-8')
b2 = bytes(s1,encoding='utf-8')
print(b1)
print(b2)
b'alex'
b'alex'
bytearray()
ret = bytearray('alex', encoding='utf-8') # 类比:[97,103,....]
print(id(ret))
print(ret) # bytearray(b'alex')
print(ret[0])
ret[0] = 65
print(ret)
print(id(ret))
memoryview() 分字节去转换成str
b1 = bytes('你好',encoding='utf-8')
print(b1) #b'\xe4\xbd\xa0\xe5\xa5\xbd'
ret = memoryview(b1)
print(len(ret)) #6
print(ret) #
print(bytes(ret[:3]).decode('utf-8')) #你
print(bytes(ret[3:]).decode('utf-8')) #好
ord():输入字符找该字符编码的位置
print(ord('a')) #97
print(ord('中')) # unicode 20013
chr():输入位置数字找出期对应的字符 常用范围(大写字母:65-90 A-Z) (小写字母:96-122) (数字:48-57)
33 !
34 "
35 #
36 $
37 %
38 &
39 '
40 (
41 )
42 *
43 +
44 ,
45 -
46 .
47 /
48 0
49 1
50 2
51 3
52 4
53 5
54 6
55 7
56 8
57 9
58 :
59 ;
60 <
61 =
62 >
63 ?
64 @
65 A
66 B
67 C
68 D
69 E
70 F
71 G
72 H
73 I
74 J
75 K
76 L
77 M
78 N
79 O
80 P
81 Q
82 R
83 S
84 T
85 U
86 V
87 W
88 X
89 Y
90 Z
91 [
92 \
93 ]
94 ^
95 _
96 `
97 a
98 b
99 c
100 d
101 e
102 f
103 g
104 h
105 i
106 j
107 k
108 l
109 m
110 n
111 o
112 p
113 q
114 r
115 s
116 t
117 u
118 v
119 w
120 x
121 y
122 z
123 {
124 |
125 }
126 ~
View Code
print(chr(65)) #A
print(chr(20013)) # unicode 中
ascii:是ascii码中的返回该值,不是就返回/u...+16进制
print(ascii('a')) #'a'
print(ascii(1)) # 1
print(ascii('中')) # '\u4e2d'
*** repr:返回一个对象的string形式(原形毕露)。
msg = '小数%f' %(1.234)
print(msg)
msg = '姓名:%r' % ( 'alex')
print(msg)
print(repr('{"name":"alex"}'))
print('{"name":"alex"}')
小数1.234000
姓名:'alex'
'{"name":"alex"}'
{"name":"alex"}
1.7 数据集合(3)
dict() 创建一个字典
dic = dict({'name': 'alex'})
print(dic)
{'name': 'alex'}
set() 创建一个集合
set1 = set(('alex','wusir'))
print(set1)
frozenset():返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
1.8 相关内置函数
*** len() 返回一个对象中元素的个数
sorted():对所有可迭代的对象进行排序操作。
print(sorted([1, 2, 3, 4, 5, -6]))
print(sorted([1, 2, 3, 4, 5, -6], key=abs))
[-6, 1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, -6]
L = [('a', 1), ('c', 2), ('d', 4), ('b', 3), ]
print(sorted(L))
def func1(x):
return x[1]
L = [('a', 1), ('c', 2), ('d', 4),('b', 3), ]
print(sorted(L, key=func1))
*all:可迭代对象中,全都是True才是True
print(all([1, 'alex', True, (1,2,3)])) # True
print(all([0, 'alex', True, (1,2,3)])) #False
*any:可迭代对象中,有一个True 就是True
print(any([0, '', False, (1,2,3)])) # True
print(any([0, '', False, ()])) #False
***zip 拉链方法 返回的是一个迭代器
l1 = [1, 2, 3, 4]
tu1 = ('老男孩', 'alex', 'wusir')
l2 = ['*', '**', '***', "****"]
obj = zip(l1,tu1,l2)
for i in obj:
print(i)
(1, '老男孩', '*')
(2, 'alex', '**')
(3, 'wusir', '***')
***map: 循环模式
def func2(x):
return x**2
obj = map(func2, [1, 2, 3, 4])
for i in obj:
print(i)
print((i**2 for i in [1, 2, 3, 4]))
def func2(x, y):
return x + y
obj1 = map(func2, [1, 2, 3, 4, 6], (2, 3, 4, 5))
for i in obj1:
print(i)
***filter 筛选模式
def func(x):
return x % 2 == 0
ret = filter(func,[1, 2, 3, 4, 5, 6, 7])
print(ret) #
for i in ret:
print(i)
2
4
6
print((i for i in [1, 2, 3, 4, 5, 6, 7] if i % 2 == 0)) # at 0x0000021C5FA90F68>
***lambda 匿名函数 一句话函数
ret = lambda x, y: x+y
函数名 = lambda 参数 :返回值
#参数可以有多个,用逗号隔开
#匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值
#返回值和正常的函数一样可以是任意数据类型