python内置函数

 内置函数详解:https://docs.python.org/3/library/functions.html?highlight=built#ascii

abs()  # 取绝对值
dict() # 把数据转为字典
help() # 帮助
min()  # 找出最小值
max()  # 找出最大值
setattr()  # 设置属性值
bool() # 判断True or False(bool(0)、bool(Flase)、bool([]))
all()  # 可循环的数据集合每个元素bool()均为True;或者空列表也是True
any()  # 任意一个值是True即返回True
dir()  # 打印当前程序里的所有变量
hex()  # 转换为16进制数
slice()  # 提前定义切片规则
divmod()  # 传入两个变量a、b,得到a//b结果和余数a%b
sorted()  # 列表排序sorted(li)等同于li.sort()  用法:sorted(iterable, key)

ascii(2)  # 只能返回ascii码
enumerate([3,2,13,4])  # 返回列表的索引
input('dasd')
oct(10)  # 转八进制
staticmethod() # 
bin(10)  # 转二进制

open() # 文件打开
str()  # 转字符串
isinstance()
ord('a')  # 返回97,ascii码中'a'位置
chr(97)   # 返回'a',输入97位置返回ascii码对应字符
sum([1,4,5,-1,3,0])   # 计算列表求和

pow(100,2) # 返回x的y次方,10000
callable()   # 查看函数是否可以调用,还可用于判断变量是否是函数
format()

vars()  # 打印变量名和对应的值
locals()  # 打印函数的局部变量(一般在函数内运行)
globals() # 打印全局变量

repr()  # 显示形式变为字符串
compile() # 编译代码
complex() # 将一个数变为复数
'''
>>> complex(3,5)
(3,5j)
'''

round(1.2344434,2)  # 指定保留几位小数  输出1.23
# delattr, hasattr, getattr, setattr  # 面向对象中应用
hash()   # 把一个字符串变为一个数字
memoryview() # 大数据复制时内存映射
set()  # 把一个列表变为集合
'''
>>> set([12,5,1,7,9])
{1, 5, 7, 9, 12}
'''

几个***钻古怪的内置方法用法提醒

1、compile()编译字符串为字节代码

f = open("print.py")
data =compile(f.read(),'','exec')  # 参数:source(字符串对象), filename(代码文件名), mode(编译代码种类exec\eval\single)
exec(data)

>>> str = "3 * 4 + 5"
>>> a = compile(str,'','eval')
>>> eval(a)
17

2、items()字典转化数组

>>> d = {}
>>> for i in range(10):
...        d[i] = i - 50
...
>>> print(d)
{0: -50, 1: -49, 2: -48, 3: -47, 4: -46, 5: -45, 6: -44, 7: -43, 8: -42, 9: -41}
>>> d.items()
dict_items([(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41)])
>>> sorted(d.items())
[(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41)]
>>> sorted(d.items(), key = lambda x:x[1])
[(0, -50), (1, -49), (2, -48), (3, -47), (4, -46), (5, -45), (6, -44), (7, -43), (8, -42), (9, -41)]
>>> sorted(d.items(), key = lambda x:x[1], reverse=True)
[(9, -41), (8, -42), (7, -43), (6, -44), (5, -45), (4, -46), (3, -47), (2, -48), (1, -49), (0, -50)]

3、字符串转代码

# eval()  # 字符串转代码(只能处理单行代码)(可以拿到返回值)
f = "1+3/2"
eval(f)
# 输出结果:2.5
eval('print("hello world")')
# 输出结果:hello world

# exec() # 字符串转代码(可以解析多行代码)(不能拿到返回值)
code = "\nif 3>5:\n print('3 bigger than 5')\nelse:\n print('dddd')\n\n"
exec(code)
# 输出结果:dddd

