python 函数之day4

一.装饰器

了解一点:写代码要遵循开发封闭原则,虽然这个原则是面向对象开发,但也适用于函数式编程,简单的来说,就是已经实现的功能代码不允许被修改但

可以被扩展即:

  • 封闭:已实现功能的代码块
  • 开发:对扩张开发
#需求对一个现有基础功能函数每个要加上打印一条日志

#用装饰器实现如下:
#def outer():              #通常的做法是在定义一个新的函数,将函数加入到需要调用的函数体内# print (‘log‘)
def outer(func):                 #定义装饰器函数
    def inter():                 #定义内层函数
        print(‘log‘)
        return func()
    return inter
@outer                            #使用装饰器
def f1():
    #outer()
    print(‘F1‘)

@outer
def f2():
    #outer()
    print("F2")

@outer
def f100():
    #outer()
    print(‘F100‘)

  装饰器的流程

# @ + 函数名
#功能:
#  1.自动执行outer函数并且将其下面的函数名f1当作参数传递
#  2.将outer函数的返回值,重新赋值f1

上段代码执行的过程

#定义函数,未调用,函数内部不执行
# 函数名 :代指函数

#下段代码执行过程
# 1->2->3->4
#  总结:执行完后的f1 函数体即为inter函数的内部代码

def outer(func):        # 1.有关键字def 将outer函数体内部放入内存
    def inter():            # 3.将 inter 函数体放入内存
        print(‘before‘)
        func()
    return inter        # 4.整体返回inter函数(注意没有括号),将返回值赋值给下面的f1函数

@outer              #  2.整体解释outer和f1函数,并且将下面的f1 函数当成outer函数的参数
def f1():
    print(‘F1‘)

装饰器之返回值

如果上面原函数f1,f2有返回值,怎么办?
def outer(func):
    def inter():
        print(‘before‘)    #被装饰函数前做的操作
        ret = func()
        print(‘after‘)     #被装饰函数后做的操作
        return ret         # 返回原函数的返回值
    return inter

@outer
def f1():
    print(‘F1‘)
    return ‘我是返回值1‘

@outer
def f2():
    print(‘F2‘)
    return ‘我是返回值2‘

  

时间: 2024-12-17 04:06:01

python 函数之day4的相关文章

Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

Python 函数对象、生成器 、装饰器、迭代器、闭包函数

一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松平常了.但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性.那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数作为第一类对象有如下特性: #函数身为一个对象,拥有对象模型的三个通用属性:id(内存地址

Python基础篇-day4

本节目录: 1.字符编码 2.函数 2.1参数 2.2变量 2.3返回值 2.4递归 2.5 编程范式 2.6 高阶函数 ************************************************************ 1.字符编码 py2 指定编码时,文件和变量为指定的编码:默认为ASICCpy3 默认文件为utf-8,变量为unicode 只有unicode有encode方法 先说python2 py2里默认编码是ascii文件开头那个编码声明是告诉解释这个代码的程序

【Python 函数对象 命名空间与作用域 闭包函数 装饰器 迭代器 内置函数】

一.函数对象 函数(Function)作为程序语言中不可或缺的一部分,但函数作为第一类对象(First-Class Object)却是 Python 函数的一大特性. 那到底什么是第一类对象(First-Class Object)呢? 在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量.可以作为元素添加到集合对象中.可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的. 1.函数身为一个对象,拥有对象模型的三个通用属性:id.类型.和值.

浅析python函数

慢慢的开始进入状态啦,被明老师说我什么都不会后我觉得是该反思下自己这个学期的学习了,虽然我对实验没有很大的兴趣,但是既然名老师要求我开始做实验,我就跟着小丹师姐好好学学,用Tanger师兄的话来说就是:做实验有利于你理解生物信息学数据处理的原理,也许有一天,未来做生物信息的学弟学妹会看到这段话,就像我在码迷上看到free_mao的博文一样,生物信息还是基于生物的,生物原理必须要理解,不然和做计算机有什么区别呢?以前对书本的知识不够重视,语言的学习进度很缓慢,现在希望能分享一些学习心得体会给大家,

python函数

python函数学习 1. 概述: 函数是重用的程序段,用关键字def来定义,可以任意多次地运行这个语句块,被称为调用函数.Python提供了许多内建函数,比如print(),也可以自己创建函数,这被叫做用户自定义函数,函数能提高应用的模块性,和代码的重复利用率. 2.函数语法: 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号(). 任何传入参数和自变量必须放在圆括号中间.圆括号之间可以用于定义参数. 函数的第一行语句可以选择性地使用文档字符串-用于存放函数说明. 函数内容以冒号起

python 函数

函数的定义 函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 创建函数 def 函数名 (参数列表) 函数体 例如: def sum1(a,b): c = a + b return c e=1 f=2 print (sum1(e,f)) 首先def 是定义函数名 sum1是函数名 括号中的a, b是函数的参数,是对函数的输入.参数可以有多个,也可以完全没有(但括号要保留). c = a +

Python 五、Python函数

一.函数概述 1.函数的基础概念 函数是python为了代码最大程度地重用和最小化代码冗余而提供的基础程序结构. 函数是一种设计工具,它能让程序员将复杂的系统分解为可管理的部件 函数用于将相关功能打包并参数化 在python中可以创建4种函数: 全局函数:定义在模块中 局部函数:嵌套于其它函数中 lambda(匿名)函数:仅是一个表达式 方法:与特定数据类型关联的函数,并且只能与数据类型关联一起使用 函数和过程的联系:每个Python函数都有一个返回值,默认为None,也可以使用"return

六、Python函数

Python函数 一.函数 函数就是完成特定功能的一个语句组,这组语句可以作为一个单位使用,并且给它取一个名字 可以通过函数名在程序的不同的地方多次执行(这通常叫做函数调用),却不需要在所有地方都重复编写这些语句 自定义函数和预定义函数 函数作用:降低编程的难度.代码重用 当我们自己定义一个函数时,通常使用def语句 def 函数名(参数列表): #可以没有参数 函数体 #!/usr/bin/python a = int(raw_input("please enter a number:&quo