1. 返回函数与闭包

如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)

def getSum(*args):def add():result = 0for i in args:result = result + ireturn resultreturn addmyFun = getSum(1, 2, 3)print(myFun())
# 6

2. 装饰器(decorator)

装饰器是对函数的一种包装,它使函数的功能得到扩展,但又不用修改函数内部的代码;一般用于增加函数执行前后的行为。
下面的例子演示了在一个函数执行前打印当前时间,执行后打印执行完成的提示:

import timedef myDecorator(func):def myWrapper(*args, **kw):print(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(time.time())))f = func(*args, **kw)print(func.__name__, "function is called.")return freturn myWrapper@myDecorator
def hello():print("hello world")hello()
# 2019-04-09 11:38:29
# hello world
# hello function is called.

下面的例子演示了在一个函数返回字符串后,在该字符串前后加上HTML标签:

def setTag(tag):def myDecorator(func):def myWrapper(*args, **kw):beginTag = "<" + tag + ">"endTag = "</" + tag + ">"return beginTag + func(*args, **kw) + endTagreturn myWrapperreturn myDecorator@setTag("div")
def hello(name):return "hello, " + nameprint(hello("wayne"))
# <div>hello, wayne</div>

3. 偏函数(partial function)

偏函数是通过将一个函数的部分参数预先绑定为特定值,从而得到一个新的具有较少可变参数的函数。
下面的例子用偏函数实现了一个转换二进制的函数int2

import functoolsint2 = functools.partial(int, base=2)print("%d %d" % (int("1010101"), int2("1010101")))
# 1010101 85

partial接收三个参数,形式为:partial(func, *args, **keywords),上面演示了只提供**keywords的情况,下面的例子演示了只提供*args的情况:

import functoolsmax2 = functools.partial(max, 10)print(max2(5, 6, 7))
# 等效于max(10, 5, 6, 7)
# 10

4. 模块

编写模块的一般格式如下:
test1.py

#!/usr/bin/env python3
# -*- coding: utf-8 -*-'my test1 module'__author__ = "Wayne"import sysdef init():print(sys.argv)if __name__ == '__main__':init()

当通过命令行的方式运行该模块文件时,Python解释器把一个特殊变量__name__置为__main__。
sys.argv返回的是一个list,执行python3 test1.py,那么sys.argv得到的list是['test1.py'];执行python3 test1.py A B,那么sys.argv得到的list是['test1.py', 'A', 'B']

转载于:https://www.cnblogs.com/CoderWayne/p/10873874.html

Python基础笔记(四)相关推荐

  1. Python基础笔记(四)切片、列表生成式、迭代

    切片 切片操作是用来取list的前N个元素,当然我们可以用循环来实现这个操作 def qu(l,num):x=0L2=[]while x<num: L2.insert(x,L[x]) x=x+1 ...

  2. Python 基础笔记

    Python 基础笔记 内置函数 print() 打印输出 type() 数据类型查询 isinstance() 判断数据是否是已知类型 input() 接受键盘输入 range() 函数 forma ...

  3. python基础笔记(二)

    <黑马>python笔记~二 前言 一.配套视频 二.python基础初级 三.python基础中级 四.python基础高级 目录 python基础中级(列表.元组.字典.字符串) 01 ...

  4. Python基础(四)--字典与集合

    Python基础(四)--字典与集合 1 字典 1.1 什么是字典 字典提供的是一种映射存储的方式.字典分为两个部分,一个是键(key),一个是key所关联的值(value).,一个键关联(或绑定)一 ...

  5. Python基础 笔记(一) Python的介绍

    Python基础 笔记(一) Python的介绍 您好! 欢迎来到木易巷! 接下来,让我们一起来了解Python,走进Python~ 1.编程语言 编程语言(programming language) ...

  6. Python基础——第四章:Python循环语句

    前言 本文是根据黑马程序员Python教程所作之笔记,目的是为了方便我本人以及广大同学们查漏补缺. 不想做笔记直接来我的频道.当然啦,自己的笔记才是最好的哦! PS:感谢黑马程序员! 教程链接:黑马程 ...

  7. python基础笔记,超详细,包含面向对象基础,爬虫实战【持续更新中...】

    前言: 本笔记中的函数和方法同义,面向python3 本笔记部分概念及代码由newbing搜集整理得出 本笔记适合有一定其他编程语言基础的同学,因为笔记中省略了部分基础概念(比如整型,浮点型等基本数据 ...

  8. Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象

    接阿里云python课程笔记(三):数据结构 我们讨论一下python中的深拷贝和浅拷贝 dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}# 引用对象dic ...

  9. 霍格沃兹测试开发学社技术学习笔记之——Python基础笔记

    # 阶段十一-Python语言和测试框架(1) ## 1.pycharm环境变量配置和安装 ## 2.基础数据类型 数字 字符串 ## 3.运算符 字符串算数运算符 比较运算符 赋值运算符 逻辑运算符 ...

  10. 廖雪峰Python基础笔记

    python 1.第一个python程序 交互模式(>>>)退出用exit() 打印使用print()函数,打印的内容可以用单引号或者双引号括起来,但是不能够混用 命令行模式,可以输 ...

最新文章

  1. java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.init([Ljava
  2. ExtJS4.2学习(9)——MVC
  3. boost::mp11::mp_invoke_q相关用法的测试程序
  4. HDU3662(求三维凸包表面的多边形个数,表面三角形个数,体积,表面积,凸包重心,凸包中点到面的距离)
  5. php cdi_Swing应用程序中的CDI事件将UI和事件处理分离
  6. tf.app.flags和tf.app.run的使用
  7. [LeetCode] 234. Palindrome Linked List_Easy tag: Linked List
  8. python3 threading.lock_python3爬虫lock如何有序的处理多线程?
  9. Leetcode题目:House Robber
  10. hp eva 4400存储配置手记
  11. Windows8 Metro应用开发之C#(3)- 数据控件ListView、GridView、FlipView
  12. Java 实战篇-JDK9新特性
  13. RemObjects Remoting SDK-SEO狼术
  14. IPHONE屏幕大小,分辨率解析
  15. ipad html兼容问题,如何处理ipad safari CSS 样式的兼容性?_html/css_WEB-ITnose
  16. 040_初识 web 前端 HTML 超文本标记语言
  17. 新辰:一位90后的电商梦 自述创业失败的教训
  18. Charmer--viv【并查集】【最小生成树】
  19. 神经网络模型无法正常工作时我们应该做什么(系列)——数据标准化处理(Normalize)
  20. 关于Lock锁用法的详细讲解(案例驱动,手把手教学)

热门文章

  1. 【C练习】两个已经从小到大的数组合并成为一个从小到大排序的数组
  2. Java实现FastDFS文件上传、查询、下载和删除
  3. String、StringBuffer、StringBuilder三者的区别
  4. VS2013打开项目出现未找到与约束contractname 匹配的导出的错误
  5. SqlServer中Group By高级使用--Inner Join分组统计
  6. C++ Windows时间函数 QueryPerformanceCounter()与QueryPerformanceFrequency()
  7. Proto3 Any与Oneof(转载)
  8. 33. 把数组排成最小的数(C++版本)
  9. jenkins忘记密码和常用插件的下载
  10. linux字符串处理命令,linux 命令之 字符串处理命令——paste