python3 函数3

装饰器 decorator   ***

概念:装饰器是一个函数,主要作用是用来包装另一个函数或类;

包装的目的:是在不改变原函数名的情况下,改变被包装函数(对象)的行为。

装饰器函数: def   装饰器函数名(参数):

函数块

return   函数

例子:

def    deco(fn):

print("装饰器函数被调用,并返回原函数")

return  fn

带装饰器函数语法:

@装饰器函数名    [(装饰器函数传参)]   <换行>

def   函数名(参数列表):

语句块

注:[ ] 代表可省略

 def deco(fn):
print("装饰器被调用,原函数被返回")
print(fn)
return fn
#return lambda :print("hello,world") @deco
def myfac():
print("myfac被调用") #myfac = deco(myfac)
myfac()
myfac()
#
def deco(fn):
print("装饰器被调用,原函数被返回")
print(fn)
#return fn
return lambda :print("hello,world") @deco
def myfac():
print("myfac被调用") #myfac = deco(myfac)
myfac()
myfac()
#
#装饰器被调用,原函数被返回
#<function myfac at 0x00000000006766A8>
#myfac被调用
#myfac被调用
#装饰器被调用,原函数被返回
#<function myfac at 0x00000000005ACB70>
#hello,world
#hello,world

函数的文档字符串:

语法:def   函数名(参数列表):

"函数文档字符串"

语句块

.....

说明:文档字符串通常用来说明函数的功能和用法;

用>>>help(函数名) 可以查看文档字符串

例子:

 def mymax(a, b):
"""mymax 函数用于获取两个变量的最大值
a 形参
b 也是形参
"""
pass help(mymax)
#help(mymax)
#Help on function mymax:
#mymax(a, b)
# mymax 函数用于获取两个变量的最大值
# a 形参
# b 也是形参

已学过的函数的语法:

[@装饰器]

def   函数名([位置参数],[*元组参数],    [命名关键字参数],[**字典参数]):

["文档字符串"]

语句块

[ ] 代表内部的内容可省略

函数的属性:

__name__属性

作用:用来记录函数名;

说明:以双下划线开头,以双下划线结尾的标识符通常代表python的特殊属性等。

 def abc():
pass a = abc
print(a.__name__) #abc
print(abc.__name__) #abc #
def xxx(fn):
if fn.__name__ == 'abc':
pass
elif fn.__name__ == "max":
pass

__doc__ 属性

作用:用于记录文档字符

例子:

 def cba():
"我是文档字符串"
pass
 def cba():
"我是文档字符串"
pass #help(cba)
#Help on function cba:
#cba()
# 我是文档字符串

补充内容:

布尔测试:

bool(x)  #True / False

为False的情况为: None 、 False 、0、 0.0、 0+0j、 [ ] 、 ' ' 、()、{ } 、set()、 frozenset()

Python之路,第十二篇:Python入门与基础12的更多相关文章

  1. Python之路(第十二篇)程序解耦、模块介绍\导入\安装、包

    一.程序解耦 解耦总的一句话来说,减少依赖,抽象业务和逻辑,让各个功能实现独立. 直观理解“解耦”,就是我可以替换某个模块,对原来系统的功能不造成影响.是两个东西原来互相影响,现在让他们独立发展:核心 ...

  2. Python之路(第二十二篇) 面向对象初级:概念、类属性

    一.面向对象概念 1. "面向对象(OOP)"是什么? 简单点说,“面向对象”是一种编程范式,而编程范式是按照不同的编程特点总结出来的编程方式.俗话说,条条大路通罗马,也就说我们使 ...

  3. Python开发【第二十二篇】:Web框架之Django【进阶】

    Python开发[第二十二篇]:Web框架之Django[进阶]   猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...

  4. Python学习【第十二篇】模块(2)

    序列化 1.什么是python序列化? 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling 序列化就是将python的数据类型转换成字符串 反序列化就是将字符串转换成 ...

  5. Python之路(第二十四篇) 面向对象初级:多态、封装

    一.多态 多态 多态:一类事物有多种形态,同一种事物的多种形态,动物分为鸡类,猪类.狗类 例子 import abc class H2o(metaclass=abc.ABCMeta): ​ def _ ...

  6. Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块

    一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...

  7. 图解Python 【第十二篇】:Django 基础

    本节内容一览表: Django基础:http://www.ziqiangxuetang.com/django/django-tutorial.html 一.Django简介 Django文件介绍:ht ...

  8. Python开发【第十二篇】python作用域和global nonlocal

    python的作用域 作用域也叫名字空间,是访问变量时查找变量名的范围空间 python中的四个作用域 LEGB 作用域 英文解释 英文缩写 局部作用域 Local(function) L 外部嵌套函 ...

  9. 【Python之路】第六篇--Python基础之模块

    模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...

  10. Python 学习笔记(十二)Python文件和迭代(一)

    文件 文件和文件夹 文件:文本文件.二进制文件 文件夹:(windows) G:\pythonWorkspace\python\study (linux/mac) /home/workspace/py ...

随机推荐

  1. redis使用epoll

    redis使用epoll的代码在ae_epoll.c文件中. epoll_create:redis服务器在启动时,创建事件循环,调用epoll_create方法创建epoll实例. static in ...

  2. LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测异常参数

    结合CNN的可以参考:http://fcst.ceaj.org/CN/article/downloadArticleFile.do?attachType=PDF&id=1497 除了行为,其他 ...

  3. Linux服务列表(CentOS)

    1.service用法 service SCRIPT COMMAND [OPTIONS] #执行脚本中方法,最常用法 service --status-all #查看所有服务的运行状态 service ...

  4. export及export default

    const a=2; const b=3; const c=function(){console.log(a+b} export a; export b; export default c; 如上文件 ...

  5. Django ajax提交 登录

    一.url from django.contrib import adminfrom django.urls import pathfrom appo1 import views urlpattern ...

  6. Spring Boot + thymeleaf 后台与页面(二)

    Spring Boot推荐使用thymeleaf模板完成与页面的交互(已不支持JSP某些特性,不推荐JSP) 步骤 在一个Spring Boot Web项目基础上,也可以参考我前一篇文章建立的项目 1 ...

  7. RTTI,C++类型转换操作符

    body, table{font-family: 微软雅黑; font-size: 10pt} table{border-collapse: collapse; border: solid gray; ...

  8. angular4-事件绑定

    事件绑定语法(可以通过 (事件名) 的语法,实现事件绑定) <date-picker (dateChanged)="statement()"></date-pic ...

  9. redis、memcache、mongoDB 对比

    从以下几个维度,对 redis.memcache.mongoDB 做了对比. 1.性能 都比较高,性能对我们来说应该都不是瓶颈. 总体来讲,TPS 方面 redis 和 memcache 差不多,要大 ...

  10. tfs 2017 使用

    安装完成之后,创建一个项目管理. 初始化代码库 然后下载代理 (服务器)并设置.下载代理需要FQ才可以下载成功. 想要支持 netcore2.0  必须在代理服务器上安装 vs2017 跟netcor ...