• Python之路,day5-Python基础


    for#列表生成式
     1 data = [1,2,3,4,5,6,7]
     2 
     3 #####列表生成式
     4 #data = [i+1 for i in data]
     5 
     6 data = [i*2 if i>5 else i for i in data]
     7 
     8 print(data)
     9 
    10 
    11 data = [i//2 if i>4 else i for i in data]
    12 
    13 print(data)

    1.生成器

    yield a #返回a,同时挂起当前这个函数
    yield a #返回a, 同时挂起当前这个函数, a返回给了通过__next__()调用当前函数的人
    这代表通过就是实现了函数的中断,并且保存了函数的中间执行状态

     1 # data = ( x*2 for x in range(5))
     2 #
     3 # #print(data)
     4 #
     5 # # for i in data:
     6 # #     print(i)
     7 #
     8 # print(data.__next__())
     9 # print(data.__next__())
    10 # print(data.__next__())
    11 # print(next(data))
    12 # print(next(data))
    13 
    14 
    15 def fib(num):#循环次数
    16     count = 0
    17     a,b = 0,1
    18     while count<num:
    19         tmp = a
    20         a = b
    21         b = a + tmp
    22         print(a)
    23         count +=1
    24         yield a
    25 
    26 f=fib(10)
    27 f.__next__()
    28 next(f)
    29 
    30 a,b = 3,5
    31 a,b = b,a+b
    32 print(a)

    2.迭代器

    3.装饰器
    完全符合 开放-封闭原则
    不改变原有功能代码,不改变原有调用方式
    实现扩展新的功能

     1 user_status = False
     2 
     3 def login(func):
     4     def inner():
     5         _username = "hsc"
     6         _password = "qwer"
     7         global user_status
     8 
     9         if user_status == False:
    10             username = input("user:")
    11             password = input("password:")
    12 
    13             if username == _username and password == _password:
    14                 print("welcome lalala...")
    15                 user_status = True
    16             else:
    17                 print("wrong username or password")
    18 
    19         if user_status == True:
    20             func()
    21     return inner
    22 
    23 def home():
    24     print("---首页---")
    25 
    26 @login
    27 def america():
    28     print("---欧美专区---")
    29 
    30 def japan():
    31     print("---japan---")
    32 
    33 @login
    34 def henan():
    35     print("---henan---")
    36 
    37 home()
    38 
    39 america()
    40 
    41 henan()

    4.模块
    import auth #导入整个模块
    from auth import login #导入auth的login函数

    __file__ 相对路径
    os.path.abspath 相对路径转为绝对路径

     1 import sys
     2 import os
     3 BaseDir = os.path.abspath( os.path.dirname(os.path.dirname(__file__)))
     4 print(BaseDir)
     5 BaseDir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
     6 print(BaseDir)
     7 sys.path.append(BaseDir)
     8 print(sys.path)
     9 
    10 from day4 import test

       5.并发

     1 import time
     2 def consumer(name):
     3     print("%s 准备吃包子啦!"%name)
     4     while True:
     5         baozi = yield
     6         print("包子[%s]来了,被[%s]吃了!"%(baozi,name))
     7 
     8 def producer(name):
     9     c = consumer('A')
    10     c2 = consumer('B')
    11     c.__next__()
    12     c2.__next__()
    13     print("开始准备做包子了!")
    14     for i in range(10):
    15         time.sleep(1)
    16         print("做了2个包子!")
    17         c.send(i)
    18         c2.send(i)
    19 producer("hsc")
    20 
    21 
    22 #send 传递数据给yield

    py2
    目录里没有__init__,那就只是一个目录,目录是不可以被导入的
    有__init__,那这个目录就变成了 “包”==package

    pypi 公共模块库


    序列化:把内存对象转成字符串形式,就叫序列化
    把一个字符串专成对应的内存对象,就叫反序列化
    作用:持久化内存数据对象


    json #支持所有语言,支持字符串,字典等数据类型,但是函数不行
    序列化
     1 import json
     2 
     3 def sayhi():
     4     print('hey')
     5 
     6 data = {
     7     'name':'hsc',
     8     'age':18,
     9     'func':sayhi
    10 }
    11 
    12 f = open('data.txt','w')
    13 # f.write(str(data))
    14 #
    15 # f = open('data.txt','r')
    16 # data = eval(f.read())
    17 # print(data)
    18 
    19 #json.dumps()
    20 #json.dump()
    21 #json.loads()
    22 #json.load()
    23 f.write(json.dumps(data))
    24 
    25 #===========================
    26 
    27 f.close()

    反序列化
     1 import json
     2 
     3 f = open('data.txt',encoding='utf-8')
     4 # data = json.loads(f.read())
     5 
     6 
     7 data = json.load(f)
     8 
     9 print(data['age'])
    10 
    11 f.close()

    pickle #仅限于python语言,支持所有数据类型
    序列化
     1 import pickle
     2 
     3 def sayhi():
     4     print('hey')
     5 data = {
     6     'name':'hsc',
     7     'age':18,
     8     'func':sayhi
     9 }
    10 
    11 
    12 f = open('data.pkl','wb')
    13 f.write(pickle.dumps(data))

    反序列化
    1 import pickle
    2 
    3 f = open('data.pkl','rb')
    4 data = pickle.loads(f.read())
    5 
    6 print(data)



  • 相关阅读:
    Python 语音识别
    Python 无法安装PyAudio问题
    webRTC脱坑笔记(四)— windows下Nginx对Node服务的反向代理
    webRTC脱坑笔记(三)— webRTC API之RTCPeerConnection
    webRTC脱坑笔记(二)— webRTC API之MediaStream(getUserMedia)
    webRTC脱坑笔记(一)— 初识webRTC
    StringBuffer
    字符串的反转
    数组的反转
    String
  • 原文地址:https://www.cnblogs.com/heshaochuan/p/6056195.html
Copyright © 2020-2023  润新知