裝飾器概念及運用

#!/user/bin/env python3
# -*-encoding="utf-8"-*-
# 1.裝飾器概念
#裝飾器本身就是函數,為別的函數添加附加功能。把握兩個遵循的條件。
# 1.不修改被修飾的源代碼內容。
# 2.不修改被修飾函數的調用方式。
# 裝飾器=高階函數+函數嵌套+閉包
# 高階函數定義:
# 1.函數接收的參數是一個函數名
# 2.函數的返回值是一個函數名
# 3.滿足上述條件任意一個,都可稱之為高階函數
#把函數當做參數傳給高階函數:
# def foo():
# print("我的函數名是做為一個高階函數傳給其它的函數的")
# def fc1(fucn):
# print("我是函數fc1,接受函數%s傳過來的值" %fucn)
# fucn()
# def fc2(fucn):
# print("我是函數fc2,函數返回值是%s" %fucn)
# return fucn
# fc1(foo)
# fc2(foo)
# import time
# def foo():
# time.sleep(0.2)
# print("參數來自foo")
# def fc1(fucn):
# ks_time=time.time()
# fucn()
# js_time=time.time()
# print("函數%s運行的時間是%s" %(fucn,js_time-ks_time))
# fc1(foo)
# import time
# def foo():
# print('from the foo')
#
# def timmer(func):
# start_time=time.time()
# return func
# stop_time=time.time()
# print('函數%s 運行時間是%s' %(func,stop_time-start_time))
# foo=timmer(foo)
# foo()
# 高階函數總結
# 1.函數接收的參數是一個函數名
#   作用:在不修改函數源代碼的前提下,為函數添加新功能,
#   不足:會改變函數的調用方式
# 2.函數的返回值是一個函數名
#   作用:不修改函數的調用方式
#   不足:不能添加新功能
# 函數嵌套的例子:
# def father(name):
# print('from father %s' %name)
# def son():
# print('from son')
# def grandson():
# print('from grandson')
# grandson()
# son()
# print(father('xfz'))
#一層套一層的最里面的函數形成的就是一個閉包。
# 3.裝飾器的框架
# import time
# def zsq(func):
# def gongnenghanshu():
# ks_time=time.time()
# func()
# js_time=time.time()
# print("函數運行的時間是:%s" %(js_time-ks_time))
# return gongnenghanshu
# # 例子:
# @zsq
# def foo():
# time.sleep(3)
# print("運行了函數foo")
# res=zsq(foo) #這是間接方式實現的裝飾,但是更改了函數的調用方式.@語法甜糖,加到要調用裝飾器的前面
# res()
# foo()
#4.加返回值的方法 例2
import time
def zsq(func):
def gongnenghanshu():
ks_time=time.time()
res=func()
js_time=time.time()
print("函數運行的時間是:%s" %(js_time-ks_time))
return res
return gongnenghanshu
# 例子:
@zsq
def foo():
time.sleep(1)
print("運行了函數foo")
return "我是要添加的函數返回值"
z=foo()
print(z)

轉載于:https://www.cnblogs.com/Centwei/p/10466385.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/449270.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/449270.shtml
英文地址,請注明出處:http://en.pswp.cn/news/449270.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

2020-3-17

題目一&#xff1a; JavaScript 獲取倒數第二個li元素 如何利用JavaScript獲取li元素集合中的倒數第二個元素。 <!DOCTYPE html> <html> <head> <meta charset"utf-8"> <style type"text/css"> #box{list-style:none;font-…

java.lang.UnsupportedOperationException 異常分析

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 今天將一個數組轉換成 List 然后進行 remove 操作時卻拋出 java.lang.UnsupportedOperationException 異常。 String pattern " ^,…

『并發包入坑指北』之阻塞隊列

前言 較長一段時間以來我都發現不少開發者對 jdk 中的 J.U.C&#xff08;java.util.concurrent&#xff09;也就是 Java 并發包的使用甚少&#xff0c;更別談對它的理解了&#xff1b;但這卻也是我們進階的必備關卡。 之前或多或少也分享過相關內容&#xff0c;但都不成體系&am…

個人理財有哪些基本原理和方法?

現金為王&#xff1a;不超額消費&#xff0c;不使用信用卡&#xff0c;不負債&#xff08;房貸除外&#xff09; 信貸消費已經成為主流的今天&#xff0c;強調使用現金似乎與時代格格不入。而對于信貸消費的依賴&#xff0c;常常來自于下面幾個看起來十分有力的觀點&#xff…

2019年3月4日 701. Insert into a Binary Search Tree

比較基礎的二叉樹排序樹插入&#xff0c;寫了個遞歸。# Definition for a binary tree node. # class TreeNode(object): # def __init__(self, x): # self.val x # self.left None # self.right Noneclass Solution(object):def insertIntoBST…

2020-3-18

