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. MySQL查询性能调优化

    一.索引的概念 索引:类似于字典的目录,设置索引可以 加速数据查找,对数据进行约束: 二.索引类型: 主键索引:保证数据唯一性,不能重复+不能为空 普通索引:加速数据查找 唯一索引:加速查找+不能重复 ...

  2. 【转】vuex2.0 之 modules

    vue 使用的是单一状态树对整个应用的状态进行管理,也就是说,应用中的所有状态都放到store中,如果是一个大型应用,状态非常多, store 就会非常庞大,不太好管理.这时vuex 提供了另外一种方 ...

  3. [转]关于ReentrantLock中线程读某个变量是否需要加锁

    我在使用ReentrantLock类对变量进行多线程累加时,调用了lock()和unlock()方法,但读取该变量时我未加锁,结果是能正确执行,代码如下: public class Main { pr ...

  4. 将16进制unsigned char数组转换成整数

    /** * 将unsigned char数组转换成long long数值 * {0x00 0x00 0x20 0x00}转换之后得到8192 * * @param str 数组 * @param le ...

  5. python截取字符串

    str = ‘0123456789’ print str[0:3] #截取第一位到第三位的字符 print str[:] #截取字符串的全部字符 print str[6:] #截取第七个字符到结尾 p ...

  6. py QScrollArea

    # -*- coding: utf-8 -*-import jsonimport loggingimport sysimport requestsfrom PyQt5 import QtWidgets ...

  7. 这本小书的目的是引导你进入 React 和 Webpack 的世界。他们两个都是非常有用的技术,如果同时使用他们,前端开发会更加有趣。

    https://fakefish.github.io/react-webpack-cookbook/index.html

  8. 初学Linux系统最应该做对的4件事情[长文]

    “闲来无事,逛逛贴吧”已经是本人无事消磨时间的最佳选择了.五花八门的问题,各式各样的回答,总能给自己带来无限的欢乐.当然也有些问题值得自己去思考或者回答.之前就有人在贴吧里问到“Linux好难啊!该怎 ...

  9. Tomcat错误:getOutputStream() has already been called for this response

    使用weblogic部署时,没有报错.客户现场使用tomcat后报错. 在tomcat下jsp中出现此错误一般都是在jsp中使用了输出流(如输出图片验证码,文件下载等),没有妥善处理好的原因.具体的原 ...

  10. LeetCode 回溯法 别人的小结 八皇后 递归

    #include <iostream> #include <algorithm> #include <iterator> #include <vector&g ...