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. chrome手机模拟器显示尺寸不正确

    存在问题: chrome网页调试器中小屏幕时显示尺寸不正确 原因: 自动调整了dpi,导致不是设计的结果 解决方法: 在<head>中添加如下语句: <meta name=" ...

  2. Python模块和包使用

    1.什么是模块 模块就是一个.py的文件 2.为什么要使用模块? 最开始的程序(没有任何组织)----> 函数------>类----->模块------>包  为了让程序的组 ...

  3. 【转】借助System.Linq.Dynamic, IQueryable根据排序字符串排序

    在使用Entity Framework时,若有多个排序,需要OrderBy (OrderByDescending)再ThenBy (ThenByDescending) 假设需要根据Name升序排序,再 ...

  4. Flexbox 布局的最简单表单 (转)

    作者: 阮一峰 弹性布局(Flexbox)逐渐流行,越来越多人使用,因为它写 CSS 布局真是太方便了. 三年前,我写过 Flexbox 的介绍(上,下),但是有些地方写得不清楚.今天,我看到一篇教程 ...

  5. List<Map<String, Object>>取值

    List<Map<String, Object>> postlist //一个list里面装着多个map,如下 [ {A=0100, B=4}, {A=0200, B=3}, ...

  6. windbg 定位崩溃问题

    三板斧如下: 使用windbg打开dump文件,设置好对应进程的 pdb 文件(这个很关键.为了避免releas优化导致符号文件错乱,我发布的所有                      relea ...

  7. Hive/Hbase/Sqoop的安装教程

    Hive/Hbase/Sqoop的安装教程 HIVE INSTALL 1.下载安装包:https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-2.3 ...

  8. 安装babel

    http://jamesknelson.com/using-es6-in-the-browser-with-babel-6-and-webpack/

  9. CountDownLatch在多线程程序中的应用

    一.CountDownLatch介绍 CountDownLatch是JDK1.5之后引入的,存在于java.util.concurrent包下,能够使一个线程等待其他线程完成动作后再执行.构造方法: ...

  10. Visual Studio Code用户设置文件

    打开 settings.json 文件 修改主题 修改工作区域背景色为豆绿色 { "workbench.colorTheme": "Visual Studio Light ...