思维导图: https://www.processon.com/mindmap/5c10cb5ee4b0090a2c9db92f

 1. 匿名函数统一的名字是:<lambda>

 使用场景: 配合着sorted, map, filter 一起使用

# fn = lambda a, b : a + b # 定义一个很简单的函数. 复杂的函数不要用lambda
# ret = fn(3, 5)
# print(ret)
# print(func)
# print(fn)

2. sorted 排序函数.  让你自己去定义排序的规则

  执行流程:
    把可迭代对象中的每一项拿出来, 作为参数传递给后面key函数.
    函数返回数字. 根据数字进行排序

lst = [11,5,36,1,27,58]

# s = sorted(lst) # 默认从小到大排序.
# print(s)

# lst = ["胡一菲", "张伟", "关谷神奇", "曾小贤吕小布", "诺澜"]
# # 按照字符串长度排序
# def func(s):
#     return len(s) # 返回长度

lst = [11,5,36,1,27,58]

# s = sorted(lst) # 默认从小到大排序.
# print(s)

# lst = ["胡一菲", "张伟", "关谷神奇", "曾小贤吕小布", "诺澜"]
# # 按照字符串长度排序
# def func(s):
#     return len(s) # 返回长度

3. filter 过滤

  把可迭代对象打开. 把内部元素一个一个的传递给前面的函数. 由这个函数决定此项是否保留

 lst = ["张无忌", "张翠山", "范冰冰", "金毛狮王", "李冰冰"]
#
# # 过滤掉姓张的人
# # 把可迭代对象打开. 把内部元素一个一个的传递给前面的函数. 由这个函数决定此项是否保留
# f = filter(lambda name : not name.startswith("张"), lst)
#
# print("__iter__" in dir(f)) # 可迭代对象
# for el in f:
#     print(el)

4. map()  映射函数

lst = ["篮球球", "打打台球", "唱歌", "爬慌山", ""]
#
# m = map(lambda s: "爱好:"+s , lst)
#
# print(list(m))

# lst = [1,5,78,12,16] # 计算每个数字的平方
# print([i **2 for i in lst])
#
# m = map(lambda i: i ** 2, lst)
# print(list(m))

5. eval 是把字符串类型的数据作为代码进行执行

# eval 是把字符串类型的数据作为代码进行执行
# s = "18+2"
# ret = eval(s) # 执行字符串类型的代码
# print(ret)

# code = input("请输入你要执行的代码:")
# ret = eval(code)
# print(ret)


# s = "{'name':'alex', 'age':18, 'isMan':False}" # 字符串
# # 把字符串类型的代码还原回字典, 列表, 元组
# ret = eval(s)  # 侧重的有返回值
# print(ret)
# print(type(ret))

6. exec execute 执行字符串类型的代码, 不能太长. 不能太乱

# code = input("请输入你要执行的代码")
# exec(code) # 没有返回值. 想要返回值用eval
# print(a)   # pycharm报错不一定准

 

7.compile 编译: 把你要执行的代码先预编译. 通过exec和eval可以执行我们的代码

code = '''
for i in range(10):
    if i % 2 == 0:
        print(i)
'''


c = compile(code, "", "exec") # 预加载代码
# exec
exec(c) # 运行代码

# 可以使用complie写一个编程大赛.

 

内容来源于网络如有侵权请私信删除
你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!