# eval和exec()返回值验证
code = '''
def foo():
    print('run foo')
    return 1234
foo()

res = eval("1+3+3")
res2 = exec("1+3+3")
res3 = exec(code)
print('res',res,res2,res3)
# 输出结果:res 7 None None

4、字符串转bytearray

# bytearray() 将字符串转为bytearray,完成修改后,decode()后,可在原内存地址修改字符串

>>> s = 'abcd路飞'
>>> s
'abcd路飞'
>>> s = s.encode('utf-8')
>>> s
b'abcd\xe8\xb7\xaf\xe9\xa3\x9e'
>>> s = bytearray(s)
>>> s
bytearray(b'abcd\xe8\xb7\xaf\xe9\xa3\x9e')
>>> s[4]
232
>>> s[4]=233
>>> s
bytearray(b'abcd\xe9\xb7\xaf\xe9\xa3\x9e')
>>> s.decode()
'abcd鷯飞'
>>> id(s)   # 修改内部元素,s指向的内存地址并不会改变
4352883880

 5、map()对序列做映射

map(lambda x:x*x , [1,2,3,4,5])    # 根据提供的函数对指定序列做映射

>>> list(map(lambda x:x*x , [1,2,3,4,5]))
[1, 4, 9, 16, 25]

>>>def square(x) :            # 计算平方数
...     return x ** 2
... 
>>> map(square, [1,2,3,4,5])   # 计算列表各个元素的平方
[1, 4, 9, 16, 25]
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])  # 使用 lambda 匿名函数
[1, 4, 9, 16, 25]
 
# 提供了两个列表,对相同位置的列表数据进行相加
>>> map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
[3, 7, 11, 15, 19]

6、filter()条件过滤

filter() # 将符合条件的值过滤出来
# filter(function, iterable)
>>> list(filter(lambda x: x>3, [1,2,3,4,5]))
[4, 5]

import math
def is_sqr(x):
    return math.sqrt(x) % 1 == 0
 
newlist = filter(is_sqr, range(1, 101))
print(newlist)
"""
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
"""

7、frozenset()不可变集合

>>> s = {12,3,4,4}
>>> s.discard(3)  # 集合删除元素,没有也不会报错
>>> s
{12,4}
>>> s = frozenset(s)
>>> s.   # 已经没有discard方法可以调用

8、zip()两个数组组成元组

zip()  # 可将两个数组一一对应组成元祖

>>> a = [1,2,3,45,6]
>>> b = ['a','b','c']
>>> zip(a)
<zip object at 0x1034fe408>
>>> list(zip(a,b))
[(1, 'a'), (2, 'b'), (3, 'c')]

9、print()带参数的打印

>>> s = 'hey, my name is alex\n, from shandong'
>>> print('haifeng','gangsf',sep='<-')
haifeng<-gangsf

msg = "回到最初的起点"
f = open("print_tofile","w")
print(msg,"记忆里青涩的脸",sep="|",end="",file=f)
print(msg,"已经不忍直视了",sep="|",end="",file=f)
"""
生成print_tofile文件:回到最初的起点|记忆里青涩的脸回到最初的起点|已经不忍直视了
"""

10、slice()切片

slice()  # 实现切片对象,主要用在切片操作函数里的参数传递
# 例子:slice('start', 'stop', 'step')  # 起始位置、结束位置、间距

a = range(20)
pattern = slice(3, 8, 2) # 3到8,间隔两个数
for i in a[pattern]:  # 等于a[3:8:2]
    print(i)

11、reduce()对参数序列中元素进行累积

  reduce() 函数将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce 中的函数 function(有两个参数)先对集合中的第 1、2 个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。

reduce() 函数语法:
reduce(function, iterable[, initializer])

参数
    function -- 函数,有两个参数
    iterable -- 可迭代对象
    initializer -- 可选,初始参数

   返回值:函数计算结果

>>>def add(x, y) :            # 两数相加
...     return x + y
... 
>>> reduce(add, [1,2,3,4,5])   # 计算列表和:1+2+3+4+5
15
>>> reduce(lambda x, y: x+y, [1,2,3,4,5])  # 使用 lambda 匿名函数
15

 

posted @ 2018-03-18 12:00  休耕  阅读(341)  评论(0编辑  收藏  举报