根据函数是否传参  是否有返回值 ,可以分析出装饰器的四种形式: 形式一:无参无返回值 def outer(func): def wrapper(): print("装饰器功能1") ret = func() print("装饰器功能2") return ret return wrapper # 定义一个无参无返回值的函数 @outer def main_func(): print("hello") main_func() # 开始执行 结果如下…
shell编程系列7--shell中常用的工具find.locate.which.whereis .文件查找之find命令 语法格式:find [路径] [选项] [操作] 选项 -name 根据文件名查找 -perm 根据文件权限查找 -prune 该选项可以排除某些查找目录 -user 根据文件属主查找 -group 根据文件属组查找 -mtime -n | +n 根据文件更改时间查找 -nogroup 查找无有效属组的文件 -nouser 查找无有效属主的文件 -newer file1 !…
shell编程系列6--shell中的函数 .函数介绍 linux shell中的函数和大多数编程语言中的函数一样 将相似的任务或者代码封装到函数中,供其他地方调用 语法格式 第一种格式 name() { command1 command2 ...... commondn } 第二种格式 function name { command1 command2 ...... commondn } .调用函数 直接使用函数名调用,可以将其想象成shell中的一条命令 函数内部可以直接使用参数 $.$..…
原文:WPF编程,C#中对话框自动关闭的一种方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/details/84933196 MessageBoxTimeout是一个微软未公开的Windows API函数.实现定时消息,功能类似于MessageBox.如果用户不回应,能定时关闭消息框.函数由user32.dll导出,windows2000及以下没有此函数.    原型: int MessageBoxTime…
首先看一个例子 ''' 多个装饰器装饰一个函数 ''' # 定义第一个装饰器 def set_func1(func): def wrapper1(*args,**kwargs): print('装饰内容开始1') func(*args, **kwargs) print('装饰内容结束1') return wrapper1 # 定义第二个装饰器 def set_func2(func): def wrapper2(*args,**kwargs): print('装饰内容开始2') func(*arg…
# 实现一个空路由表,利用装饰器将url和功能函数的对应关系自动存到这个字典中 router_dict = {} # 定义一个装饰器 # 再给一层函数定义,用来传入一个参数,这个参数就是访问的页面地址 def set_args(url): def set_func(func): def wrapper(*args, **kwargs): func(*args, **kwargs) router_dict[url] = wrapper # 既可以是func也可以是wrapper,单如果是func,…
代码中No.1  No.2 ...表示执行流程 """No.1 No.2 ...表示执行流程""" def set_func(func): # <No.1-1>:func = show---->作用:func 指向原show 函数 , def wrapper(*args, **kwargs): print("装饰器功能1") # <No.3>:"装饰器功能1" return f…
在浏览器访问web服务器的时候,服务器收到的是一个请求报文,大概GET请求的格式大概如下: 先随便拿到一个请求报文,蓝色即为我们要获取的 GET  /index.html  HTTP/1.1  Host: www.baidu.comConnection: keep-aliveCache-Control: max-age=0Upgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit…
以下是我常用到的Pycharm快捷键(还有很多,只是我暂时用的最多的就这些): 在开发过程中,经常使用一些快捷键会大大提高开发效率,不要因为看这多而不用,常用的就那些,用得多就都记住了,脱离鼠标,逼格就是高,嘿嘿! ctrl+w               慢慢选定一个词,一个行,三行 ctrl+alt+L                代码格式一键整理(特别好用,再也不需要每次点小灯泡了) ctrl+y                删除光标所在行ctrl+d                往…
多线程共享全局变量出现了安全问题的解决方法 当多线程共享全局变量时,可能出现安全问题,解决机制----互斥锁:即在在一段与全局变量修改相关的代码中,假设一个时间片不足以完成全局变量的修改,就在这段代码中加个互斥锁(不是锁整个线程),强行暂停下个时间片的执行,让修改进行到一半的代码能够继续执行完,可以解决安全问题,这就导致还会有一些时间片的浪费,整个程序执行完的总时间的时间少于<2>中那些时间片的总和. 补充: 在多线程编程中,一些敏感数据不允许被多个线程同时访问,因为会出现线程安全问题,通过线…