python基础(装饰器,进程)

编码规范及开发中的惯例
○代码编排
● 缩进四个空格,禁止空格与Tab键混合使用
●行长80
●不要使用 from xxx import *
●单行不要import多个库
●模块内用不到的不要import
●**: , ;** 后面跟一个空格
●数学运算符 + - * / // = & | 后面加空格
●比较运算符== != > >= < <= is not in后面加空格
●逻辑运算符 and or not后面加空格
●位运算符& | ^ << >> 后面加空格
●函数间:顶级函数间空2行,类的方法之间空一行
●函数内:同一函数内逻辑块之间空1行
●文件结尾:留一个空行
○命名
●除非在lambda函数中,否则不要用单字母的变量
●包名,模块名,函数名,方法名全部用小写,单词间用下划线连接
●类名首字母大写(驼峰式)
●全局变量尽量使用大写,一组同类型的全局变量要加上统一前缀,单词用下划线连接
○程序的构建
●一个函数只做一件事情,并把这件事做好
●大的功能用小函数之间灵活组合来完成
●避免编写庞大程序
join字符串连接:" "表示以什么连接

在这里插入图片描述
*args返回元组
**kwargs返回字典
强制命名 *后必须用函数名传参
在这里插入图片描述
函数闭包
引用了自由变量的函数即是一个闭包函数,这个被引用的自由变量和和这个函数一同存在,即使已经离开了创造他的环境也不例外
在这里插入图片描述
装饰器

def deco(func):
    print(func)
    def wrap():
        print("hhahh")
    return wrap

@deco
def foo():
    print("123")

foo()

输出
在这里插入图片描述

带参装饰器

def deco(func):
    def wrap(n1,n2):
        print('ok')
        return func(n1,n2)
    return wrap
@deco
def A(name1,name2):
    print(name1)
    print(name2)
A("q","w")

输出
在这里插入图片描述

练习
装饰器求两个数的和
本函数的作用是打印两个数的和

def deco(func): 
    def warp(x11,x22):
        sum_=x11 + x22
        return func(sum_,x22)
    return warp

@deco
def A(x1,x2):
    print(x1)
    
A(5,6)

输出
在这里插入图片描述
练习:流氓验证码

import random
def deco(func):
    def warp(n,n1):
        if func:
            n = -1
        return func(n,n1)
    return warp

@deco 
def A(n,n1):
    if n == n1:
        print('验证码正确')
    else:
        print('验证码错误')

yzm = random.randint(1000,9999)
print('验证码是%d'%yzm)
yzm1 = input("请输入验证码")
A(yzm,yzm1)

输出
:在这里插入图片描述
练习:检测某个时间段内(5秒)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 _ in range(20):
    ip = "127.0.0.1"
    TIME1 = time.time()
    A(ip)
    TIME2 = time.time()
    time.sleep(0.1)

进程和线程
进程:每个进程都有自己的地址空间,数据栈.每个进程是相互独立的
一个进程可以拥有多个并发的执行线索,简单的说,就是拥有多个可以获得CPU调度的执行单元

创建线程

import multiprocessing
import os
    def A(name):
        print('hello')
    if __name__=="__main__":
        #创建进程
        p.multiprocessing.Process(target=A,args=("abs"))
        p.start()#启动线程
        p.join()#关闭线程
        print('over')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值