day12常用需要记住_函数做返回值_内置函数_模块


常用需要记住

  • str

    • strip,返回字符串

    • split,返回列表

    • replace,返回字符串

    • upper,返回字符串

    • lower,返回字符串

    • join,返回字符串

  • list

    • append,无

    • insert,无

    • pop,返回要删除的数据

    • remove,无

    • find/index,返回索引的位置

  • dict

    • get

    • keys

    • values

    • items

  1. 函数内部的数据是否会混乱。

    • 函数内部执行相互之间不会混乱

    • 执行完毕+内部元素不被其他人使用=>销毁

函数可以做返回值

def func():
   print(123)
def dar():
   return func
v =dar()
print(v())
n = "nihao"
def func():
   print(n)
def dar():
   return func
v =dar()
print(v())
name = "oldboy"
def bar():
   name = "alex"
   def inner():
       print(name)
   return inner
v = dar()
v()
name = "oldboy"
def bar(name):
   def inner():
       print(name)
   return inner
v1 = dar("alex")
v2 = dar("alex")
v1()
v2()
#闭包是一个函数里面含有在用的变量
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]()
?

总结

  • 函数执行的流程分析(函数到底是谁创建的?)

  • 闭包概念:为函数创建一块区域并为其维护自己数据,以后执行时方便调用。[应用场景:装饰器/SQLAIchemy源码]

内置函数

  • 编码相关

    • chr,将十进制数字转换成Unicode编码中的对应字符串。

      v = chr(65)
      print(v)
    • ord,根据字符在Unicode编码中找到其对应的十进制。

      v = ord("中")
      print(v)
    • 应用,导入random,模块调用randint生成随机数字

      import random
      v = random.randint(65,90)
      print(v)

      map,循环每个元素(第二个参数),然后让每个元素执行函数(第一个参数),将每个函数执行的结果保存到新的列表中,并返回。

    • 第一个参数:必须是一个函数

    • 第二个参数:(可以被for循环)

      map 随机法
      v1[11,22,33,44]
      def func(arg):
      return arg + 100
      result = map(func,v1)#然后将函数的返回值添加到[None,None]
      print(list(result))
      result = map (lambda x:x+100,v1)
      print(result)
      print(list(result))
      filter 挑刺法
      result = filter(lambda x: True if type(x)== int else False,v1)
      print(list(result))

      result = filter(lambda x: type(x) ==int ,v1)
      print(list(result))
      reduce 先加法
      import functools
      v1 = ["wo","hao","e"]
      def func(x+y):
      return x+y
      result = functools.reduce(func,v1)
      print(result)

      import functools
      v1 = ["wo","hao","e"]
      result = functools.reduce(lambda x,y:x+y,v1)
      print(result)

模块

将字符串加密

def get_md5(data)
import hashlib #hai si lei buo
obj = hashlib.md5() #md5 加密
obj.update(data.encode("utf-8")) #要加密的字符串,以压缩格式
result = obj.hexdigest()
return result

加盐

def get_md5(data)
import hashlib #hai si lei buo
obj = hashlib.md5("sdfjsdkljg".encode("utf-8")) #md5 加密,默认在想要加密的前面加上MD5后面的字符串
obj.update(data.encode("utf-8")) #要加密的字符串,以压缩格式
result = obj.hexdigest()
return result
import hashlib
user_list = []
def get_md5(data)
obj = hashlib.md5("sdfjsdkljg".encode("utf-8"))
obj.update(data.encode("utf-8"))
result = obj.hexdigest()
return result

def register():
print("请创建账户")
while True:
user = input("请输入用户名")
if user =="n":
return
pwd = input("请输入密码")
temp = {"username":user,"password":get_md5(pwd)}
user_list.append(temp)
def login():
print("用户登录")
user = input("请输入用户名:")
pwd = input("请输入密码:")

for item in user_list:
if item["username"] == user and item["password"] == get_md5(pwd):
return True
register()
result = login()
if result:
print("成功")
else:
print("失败")

密码不显示(只能在终端中用)

import getpass    #gai te pa si
pwd = getpass.getpass("请输入密码:")
if pwd == "123":
print("正确")