Python中的函数(高级使用)
一、将函数作为变量去使用
在Python中函数也是一种对象,是一种名为function的对象,所以可以将函数赋值给变量,类似整数、浮点数、列表、元组、字典赋值给变量。
我们编写如下程序:
#coding=utf-8
def power(base,exponent):
"""定义函数:计算乘方"""
result = 1
for i in range(1,exponent + 1):
result *= base
return result my_function = power
print(my_function(2,3))
运行程序之后控制台打印如下:

解释:我们先定义了一个函数名为power作用就是用来计算乘方,第一个参数为底数,第二个参数为指数,第9行,我们将power() 函数赋值给变量my_pow,所以在第10行我们就可以用my_pow调用power() 函数了,有此可见,我们可以在程序不同的时间或者位置将my_function指向其他已定义过的函数进行调用,从而使程序更加灵活的运行,所以这是使用函数变量的一大好处。
二、将函数作为一个函数的形参
有时候定义一个这样的函数:该函数大部分计算逻辑都能确定,但是有些处理逻辑无法确定,所以某些程序代码需要根据具体情况改变,此时我们可以使用函数形参来解决,这样就可以在调用函数时传入不同函数作为参数,从而动态改变这段代码。
我们编写如下的栗子:
#coding=utf-8
def funcs(data,fn):
"""fn形参为函数类型即是function类型"""
result=[]
for x in data:
result.append(fn(x)) #在将data中的元素遍历、计算后放入新数组
return result def square(x):
"""计算一个数的平方并返回"""
return x*x def cube(x):
"""计算一个数的三次方并返回"""
return x*x*x def factorial(x):
"""计算一个数的阶乘并返回"""
result = 1
for index in range(2,x+1):
result *= index
return result data = [2,3,4,9,8,7]
print("原数据:", data)
#在传入不同的函数对象给funcs函数后会得到不同的结果
print("计算列表元素的平方:")
print(funcs(data,square))
print("计算列表元素的三次方:")
print(funcs(data,cube))
print("计算列表元素的阶乘:")
print(funcs(data,factorial))
print("funcs函数的类型:")
print(type(funcs))
在运行程序后,控制台打印如下:

从上面的例子中,可以看出函数可以作为参数,在调用函数时动态传入,这样即使数据是相同的,但实际调用的函数不同。在第34行,我们打印了funcs函数的类型,是function类型即function对象。
三、将函数作为另一个函数的返回值
将上面的代码稍作改变即可:
#coding=utf-8
def get_funcs(func_name): def square(x):
"""计算一个数的平方并返回"""
return x*x def cube(x):
"""计算一个数的三次方并返回"""
return x*x*x def factorial(x):
"""计算一个数的阶乘并返回"""
result = 1
for index in range(2,x+1):
result *= index
return result
"""根据传入func_name返回局部函数"""
if func_name == "square":
return square
elif func_name == "cube":
return cube
else:
return factorial #在传入不同的参数名给funcs函数后会得到不同的函数对象
print("计算数字4的平方:")
my_funct = get_funcs("square")
print(my_funct(4))
print("计算数字5的三次方:")
my_funct = get_funcs("cube")
print(my_funct(5))
print("计算数字6的阶乘:")
my_funct = get_funcs("other_function")
print(my_funct(6))
运行程序,控制台打印如下:

解释:在定义了返回函数的函数get_funcs() 后,在调用该函数时直接传入你需要调用的函数名即可返回你需要的函数,用变量接收即可使用,如上面的代码。
Python中的函数(高级使用)的更多相关文章
- 11、python中的函数(基础)
一.什么是函数? 在数学中,x2+2x2+3=10这样的叫方程. 而ax2+bx2+c=d这样的才叫函数.数学的函数中,abcd等待输入的未知量叫自变量,它需要我们自己去输入,而x这种待求得未知量叫因 ...
- Python中split()函数的用法及实际使用示例
Python中split()函数,通常用于将字符串切片并转换为列表. 一.函数说明: split():语法:str.split(str="",num=string.count(st ...
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- python中range()函数的用法
python中range()函数可创建一个整数列表,一般用在for循环中. range()函数语法: range(start,stop[,step]) 参数说明: star: 计数从star开始.默认 ...
- Python 中的函数
学了 Python 中的数据类型,语句,接下来就来说一下 Python 中的函数,函数是结构化编程的核心.我们使用函数可以增加程序的可读性.自定义函数时使用关键字def 函数由多条语句组成.在定义函数 ...
- python中format函数
python中format函数用于字符串的格式化 通过关键字 1 print('{名字}今天{动作}'.format(名字='陈某某',动作='拍视频'))#通过关键字 2 grade = {'nam ...
- Python中readline()函数 去除换行符
从Python中readline()函数读取的一行内容中含有换行符\n,很多时候我们需要处理不含有换行符的字符串,此时就要去掉换行符\n. 方法是使用strip()函数. 例子如下: f = open ...
- Python中int()函数的用法浅析
int()是Python的一个内部函数 Python系统帮助里面是这么说的 >>> help(int) Help on class int in module __builti ...
- 【313】python 中 print 函数用法总结
参考:python 中 print 函数用法总结 参考:Python print() 函数(菜鸟教程) 参考:Python 3 print 函数用法总结 目录: 字符串和数值类型 变量 格式化输出 p ...
- python中filter函数
python中filter()函数 filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断 ...
随机推荐
- Ubuntu 18.04通过命令禁用/开启触控板
Ubuntu下经常遇到无法用快捷键关闭触控板的情况,博主的电脑安装Ubuntu18.04后便出现了该问题. 解决办法: 首先查看输入设备的id,命令行输入: xinput ,插鼠标与不插鼠标时,Tou ...
- django中嵌套的try-except
# 因为此时为yaml模板,而且只抓取node port,所以这样处理效率快content_dict = parse_yaml(content.replace("{{", &quo ...
- 面向对象程序设计(Java) 第4周学习指导及要求
2019面向对象程序设计(Java)第4周学习指导及要求(2019.9.17-2019.9. 23) 学习目标 掌握类与对象的基础概念,理解类与对象的关系: 掌握对象与对象变量的关系: 掌握预定义类 ...
- 201871010112-梁丽珍《面向对象程序设计(java)》第二周学习总结
项目 内容 这个作业属于哪个课程 <任课教师博客主页链接>https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 <作业链接地址>http ...
- MySQL 数据库 查询语句的基本操作,单表查询,多表查询
1.查询语句的基本操作 - select - from - where - group by - having - distinct - order by - limit - 聚合函数: count, ...
- 前端小练习-Michael的博客界面(粗糙版)
michael-blog.html <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- Python进阶-XIII 导入模块和包 异常处理
一.模块的导入 1).import # 测试一:money与my_module.money不冲突 import my_module money=10 print(my_module.money) '' ...
- MACbook安装WIN7中文版后乱码的解决办法
控制面板→时钟.语言和区域→区域和语言→管理→更改系统区域设置→选择为中国,简体中文→确定,按照要求你重启即可. 原来这个本子是香港买的,默认区域是英语,我说怎么乱码.
- [LeetCode] 5. Longest Palindromic Substring 最长回文子串
Given a string s, find the longest palindromic substring in s. You may assume that the maximum lengt ...
- oracle--查询速度慢
查询速度慢的原因很多,常见如下几种: 1, 没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷) 2, I/O吞吐量小,形成了瓶颈效应. 3, 没有创建计算列导致查询不优化. 4, ...