dday05

一. PEP8 编排规范,以及开发中的一些惯例和建议

  1. 代码编排:
    (1)缩进4个空格,禁止空格与Tab 混用
  2. import:
    不要使用from xxx import*
  3. 空格:
    (1): ,;后面跟一个空格,前面无空格(行尾分号后无空格)
    (2)二元操作符前后各一个空格,包括以下几类:
    数学运算符~ 比较运算符~ 逻辑运算符~ 位运算符
    (3)当=用于提示关键字或默认参数值时,不要在其两侧使用空格。
    (3)适当添加空行。
    4 . 注释
    (1)忌:逐行添加注释,没有一个注释
    (2)引入外来算法或者配置时需在注释中添加源链接,标明出处。
    5.命名:
    (1)除非在lambda 函数中,否则不要用单字母的变量名。
    (2)包名,模块名,函数名,方法名全部使用小写,单词之间用下划线连接。
    (3)全局变量尽量使用大写,一组同类型的全局变量要加统一的前缀,单词用下划线连接。
  4. **的用法:
    def foo(*args,**kwargs):
    pass
def foo(x,y,z,a,b):
      print(x)
      print(y)
      print(z)
  lst =[1, 2, 3]
  dic ={'a': 22, 'b': 77}
  foo(*lst, **dic  
  1. python的赋值和引用
    (1)==, is: ==判断的是值,is判断的是内存地址(即对象的id0
    (2)小整数对象:[-5,256]
    二. 最简装饰器
    三.多进程
def deco(func): 
       def wrap(*args, **kwargs): 
              return func(*args, **kwargs)
                 return wrap
    @deco def foo(a, b):
        return a ** b

1.函数闭包:引用了自由变量的函数即是一个闭包。

def foo():
    l = []
        def bar(i):
            l.append(i)
                    return l
                        return bar
f1 = foo()
f2 = foo()

三. 练习题

  1. 装饰器练习题
    (1)登陆失败
def deco(func):
    print(func)
    print('ddd')
    def warp():
        print('登陆失败')
        return func()
    return warp
@deco
def A():
    print('ww')
@deco
def B():
    print('www')
A()
B()

2.输入两个数字,装时期的作用是求这两个数字的和
本函数的作用是打印这两个数字的和

def deco(func):
    def warp(n,n1):
        sum_=n+n1
        return func(sum_,n1)
    return warp
@deco
def A(name,name2):
    print(name)
A(10,20)

3.在使用装饰器的情况下,无论你输入什么验证码都返回验证码错误,如果不使用,该正确就打印正确。

import random
def deco2(parms):
    def deco (func):
        def warp(*args,**kwargs):
            if parms:
               kwargs['n1'] =-1
            return func(*args,**kwargs)
        return warp
    return deco
@deco2(True)
def A(n1,n2):
    if n1 == n2:
        print('验证码正确:')
    else:
        print('验证码醋无:')
num=random.randrange(1000,9999)
print('验证码是:%d' % num)
num2 =int(input('>>'))
A(n1=num,n2=num2)

4.多进程题

import multiprocessing
import os
def A(name):
    print(os.getpid())
    print(name)
if __name__ =="__main__":
    p1 = multiprocessing.Process(target=A,args=('Joker',))
    p2 = multiprocessing.Process(target=A,args=('Joker1',))
    p1.start()
    p2.start()
    p1.join()
    p2.join()
    print('ok')

5.检测某个时间段内(5s)ip访问的次数,如果ip的访问次数超过10次,则返回404

import time
TIME1 = 0
TIME2 = 0
def check_ip(func):
    def warp(*args,**kwargs):
        if round(abs(TIME2 - TIME1),3)<0.5:
            print('404')
        else:
            return func(*args,**kwargs)
    return warp
@check_ip
def A(ip):
    print('进入网页成功')
#模拟请求
for i in range(50):
    ip ='127.0.0.1'
    TIME1 =time.time()
    A(ip)
    TIME2 =time.time()
    time.sleep(1)
import json
import multiprocessing
import requests
def text (path):
    list1 = []
    list2 = []
    with open(path,mode='r') as f:
        res = f.readlines()[0].strip('\n').split('}')
        for json_ in res[:-1]:
            _json = json_ + '}'
            _json = json.loads(_json)
            song_play_url = _json['song_play_url']
            if song_play_url is not None:
                list1.append(song_play_url)
                song_name = _json['song_name']
                list2.append(song_name)
        return list1 , list2
song_url,song_name = text('F:\\vscode\\top_500.txt')

def A(song_url,song_name):
    i = -1
    for path in song_url:
        i += 1
        response = requests.get(path)
        mp3_ = response.content
        with open('D:\\music\\wp\\'+song_name[i]+'.mp3',mode='wb') as f:
             f.write(mp3_)
if __name__ == "__main__":
    x = int(len(song_url)/2)
    p1 = multiprocessing.Process(target = A,args=(song_url[0:x],song_name[0:x]))
    p2 = multiprocessing.Process(target = A,args=(song_url[x:],song_name[x:]))
    p1.start()
    p2.start()
    p1.join()
    p2.join()

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值