1. 返回函数与闭包

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

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

2. 装饰器(decorator)

装饰器是对函数的一种包装,它使函数的功能得到扩展,但又不用修改函数内部的代码;一般用于增加函数执行前后的行为。

下面的例子演示了在一个函数执行前打印当前时间,执行后打印执行完成的提示:

import time

def 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 f
return 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) + endTag
return myWrapper
return myDecorator @setTag("div")
def hello(name):
return "hello, " + name print(hello("wayne"))
# <div>hello, wayne</div>

3. 偏函数(partial function)

偏函数是通过将一个函数的部分参数预先绑定为特定值,从而得到一个新的具有较少可变参数的函数。

下面的例子用偏函数实现了一个转换二进制的函数int2

import functools

int2 = functools.partial(int, base=2)

print("%d %d" % (int("1010101"), int2("1010101")))
# 1010101 85

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

import functools

max2 = 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 sys def 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']

Python基础笔记(四)的更多相关文章

  1. Python基础笔记系列十一:标准输入输出、文件读写和指针等操作

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...

  2. Python基础笔记系列一:基本工具与表达式

    本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...

  3. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  4. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  5. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

  6. 我的Python基础笔记

    Python是从刚开始参加工作,就有听各方面的测试大牛推崇,但是刚开始做测试时还是把基础的测试方法放在第一位来学习的,直到半年多以后才开始接触Python. 我的Python基础主要是以廖雪峰老师的在 ...

  7. Python基础笔记1

    这篇笔记来自廖雪峰的Python教程. 一.Python基础 Python使用缩进来组织代码块,务必遵守约定俗成的习惯,坚持使用4个空格的缩进. 在文本编辑器中,需要设置把Tab自动转换为4个空格,确 ...

  8. python基础笔记-0

    python中数据结构,主要有列表.元组.字典.集合. python中最基本数据结构是序列(sequence).序列中每个元素被分配一个序号——即元素位置,也成为索引.第一个索引是0,第二个是1,以此 ...

  9. Python基础篇(四)_组合数据类型的基本概念

    Python基础篇——组合数据类型的基本概念 集合类型:元素的集合,元素之间无序 序列类型:是一个元素向量,元素之间存在先后关系,通过序号进行访问,没有排他性,具体包括字符串类型.元组类型.列表类型 ...

随机推荐

  1. javaEE复习重点个人总结

    最近在学院或集队的群里看见最多的就是求javaEE大作业了,那么突然有感而发,写点参考性的期末复习总结. 第一章JavaEE 概述: 1:两层体系应用体系结构 安全性低,部署困难,消耗系统资源 2 三 ...

  2. CPU使用率与负载的爱恨情仇

    今天有一个电话面试,面试官问我:CentOS怎么查看CPU负载?我说:看top的第一行有load average.面试官又问:为什么从这就判定是负载高呢?依据是什么呢?然后... 然后我就尴尬了,挂了 ...

  3. 利用 FluentScheduler 启动定时器计划任务

    FluentScheduler 是什么? Automated job scheduler with fluent interface. 这是作者在 Github 上的介绍,就是一个定时任务管理器.在 ...

  4. django 基础1

    1.web应用 本质是基于socket实现的应用程序 浏览器---------服务器 2.http协议:应用层协议 1.基于TCP协议 2.基于请求响应 3.短连接 4.无状态 请求协议 浏览器--- ...

  5. apache在linux下安装

    yum安装 主流Linux系统版本基本上都集成了apache服务器httpd,我们可以通过如下命令来查看我们的操作系统上是否已经安装了apache服务器httpd rpm -qa | grep htt ...

  6. MySql数据库中的datediff函数

    MySql数据库中的datediff函数:主要是用来返回两个日期之间相隔的天数   一半情况下是大日期在前,小日期在后的 这样写也是能够运行的 要注意查询结果:

  7. [冬令营day1T3]Tree

    题目描述 Description  给一棵N个节点的无根树,求路径长度=K的简单路径数 输入描述 Input Description 第一行两个正整数N,K 接下来N-1行,每行两个正整数x,y,表示 ...

  8. innerHTML, innerText, outerHTML, outerText的区别

    innerHTML:返回标签内部嵌套的子元素的所有html标签+文本内容content. innerText:返回标签内部嵌套的子元素的文本内容content. outerHTML:返回标签本身+嵌套 ...

  9. SDOI 2019 R2 摸鱼记

    其实并没有什么动力来写这篇游记,毕竟呢,明明已经做好了被吊打的心理准备,可是当 Day 2 挂到没分时,当看到自己在高一里还排名二十时,还是有些,有些难言的滋味.学长们该走的真的都走了,就要只剩下 z ...

  10. LOJ2778 [BOI2018]基因工程 随机化

    题面 不想写了...留坑吧... 基本思想可参照随机化解决判同问题的总结 代码: #include<bits/stdc++.h> using namespace std; #define ...