博客14

时间:2019-09-25
本文章向大家介绍博客14,主要包括博客14使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

函数进阶三

1. 匿名函数

1. 什么是匿名函数

匿名函数就是没有名字的函数,没法调用,他只能和某些方法联合起来使用

2. 匿名函数的语法

lambda 参数:返回值
#也可以通过赋值,让它变为有名函数
f = lambda x,y:x+y
res = f()
print(res)

3. 能和匿名函数联用的一些方法

#### (1)max 返回最大值

  • 使用方法:max(iterable,key = function)
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000,
    'z': 1000
}
def func(name):  # nick/jason/tank/sean/z
    return salary_dict[name]  # 3000/100000/5000/2000/1000

res = max(salary_dict, key=func)  # 默认按key的首字母
res = max(salary_dict, key=lambda name: salary_dict[name])  # 默认key的首字母
  • key=function默认做的事情
    # 1. 循环遍历salary_dict,会取到所有的key值
    # 2. 然后把所有的key值依次丢入function中,返回薪资
    # 3. 通过返回的薪资排序,得到最大值
    
    
    #下面的方法中key同理

(2)min 返回最小值

  • 使用方法:min(iterable,key = function)
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000,
    'z': 1000
}
def func(name):  # nick/jason/tank/sean/z
    return salary_dict[name]  # 3000/100000/5000/2000/1000

res = min(salary_dict, key=lambda name: salary_dict[name])
print(res)

(3)fileter 返回筛选值

  • 使用方法:fileter(function,iterable)
  • fileter方法中允许匿名函数使用条件
def function(item):  # 1/2/3/4
    if item < 5:
       return True
   else:
       return False

res = filter(function, [1, 2, 3, 4])
res = filter(lambda item: item > 2, [1, 2, 3, 4])
print(res)  # 迭代器
print(list(res))

#例二 
salary_dict = {
    'nick': 3000,
    'jason': 100000,
    'tank': 5000,
    'sean': 2000,
    'z': 1000
}

res = filter(lambda item: salary_dict[item] > 3000, salary_dict)
print(list(res))

(4)map 返回映射

  • 使用方法:map(function,iterable)
def function1(item):
    return item + 2

res = map(function1, [1, 2, 3, ])
print(res) # <map object at 0x00000000029C6E80>
print(list(res)) # [3, 4, 5]

(5)sorted 排序并生成一个新的列表

  • 使用方法:sorted(iterable,key = function,reverse = ?)

    def function2(item):
      return salary_dict[item]

salary_dict = {
'nick': 3000,
'jason': 100000,
'tank': 5000,
'sean': 2000,
'z': 1000
}

res = sorted([2,3,4,1,0,5],key=function2,reverse=True)
res = sorted(salary_dict, key=function2, reverse=True)
print(list(res))
```

2. python解释器内置方法

方法名 使用方法 实例
bytes 转化为二进制 res = bytes('中国', encoding='utf8') # b'\xe4\xb8\xad\xe5\x9b\xbd'
chr/ord 将字母数字互转 print(chr(97))print(ord('a')) # a 97
divmod 取整和取余 print(divmod(10, 4)) # (2,2)
enumerate 同时取索引和值 lt = [1, 2, 3] for ind, val in enumerate(lt): print(ind, val)
eval 把字符串的引号去掉,留下来的是什么就是什么 s = '"abc"'print(type(eval(s)), eval(s)) #<class 'str'> abc
hash 求哈希值 print(hash(123123)) #123123
abs 绝对值 print(abs(-1)) # 1
all 可迭代对象内的元素全部为True则为True print(all([1, 2, 3, 3])) #True
any 可迭代对象内的元素有一个为True则为True print(any([0, 1, ])) #True
bin/oct/hex 转化为2/8/16进制 print(bin(123)) # 0b1111011
dir 列出模块(库)的所有方法 import time print(dir(time))
frozenset 不可变化的集合,类似于元组 s = frozenset({1,2,3}) #frozenset({1,2,3})
globals/locals 列出所有全局变量/列出所有当前位置的变量 print(globals()) / print(locals())
pow print(pow(3,2)) # 9
slice 切片 s = slice(1, 5, 2) lt = [1, 2, 3, 4, 5, 6, 7] print(lt[s])
sum 求和sum(iterable) sum([1,2,3]) # 6
__import__ 通过字符串导入模块 time = __import__('time')

3. 异常处理

  • 语法:

    try:
        code1
    except Exception as e:
        print(e) #可加可不加
        code2
    finally:   # 可加可不加
        code3
  • 就是当程序报了错,进行处理

  • 报错之后,不执行下面的代码

  • 异常捕捉只能捕捉逻辑错误

  • finally 方法的作用是无论你报不报错,都执行其缩进下的代码

    dic = {'a': 1}
    try:
        print(dic['b'])  # KeyError
        1 / int(num)  # 报错之后,不运行下面的代码
    
    except Exception as e:  # 万能异常,只要有错误,就捕捉
        print(e)  # e存储的是错误的内容,而不是错误的类型
        print('傻逼,不知道什么错误')
    finally:
        print('asdasf')
  • assert +条件 ( 断言 +条件) 现在这种方法已经被淘汰

    条件成立不报错,不成立报错

    num = input('num:')
    assert 1 == int(num)  
  • raise 主动报错误 (就是主动报错,没什么用处)

    x = 1
    raise(x = 1) # 报错

原文地址:https://www.cnblogs.com/Mcoming/p/11585111.html