day11
今日内容
-
函数中高级(闭包/高阶函数)
-
内置函数
-
内置模块(.py文件)
内容回顾
-
函数的基础概念
-
函数基本结构
-
参数
- 定义函数时
- def func(a1,a2):pass
- def func(a1,a2=None):pass
- def func(*args,**kwargs):pass
- 调用函数
- 位置参数在前,关键字参数在后
- 定义函数时
-
函数小高级
- 函数可以做变量
- 函数可以做参数
- Python中以函数为作用域
- lambda表达式(匿名函数)
- 内置函数
-
内容详细
-
函数中高级
1.1 函数可以做返回值
函数是由谁创建的,作用域就从他那开始
# 函数当返回值 def func(): print(123) def bar(): return func v = bar() v() print(v) # 123 <function func at 0x00000273959B1EA0>
name = 'llk' def bar(): name = 'hkq' def inner(): print(name) return inner v = bar() v() print(v) # hkq <function bar.<locals>.inner at 0x0000026B459CD488>
name = 'llk' def bar(name): def inner(): print(name) return inner v1 = bar('hkq') # {name = hkq,inner} # 闭包,为函数创建一块区域(内部变量供自己使用),提供数据 v2 = bar('kq') # {name = kq,inner} v1() v2() print(v1) print(v2) ''' hkq kq <function bar.<locals>.inner at 0x000001368AEAD488> <function bar.<locals>.inner at 0x000001368AEAD510> '''
# 练习1 name = 'llk' def base(): print(name) def func(): name = 'hkq' base() func() # llk
# 闭包 info = [] def func(i): def inner(): print(i) return inner for item in range(10): info.append(func(item)) info[0]() info[1]() info[4]()
1.2 闭包
def func(name):
def inner():
print(name)
return inner
v1 = func('llk')
v1()
v2 = func('hkq')
v2()
1.3 高阶函数
- 对函数进行赋值
- 把函数当作参数传递
- 把函数当作返回值
2.内置函数
-
编码相关
-
chr,将十进制数字转换成Unicode编码中对应的字符串
v = chr(65) print(v) # A
-
ord,根据字符在unicode编码中找到其对应的十进制
a = ord('A') print(a) # 65
# 生成随机验证码 import random def get_random_code(length=6): data = [] for i in range(length): v = random.randint(65,90) data.append(chr(v)) return ''.join(data) code = get_random_code() print(code)
-
导入模块
import random v = random.randint(65,90)
-
map
循环每个元素(第二个参数),然后让每个元素执行函数(第一个参数),将每个函数执行的结果保存到新的列表中,并返回
# map函数 v1 = [11,22,33] # 第一个参数必须是一个函数 # 第二个参数必须是可迭代的类型(可被for循环) def func(arg): return arg + 100 result = map(func,v1) # 将函数的返回值添加到空列表[] print(list(result)) result = map(lambda x :x + 100,v1) print(list(result))
-
-
filter
过滤出想要的数据
# filter()函数 v2 = [11,22,'A','llk'] def func(x): if type(x) == int: return True return False result = filter(func,v2) print(list(result)) # [11,22]
-
reduce
通过函数自定义规则,得到一个结果
# reduce()函数 import functools v3 = [11,22,33] def func(x,y): return x+y result = functools.reduce(func,v3) print(result) # 66
-
-
模块
将指定的字符串进行加密
import hashlib def get_md5(data): obj = hashlib.md5() obj.update(data.encode('utf-8')) result = obj.hexdigest() return result va = get_md5('123') print(va)
加盐
import hashlib def get_md5(data): obj = hashlib.md5('skdsdhsdh'.encode('utf-8')) obj.update(data.encode('utf-8')) result = obj.hexdigest() return result va = get_md5('123') print(va)
密码不显示
import getpass pwd = getpass.getpass('请输入密码: ') if pwd == '123': print('输入正确!')