Python基础笔记(四)
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基础笔记(四)的更多相关文章
- Python基础笔记系列十一:标准输入输出、文件读写和指针等操作
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 标准输入输出一.输入 在sublime中这个时候需要安装SublimeRE ...
- Python基础笔记系列一:基本工具与表达式
本系列教程供个人学习笔记使用,如果您要浏览可能需要其它编程语言基础(如C语言),why?因为我写得烂啊,只有我自己看得懂!! 工具基础(Windows系统下)传送门:Python基础笔记系列四:工具的 ...
- Python 基础语法(四)
Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...
- Python基础知识(四)
Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...
- Python基础学习四
Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...
- 我的Python基础笔记
Python是从刚开始参加工作,就有听各方面的测试大牛推崇,但是刚开始做测试时还是把基础的测试方法放在第一位来学习的,直到半年多以后才开始接触Python. 我的Python基础主要是以廖雪峰老师的在 ...
- Python基础笔记1
这篇笔记来自廖雪峰的Python教程. 一.Python基础 Python使用缩进来组织代码块,务必遵守约定俗成的习惯,坚持使用4个空格的缩进. 在文本编辑器中,需要设置把Tab自动转换为4个空格,确 ...
- python基础笔记-0
python中数据结构,主要有列表.元组.字典.集合. python中最基本数据结构是序列(sequence).序列中每个元素被分配一个序号——即元素位置,也成为索引.第一个索引是0,第二个是1,以此 ...
- Python基础篇(四)_组合数据类型的基本概念
Python基础篇——组合数据类型的基本概念 集合类型:元素的集合,元素之间无序 序列类型:是一个元素向量,元素之间存在先后关系,通过序号进行访问,没有排他性,具体包括字符串类型.元组类型.列表类型 ...
随机推荐
- c#导出数据到csv文本文档中,数据前面的0不见了解决方法
((char)(9)).ToString() + dataRow["FUserName"].ToString().Trim() + "\t",
- android studio学习----The project encoding (windows-1252) does not match the encoding specified in the Gradle build files (UTF-8)
Warning:The project encoding (windows-1252) does not match the encoding specified in the Gradle buil ...
- JVM参数最佳实践:元空间的初始大小和最大大小
本文阅读时间大约4分钟. JVM加载类的时候,需要记录类的元数据,这些数据会保存在一个单独的内存区域内,在Java 7里,这个空间被称为永久代(Permgen),在Java 8里,使用元空间(Meta ...
- Shiro RememberMe 1.2.4 反序列化漏洞详细复现
0x00 前言 今天上班的时候收到了一个复测的任务,打开一看,shiro反序列化漏洞,What?这是个什么东西,经百度查找后才知道,原来是Java的开发框架,好吧,还是没听说过..由于初测报告上的过程 ...
- Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition (ST-GCN)
Spatial Temporal Graph Convolutional Networks for Skeleton-Based Action Recognition 摘要 动态人体骨架模型带有进行动 ...
- Git挽回错误的push(commit)
若你的(zhu)队友不小心把错误的代码提交到远程仓库,特别是包含了很多删除文件指令,不要尝试使用Git的API修改,或者删除Git仓库里的某次提交记录,风险十分大,正确的做法是备份你的本地源码,然后拉 ...
- docker自定义镜像上传阿里云
1.alpine制作jdk镜像 2.Alpine制作jre镜像(瘦身) 3.Docker镜像上传至阿里云 alpine制作jdk镜像 alpine Linux简介 1.Alpine Linux是一个轻 ...
- Layui 模板引擎中用了CheckBox,显示时没有样式
渲染完成后,需要重新调用layui的方法. layui.form.render();
- ECMAScript6之Class
1.Class的基本语法 1.1简介 基本上,ES6 的class可以看作只是一个语法糖,它的绝大部分功能,ES5 都可以做到,新的class写法只是让对象原型的写法更加清晰.更像面向对象编程的语法而 ...
- 【BigData】Java基础_HashSet
HashSet简介 HashSet是一个集合数据类型,具有以下三个特性: (1)可以存储过个数据对象 (2)HashSet中的数据不能重复 (3)HashSet的数据存储是无序的 HashSet的几个 ...