python基础--匿名函数、内置函数

匿名函数

没有名字的函数,没有名字,所以没法调用,只能和某些方法连用

匿名函数的语法

lambda 参数:返回值

如果你真的要用,也可以用,但是得给他一个名分,即变成有名函数

f = lambda x, y: x * y
res = f(1, 2)
print(res)

与max/min/filter/map/sorted联用

max 返回最大值

res = max([1, 2, 3, 4, 5])
print(res)
res = max(1, 2, 3, 4, 5, 6, )
print(res)

取出字典中最大值对应的key

salary_dict = {'nick': 3000,'jason': 100000,'tank': 5000,'sean': 2000,'z': 1000}
def func(name):  # 定义一个函数,用于取字典里的值
	return salary_dict[name]  # 取出所有的值3000/100000/5000/2000/1000
	res = max(salary_dict, key=func)  # 默认key的首字母
print(res)

将函数匿名,写成如下格式结果一样:
res = max(salary_dict, key=lambda name: salary_dict[name])  # 默认key的首字母
print(res)

key=func默认做的事情
1. 循环遍历salary_dict,会取到所有的key值
2. 然后把所有的key值依次丢入func中,返回薪资
3. 通过返回的薪资排序,得到最大值

min返回最小值

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

fileter ---> 筛选

def function(item):  # 1/2/3/4
	if item < 3:
		return True
	else:
		return False
res = filter(function, [1, 2, 3, 4])
print(res)	# 打印结果为:<filter object at 0x000001C87173B7F0>

将这个函数匿名,写成以下格式:
res = filter(lambda item: item > 2, [1, 2, 3, 4])
print(res)  # 打印结果为: <filter object at 0x000001C87173B7F0>
print(list(res))	# 打印结果为: [3, 4]

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))

map --> 映射

def function(item):
    return item + 2

res = map(function,[1,2,3,4])
print(res)
print(list(res))

res = map(lambda item: item + 2,[1,2,3,4])
print(res)
print(list(res))

sorted --> 排序

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

def function2(item):
	return salary_dict[item]
res = sorted(salary_dict, key=function2, reverse=True)
print(list(res))

res = sorted(salary_dict, key=function2, reverse=True)

有兴趣的可以看一看

def sorted(iter, key=None, reverse=None):
iter.sort()

if key:
    # key 是一个函数对象
    lt = []
    lt2 = []
    for i in iter:
        res = key(i)
        lt.append(res)
        lt2.append(i)
    lt.sort()

    lt3 = []
    for i in lt:
        for j in lt2:
            if j[1] == i:
                lt3.append(j)

    if reverse:
        lt3.reverse()
    return lt3

if reverse:
    iter.reverse()
return iter

salary_list = list(salary_dict.items())
print(salary_list) # [('nick', 3000), ('jason', 100000), ('tank', 5000), ('sean', 2000), ('z', 1000)]
print(sorted(salary_list, key=lambda i: i[1],
reverse=None)) # [('sean', 2000), ('nick', 3000), ('tank', 5000), ('jason', 100000)]

python解释器的内置方法

一共有68种

Built-in Functions
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()

异常处理: 报了错,进行处理

num = input('请输入数字:')
try:
	1 / int(num)  # 报错之后,不运行下面的代码
except ZeroDivisionError:	
print('傻逼,不能输入0')

以上代码处理了除数为0这一种错误,当可能有多个错误时,我们可以进行如下操作:

try:
	"""可能出错的代码段"""
    
except Exception as e:  # 万能异常,只要有错误,就捕捉
	print(e)  # 错误的描述信息
posted @ 2019-09-25 19:41  AllenCH  阅读(232)  评论(0编辑  收藏  举报