Python边角知识点

Python边角知识点

1.生成器 (含有yield)

#生成器函数
def func():
	print("进来了")
	yied 11
	print("进来了")
	yied 22
	print("进来了")
	yied 33
	
#调用生成器函数  ---->   得到一个生成器对象
gen = func()
#必须用next()才能进行执行		#yield相当于冻结
v1=next(gen)

v2=next(gen)

v3=next(gen)

也可以使用循环方法:

for item in gen:
	print(item)
示例:生成1~1000000

生成器可以节省内存的开销。

def create_big_num(max_num):
    num=0
    while True:
        yield num
        if num == max_num:
            return
        num= num + 1

obj=create_big_num(1000000)
for item in obj:
    print(item)

2.装饰器

def outer(func):
    def inner():
        print('before')
        res=func()  #被装饰器的原函数
        print('after')
        return  res

    return inner()

@outer
def info():
    print("原来的info函数")

@outer
def info1():
    print("原来的info函数")


def info2():
    return 999
  • 装饰器的了解

    • 定义装饰器 创建嵌套的函数。

      def outer(func):
          def inner():
              print('before')
              res=func()  #被装饰器的原函数
              print('after')
              return  res
      
          return inner()
      
    • 应用装饰器

      @outer
      def info():
          print("原来的info函数")
      
      info()
      

3 .匿名函数(lambda表达式)

def func(a1,a2):
	return a1 + a2
	
v1=func(1,2)
print(v1)	#3
func = lambda a1,a2 : a1 + a2

v2=func(1,2)
print(v2)		#3

4.md5加密

4.1 hashlib

可以对数据进行加密

import hashlib
def encrypt(data_string):
    obj=hashlib.md5()
    obj.update(data_string.encode('utf-8'))
    result=obj.hexdigest()
    return result

用处:用于保存密码

4.2 md5加盐

加密时再加上我们自定义的字符串

import hashlib
data_string='admin'
obj=hashlib.md5('asfsdfdv45cvlfb5'.encode('utf-8'))     #随便加入自定义的字符串,同时要加encode
obj.update(data_string.encode('utf-8'))
result=obj.hexdigest()

print(result)

建议:只要用md5加密,就要进行加盐。

5. json模块

json是一种格式,所有编程语言都认识,是以字符串的形式存在

  • 反序列化 JSON格式的字符串-——>python对象

    import json
    
    data_string='{"code":0,'tks':'asd'}'
    
    data_dict=json.loads(data_string)		#反序列化,将json字符串对象转化为python对象
    
    print(data_string)		#{"code":0,'tks':'asd'}
    
  • 序列化 python格式——> JSON格式的字符串

    import json
    data_dict={"k1":123,"k2":456,"k3":True}
    data_string=json.dumps(data_dict)
    
    print(type(data_string))		#	<class 'str'>
    
  • 注:

    里面的字符串得是双引号

    v1 = "{'k1':123,'k2':456}"			->是字符串,不是JSON格式
    v2 = '{"k1":123,"k2":456}'			->是字符串,是JSON格式
    

    true、false必须是小写

    v3 = '{"k1":123,"k2":456,"k3":True}'			->是字符串,不是JSON格式
    v4 = '{"k1":123,"k2":456,"k3":true}'			->是字符串,是JSON格式
    

    对象不能是元组是列表

    v5 = '{"k1":123,"k2":456,"k3":(11,22,33)}'			->是字符串,不是JSON格式
    v6 = '{"k1":123,"k2":456,"k3":[11,22,33]}'			->是字符串,是JSON格式
    

    json无法序列化所有数据类型

import json
import datetime

ctime=datetime.datetime.now()		#是一个时间对象

ctime_string=ctime.strftime('%Y-%m-%d %H:%M:%S')	#转化为字符串

data_dict={"k1":123,"k2":ctime_string}

v1=json.dumps(data_dict)
print(v1,type(v1))
#{"k1": 123, "k2": "2023-08-04 10:24:42"} <class 'str'>

6. 面向对象

编程方式:

  • 面向过程编程。按照功能从上到下逐一实现。
  • 函数式编程,功能拆分。
  • 面向对象编程
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值