Python匿名函数和内置函数

143 阅读2分钟
关键词:globals; eval; callable; dir; ord/chr; repr; reversed/reverse; lambda; filter; map; zip; min; max; sorted/sort

1. locals和globals

函数外部定义变量为全局变量, 函数内部定义变量为局部变量。函数内部修改外部已经定义好的全局变量,或者在函数内部定义全局变量的时候,用globals Num; Num=xxx

2. eval

从文件里读出来的不要直接用eval,从用户输入的不要用eval,从网络上获取的不要直接用eval,不安全!可运行!

3. callable:

callable可以被调用,名字后面可以加(),检测某个名字可不可以被调用的!

4. dir

查看可以调用哪些方法。

5. ord/chr

print(ord('a'))
print(chr(97))

6. repr

查看变量类型的时候,便于区分肉眼

print(repr('123'))
print(123)

7. reversed/reverse

reversed(l),l本身没有变,而l.reverse(),l本身变了。

8. filter(func, list1)

将list1中的每一个值传到func函数中。filter是一个生成器函数,返回的是一个迭代器。

list1 = [1,2,3,4,45,6]
def func(n):
    print(n)
filter(func, list1)

8. map

生成器函数,生成一个迭代器

lst = [12,3,4,5]
ret = map(lambda n: n*2, lst)
for i in ret:
    print(i)

9. zip

拉链方法,也是个迭代器,直接打印为内存地址

a = [1,2,3,4]
b = [5,6,7,8]
ret = zip(a, b)
for i in ret:
    print(i)
    
# zip打开方式---均生成迭代器
[*zip(a, b)]---list
list(zip(a, b))--list
dict(zip(a, b))--dict
# 特别的,当a、b为data['node1']和data['node2']时,可以直接放里面

10. min([], key=None)

ret = min([1,2,3,-4,5], key=abs)

dic = {'a':1, 'b':2} 
ret = min(dic, key=lambda k:dic[k])
print(ret)

11. sorted

ret = sorted(l, reverse=True, key=abs)
ret = sorted(l, reverse=False, key=lambda n:n%2==0)
# 练习题:
tup1 = (('a', 'b'))
tup2 = (('c', 'd'))
ret = zip(tup1, tup2)
iterator = map(lambda tu:{tu[0]:tu[1]}, ret)
print(list(iterator))