Python之路,第十二篇:Python入门与基础12
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的更多相关文章
- Python之路(第十二篇)程序解耦、模块介绍\导入\安装、包
一.程序解耦 解耦总的一句话来说,减少依赖,抽象业务和逻辑,让各个功能实现独立. 直观理解“解耦”,就是我可以替换某个模块,对原来系统的功能不造成影响.是两个东西原来互相影响,现在让他们独立发展:核心 ...
- Python之路(第二十二篇) 面向对象初级:概念、类属性
一.面向对象概念 1. "面向对象(OOP)"是什么? 简单点说,“面向对象”是一种编程范式,而编程范式是按照不同的编程特点总结出来的编程方式.俗话说,条条大路通罗马,也就说我们使 ...
- Python开发【第二十二篇】:Web框架之Django【进阶】
Python开发[第二十二篇]:Web框架之Django[进阶] 猛击这里:http://www.cnblogs.com/wupeiqi/articles/5246483.html 博客园 首页 ...
- Python学习【第十二篇】模块(2)
序列化 1.什么是python序列化? 把变量从内存中变成可存储或传输的过程称之为序列化,在Python中叫pickling 序列化就是将python的数据类型转换成字符串 反序列化就是将字符串转换成 ...
- Python之路(第二十四篇) 面向对象初级:多态、封装
一.多态 多态 多态:一类事物有多种形态,同一种事物的多种形态,动物分为鸡类,猪类.狗类 例子 import abc class H2o(metaclass=abc.ABCMeta): def _ ...
- Python之路(第十五篇)sys模块、json模块、pickle模块、shelve模块
一.sys模块 1.sys.argv 命令行参数List,第一个元素是程序本身路径 2.sys.exit(n) 退出程序,正常退出时exit(0) 3.sys.version . sys.maxint ...
- 图解Python 【第十二篇】:Django 基础
本节内容一览表: Django基础:http://www.ziqiangxuetang.com/django/django-tutorial.html 一.Django简介 Django文件介绍:ht ...
- Python开发【第十二篇】python作用域和global nonlocal
python的作用域 作用域也叫名字空间,是访问变量时查找变量名的范围空间 python中的四个作用域 LEGB 作用域 英文解释 英文缩写 局部作用域 Local(function) L 外部嵌套函 ...
- 【Python之路】第六篇--Python基础之模块
模块,用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需要多个函数才 ...
- Python 学习笔记(十二)Python文件和迭代(一)
文件 文件和文件夹 文件:文本文件.二进制文件 文件夹:(windows) G:\pythonWorkspace\python\study (linux/mac) /home/workspace/py ...
随机推荐
- echarts-------饼形图
首先echarts是一个可以提供给用户体验效果更好的一个图形界面, Canvas 类库 ZRender. 1.下载echarts的js,可以在官方网址进行下载echarts.min.js 2.将下载下 ...
- 理解javascript封装
封装可以被定义为对对象的内部数据表现形式和实现细节进行隐藏.通过封装可以强制实施信息隐藏. 在JavaScript中,并没有显示的声明私有成员的关键字等.所以要想实现封装/信息隐藏就需要从另外的思路出 ...
- Django之信号和序列化
前言 Django的信号要从一张抽象图和一个需求说起: 赛道:Django 赛车:http请求 基础设施:Django设置的信号 一.Django内置信号类型 1.既然赛道上有各种基础设置,那么Dja ...
- dubbo 框架小结
1. dubbo:protocol Dubbo缺省协议采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况. <dubbo:proto ...
- Qt Widgets——工具栏和状态栏
本文主要涉及QSizeGrip ,QStatusBar ,QToolBar QToolBar 工具栏默认位于菜单栏下方,其上添加一个个action按钮,用于执行动作 绝大多谢以前都涉及过,只列出 QT ...
- utf8mb4与utf8的区别
今天在测试小程序保存表情时,数据库插入数据时报错ER_TRUNCATED_WRONG_VALUE_FOR_FIELD: Incorrect string value: '\xF0\x9F\x98\x8 ...
- 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)
锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...
- windbg 定位崩溃问题
三板斧如下: 使用windbg打开dump文件,设置好对应进程的 pdb 文件(这个很关键.为了避免releas优化导致符号文件错乱,我发布的所有 relea ...
- Win10系列:UWP界面布局基础2
属性设置 在面向对象程序开发中,所提及的属性通常指的是对象的属性.在XAML代码中,定义元素时也可以为其设置属性,例如对于一个TextBox元素,有背景属性.宽度属性和高度属性等.为了满足实际应用的需 ...
- .NetCore发布到Centos docker
将.netcore mvc项目发布到centos7的docker中.环境 vmware14+Centos7+docker-ce 1.使用vs将.netcoremvc项目发布到本地,修改发布后的目录 名 ...