zoukankan      html  css  js  c++  java
  • 基础补充练习

    基础补充1——collections模块

    命名元组另一个用途就是作为字典的替代,因为字典存储需要更多的内存空间。如果你需要构建一个非常大的包含字典的数据结构,那么使用命名元组会更加高效。但 是需要注意的是,不像字典那样,一个命名元组是不可更改的。

     1 from collections import namedtuple
     2 
     3 records=[
     4 
     5     ('mac',2,20000),
     6 
     7     ('lenovo',1,3000),
     8 
     9     ('apple',0,10),
    10 
    11     ('tesla',10,10000000)
    12 
    13 ]
    14 
    15 cost=0.0
    16 
    17 for re in records:
    18 
    19     cost+=re[1]*re[2]
    20 
    21     print('商品:%s 购买个数:%s 总价:%s'%(re[0],re[2],cost))
    22 
    23 sk=namedtuple('Stock',['name','count','price'])
    24 
    25 for re in records:
    26 
    27     s=sk(*re)
    28 
    29     print(s.count,s.price)
    30 
    31 p=namedtuple('People',['name','gender','age'])
    32 
    33 l=['5537','female',18]
    34 
    35 p1=p(*l)
    36 
    37 print(p1)
    38 
    39 print(p1.name)
    40 
    41 print(p1.gender)
    42 
    43 print(p1.age)
    44 
    45 #p1.name='karla'#报错,不可修改
    46 
    47 p1=p1._replace(name='karla')#需要重新赋值给p1
    48 
    49 print(p1.name)
    50 
    51 #重新设置一个函数,弥补只能使用_replace修改的缺点
    52 
    53 p=namedtuple('People',['name','gender','age'])
    54 
    55 p1=p('','',None)
    56 
    57 def dic_to_stock(s):
    58 
    59     return p1._replace(**s)
    60 
    61 print(dic_to_stock({'name':'karla','gender':'female','age':18}))
    62 
    63 print(dic_to_stock({'name':'lily','gender':'male','age':30}))

    基础补充2——从字典中提取子集

     1 prices={
     2 
     3     'ss':48.78,
     4 
     5     'gg':47.5,
     6 
     7     'll':55.3,
     8 
     9     'zz':66
    10 
    11 }
    12 
    13 prices_new={key:val for key,val in prices.items() if val>50}
    14 
    15 print(prices_new)

    基础补充4——带参数的装饰器

     1 name='karla'
     2 pwd='root'
     3 
     4 def auth(auth_type):
     5     def inner_auth(func):
     6         def wrapper(*args,**kwargs):
     7             username=input('username:').strip()
     8             password=input('password:').strip()
     9             if auth_type=='local':
    10                 if username==name and password==pwd:
    11                     print('user login successful')
    12                     return func(*args,**kwargs)
    13                 else:
    14                     exit('log err')
    15             elif auth_type=='ldap':
    16                 print('ladp是啥呀')
    17         return wrapper
    18     return inner_auth
    19 
    20 def index():
    21     print('welcome to index page')
    22 
    23 @auth(auth_type='local')
    24 def home():
    25     print('welcome to home page')
    26 
    27 @auth(auth_type='ladp')
    28 def bbs():
    29     print('welcome to bbs page')
    30 
    31 index()
    32 home()
    33 bbs()
    

    基础补充5——生成器并行运算

     1 import time
     2 
     3 def consumer(name):
     4     print('[%s]准备吃包子啦'%name)
     5     while True:
     6         baozi=yield
     7         print('包子[%s]来啦,被[%s]吃啦 '%(baozi,name))
     8 
     9 def producter():
    10     c1=consumer('Karla')
    11     c2=consumer('Cindy')
    12     c1.__next__()
    13     c2.__next__()
    14     print('开始做包子啦')
    15     for i in range(10):
    16         time.sleep(1)
    17         c1.send(i)
    18         c2.send(i)
    19 
    20 producter()
    21 
    22 f=open('xx.log')
    23 f.__next__()
  • 相关阅读:
    FFmpeg笔记-基本使用
    记一次下载大文件存在数据异常问题排查
    从零开始编写IntelliJ IDEA插件
    Guava LoadingCache不能缓存null值
    FFmpeg笔记--vcodec和-c:v,-acodec和-c:a的区别?
    说说maven依赖冲突,依赖调解,依赖传递和依赖范围
    记一次NoHttpResponseException问题排查
    JVM源码分析-类加载场景实例分析
    JVM源码分析-JVM源码编译与调试
    理解PHP的变量,值与引用的关系
  • 原文地址:https://www.cnblogs.com/qiaoqianshitou/p/9152606.html
Copyright © 2011-2022 走看看