題目一&#xff1a; JavaScript 字符串轉換為數組 其一&#xff1a; let str"apple"; console.log([...str]);運行結果 其二&#xff08;使用split()&#xff09;&#xff1a; let str"apple"; console.log(str.split());注1&#xff1a;如果將參數省略…

思維導圖,流程圖模板整合

思維導圖與流程圖在工作中都是經常使用的&#xff0c;出現頻率較高的&#xff0c;有些不會繪制的或者是剛接觸這一類的圖表形式的都會選擇使用模板來完成工作&#xff0c;但是很多朋友卻不知道模板在&#xff0c;今天要給大家分享的是幾款孩子走精美的思維導圖&#xff0c;流程…

解決 List 執行 remove 時報異常 java.lang.UnsupportedOperationException

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、情況描述 報錯如題&#xff1a; java.lang.UnsupportedOperationException: nullat java.util.Collections$UnmodifiableCollectio…

2020-3-19

題目一&#xff1a; js split() 分割字符串生成數組 let str"I am a student"; let arrstr.split(" "); for(let i0;i<arr.length;i){console.log(arr[i]); }分析&#xff1a;這里利用字符串的空格來分割字符串生成數組。split()方法的參數設置為"…

上班族怎么創業?白領一族創業當老板!

班族怎么創業?很多上班族無法面對每天平淡的生活&#xff0c;于是想要擁有一份屬于自己的事業。上班族創業有哪些好的項目呢?結合自已的興趣愛好&#xff0c;找到適合的項目&#xff0c;上班的同時也能當老板。 上班族怎么創業?創業項目1、開投資額小的特色店 嘗試開店創業的…

一文告訴你 Event Loop 是什么?

Event Loop 也叫做“事件循環”&#xff0c;它其實與 JavaScript 的運行機制有關。 JS初始設計 JavaScript 在設計之初便是單線程&#xff0c;程序運行時&#xff0c;只有一個線程存在&#xff0c;在特定的時候只能有特定的代碼被執行。這和 JavaScript 的用途有關&#xff0c;…

Spring Boot -Shiro配置多Realm

2019獨角獸企業重金招聘Python工程師標準>>> 核心類簡介 xxxToken&#xff1a;用戶憑證 xxxFilter&#xff1a;生產token&#xff0c;設置登錄成功&#xff0c;登錄失敗處理方法&#xff0c;判斷是否登錄連接等 xxxRealm&#xff1a;依據配置的支持Token來認證用戶信…

idea工具debug斷點紅色變成灰色

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 沒事別瞎點&#xff0c;禁用了斷點當然不走了 轉自&#xff1a;https://blog.csdn.net/anlve512/article/details/54583469

2020-3-20前端題目

題目一&#xff1a; 判斷checked復選框是否有被選中 <!DOCTYPE html> <html> <head> <meta charset" utf-8"> <script> window.onload () > {let odivdocument.getElementById("ant");let ckdocument.getElementById(&…

上班族如何當老板 五大模式任你選

中國教育在線訊 辭職創業&#xff0c;還是維持現在穩定的工作?這個是很多上班族都糾結過的問題&#xff0c;一邊是穩定的工作和收入&#xff0c;一邊是創業當老板的誘惑&#xff0c;真是很難選擇。 其實&#xff0c;如果安排合理是可以“魚與熊掌”兼得的&#xff0c;沈陽市古…

利用 Linux tap/tun 虛擬設備寫一個 ICMP echo 程序

利用 Linux tap/tun 虛擬設備寫一個 ICMP echo 程序 前面兩篇文章已經介紹過 tap/tun 的原理和配置工具。這篇文章通過一個編程示例來深入了解 tap/tun 的程序結構。 01 準備工作 首先通過 modinfo tun 查看系統內核是否支持 tap/tun 設備驅動。 Copy[rootby ~]# modinfo tun f…

2020-3-21

題目一&#xff1a; JavaScript 獲取月份最后一天日期 月份最后一天日期可能是不同的&#xff0c;比如有的是30、有的是31還有的是28。 <!DOCTYPE html><html> <head> <meta charset" utf-8"> <script type"text/javascript"&…

正方形矩陣求對角線之和

nint(input()) a[] for i in range(n): #循環體里面加入input&#xff08;&#xff09;可以實現一共執行n次input&#xff08;&#xff09; lst[int(x) for x in input().split()]a.append(lst) #用列表解析&#xff0c;兩層列表代表行列&#xff0c;很巧妙的方法 w0 bl…

解決: Unable to connect to zookeeper server within timeout: 5000

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一個項目啟動不起來了&#xff0c;報錯如題&#xff1a; Caused by: org.I0Itec.zkclient.exception.ZkTimeoutException: Unable to c…

閑錢請看如何處理

買一點基金定投。基金是專家幫你理財。基金的起始資金最低單筆是1000元,定投200元起投 買基金到銀行或者基金公司都行。銀行能代理很多基金公司的業務&#xff0c;具體開戶找銀行理財專柜辦理。現在有些證券公司也有代理基金買賣的。在銀行開通網上銀行后網上購買一般收費上有優…