zoukankan      html  css  js  c++  java
  • 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)



  • 相关阅读:
    SpringMVC中静态获取request对象 Spring中获取 HttpServletRequest对象【转载】
    springcloud 的loadbalancer 轮询算法切换方法 2021.4.3
    springboot项目启动增加图标
    rabbitmq 端口作用以及修改方法
    centos8 安装rabbitmq
    springcloud config client Value获取不到信息的问题的处理方法
    springcloud config配置git作为数据源然后启动报错 If you want an embedded database (H2, HSQL or Derby), please put it on the classpath.
    Sublime Text的列模式如何操作
    centos8 安装redis
    jQuery简单的Ajax调用
  • 原文地址:https://www.cnblogs.com/heshaochuan/p/6056195.html
Copyright © 2011-2022 走看看