自定义函数_python3基础07函数(自定义)
"pythonic生物人"的第43篇分享。
详细介绍python中:自定义函数的构建;参数传递;模块中调用函数。
目录
0、楔子
1、自定义函数格式
2、编写函数说明文档
3、函数参数
函数形参和实参区别
位置实参
关键字实参
默认实参
让实参可选
传递任意数量的实参
结合使用位置实参和任意数量实参
使用任意数量的关键字实参
4、函数返回值
将函数存储在模块中并导入新程序中
正文开始啦
0、楔子
函数可以理解为多条语句整合而成的代码块,指定特定的名称, 用于实现具体的功能。函数可以实现代码更好的复用,是结构化编程的核心。例如,已知圆的半径r求圆的面积,可以通过如下代码解决。
import mathr = 3S = math.pi*r*rprint(S)
28.274333882308138
但是,当需要求多个圆的面积时,反复写上面代码就显得很繁琐,这时可以定义一个求圆面积的函数s_circle,每次只需传入不同圆的半径,即可计算不同圆面积。
def s_circle(r): S = math.pi*r*rreturn Sprint(s_circle(3))print(s_circle(333))
28.274333882308138
348368.06776391855
1、 自定义函数格式
格式如下:
def fun_name(args): fun_bodyreturn xxfun_name,自定义的函数名;args,传入函数的参数;fun_body,函数体,即函数想实现的功能;return xx,return结束函数,函数返回值 xx,不指定则返回None。
举个栗子,定义一个计算圆面积的函数:
def s_circle(r):#自定义函数s_circle,传入的参数r。 S = math.pi*r*r#函数体return S #返回圆的面积Sprint(s_circle(3))#函数名()调用函数,括号内为传入
28.274333882308138
当函数体只有一行时,可以置于def语句同一行。
def for_multi(x,y): print(x*y)#函数定义for_multi(10,12)#调用函数
120
2、编写函数说明文档
说明文档置于函数开头处,作为函数的一部分存储起来,通过函数名.__doc__可查看说明文档。
def s_circle(r):"compute the circular area with radius"#函数说明文档内容 S = math.pi*r*rreturn Ss_circle.__doc__#函数__doc__属性存储函数说明文档
'compute the circular area with radius'
3、函数参数
形参和实参区别
- 形参:定义函数时,函数名称后面括号里的内容为形参;
- 实参:调用函数时,括号里的内容为实参。
def hello2sb(sb):#括号内为传入的参数,此处sb为形参。 print("Hello %s!"%sb.title())hello2sb("jack") #此处jack为调用hello2sb的实参,是调用函数时传递给函数的信息。
Hello Jack!
位置实参
调用函数时按照形参的顺序关联实参。
def des_sb(name,provice):"""describe sb""" print("%s comes from %s."%(name.title(),provice.title()))#title函数返回标题化字符,单词的开头为大写,其余为小写des_sb("cao","anhui")
Cao comes from Anhui.
关键字实参
形参=实参传递参数,无需考虑实参顺序。
def des_sb(name,provice):"""describe sb""" print("%s comes from %s."%(name.title(),provice.title()))#无需考虑输入实参顺序,以下两种输出一样des_sb(name = "cao",provice = "anhui")des_sb(provice = "anhui",name = "cao")#颠倒实参顺序
Cao comes from Anhui.
Cao comes from Anhui.
默认实参
定义函数时,给形参一个默认值,调用函数时若提供了实参则使用提供值,否则使用默认值。
def des_sb(name,provice,dynasty="Three Kingdoms Era"):#定义时形参dynasty指定默认值"""describe sb""" print("%s comes from %s of %s."%(name.title(),provice.title(),dynasty))des_sb(name = "cao",provice = "anhui")#形参此处未指定实参,调用默认值des_sb(name = "cao",provice = "anhui",dynasty = "Qin")#dynasty指定实参,使用实参
Cao comes from Anhui of Three Kingdoms Era.
Cao comes from Anhui of Qin.
**注意:**以上三种参数传递方式可以混用,自己最容易理解的调用方式即可。
让实参可选
指定形参默认值为空字符串,放到所有形参最后,则该形参可空(可以提供实参也可以不用)。
def return_fullname(firstname,lastname,middlename=""):"""Show fullname"""if middlename: fullname = " ".join((middlename.title()+""+lastname,firstname.title()))else: fullname = " ".join((lastname.title(),firstname.title()))return fullname#返回fullname#调用函数fullname = return_fullname(firstname = "cao",lastname = "cao")#middlename形参为空fullname1 = return_fullname(firstname = "cao",middlename = "meng",lastname = "de")print(fullname)print(fullname1)
Cao Cao
Mengde Cao
传递任意数量的实参
定义函数时使用:*形参名称。
def known_tangera(*heros):#星号(*)使得Python将所有实参存入heros元组中"""show known heros in tang""" print(heros)known_tangera("yuanba li","shiming li")known_tangera("yuanba li","shiming li","cheng nuo")
('yuba li', 'shiming li')
('yuba li', 'shiming li', 'cheng nuo')
结合使用位置实参和任意数量实参
在函数定义中将接纳任意数量实参的形参(*形参名)放在最后.。
def make_pizza(size, *toppings):"""概述要制作的比萨""" print("\nMaking a " + str(size) + "-inch pizza with the following toppings:")for topping in toppings:#toppings元组存储任意数量的实参 print("- " + topping)make_pizza(16, 'pepperoni')make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
Making a 16-inch pizza with the following toppings:
- pepperoni
Making a 12-inch pizza with the following toppings:
- mushrooms -
- green peppers
- extra cheese
使用任意数量的关键字实参
定义函数时使用:**形参名称。
def build_profile(first, last, **user_info):#形参**user_info 中的两个星号让Python创建一个名为user_info 的空字典, #并将收到的所有名称—值对都封装到这个字典中。"""创建一个字典, 其中包含我们知道的有关用户的一切""" profile = {} profile['first_name'] = first profile['last_name'] = lastfor key, value in user_info.items(): profile[key] = valuereturn profile#传递user_profile = build_profile('albert', 'einstein', location='princeton', field='physics')print(user_profile)
{'first_name': 'albert', 'last_name': 'einstein', 'location': 'princeton', 'field': 'physics'}
4、函数返回值
在函数中, 可使用return 语句将值返回到调用函数的代码行。
将函数存储在模块中并导入新程序中
将函数存储在被称为模块的独立文件(模块可以理解为以.py结尾的文件)中,再将模块导入到主程序中。import 语句允许在当前运行的程序文件中使用模块中的代码。导入模块的方法有多种, 下面对每种都作简要的介绍
- 导入整个模块
下面创建pizza模块,pizza.py:
def make_pizza(size, *toppings):"""概述要制作的比萨""" print("\nMaking a " + str(size) +"-inch pizza with the following toppings:")for topping in toppings: print("- " + topping)
- 在pizza.py所在的目录中创建另一个名为making_pizzas.py的模块:
import pizza#导入pizza模块#让Python打开文件pizza.py,并将其中的所有函数都复制到这个程序中。#本程序可以使用pizza.py中定义的所有函数。pizza.make_pizza(16, 'pepperoni')#调用pizza模块中make_pizza函数pizza.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
Making a 16-inch pizza with the following toppings:
- pepperoni
Making a 12-inch pizza with the following toppings:
- mushrooms
- green peppers
- extra cheese
- 导入模块特定的函数
#从module_name模块中导入任意数量函数,函数之间逗号分割。
from module_name import function_0, function_1, function_2
making_pizzas.py
from pizza import make_pizza#只导入pizza模块中的make_pizza函数make_pizza(16, 'pepperoni')#调用pizza模块中make_pizza函数make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
- 导入模块中的所有函数
使用星号(* ) 运算符可让Python导入模块中的所有函数。
from pizza import *#导入pizza模块所有函数make_pizza(16, 'pepperoni')make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese')
- 使用as 给函数指定别名
from pizza import make_pizza as mp#函数别名mpmp(16, 'pepperoni')mp(12, 'mushrooms', 'green peppers', 'extra cheese')
- 使用as 给模块指定别名
import pizza as p#模块别名pp.make_pizza(16, 'pepperoni')p.make_pizza(12, 'mushrooms', 'green peppers', 'extra cheese'
参考资料
Python编程:从入门到实践Python基础教程(第3版)
同系列文章
python3基础04字典(dict)和集合(set)python3基础05布尔类型和比较运算符python3基础06流程控制语句
原创不易"点赞"、"在看"鼓励下呗!
自定义函数_python3基础07函数(自定义)相关推荐
- python如何自定义函数_python基础之函数(自定义函数)
函数: 函数的定义: 初中数学函数定义:一般的,在一个变化过程中,如果有两个变量x和y,并且对于x的每一个确定的值,y都有唯一确定的值与其对应,那么我们就把x称为自变量,把y称为因变量,y是x的函数. ...
- python123自定义幂函数_python基础之函数
python 函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也 ...
- python3 全局变量_Python3基础 当函数中的局部变量与全局变量同名了,各管各的...
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体. ------------------------------------- ...
- Python基础07 函数
函数最重要的目的是方便我们重复使用相同的一段程序. 将一些操作隶属于一个函数,以后你想实现相同的操作的时候,只用调用函数名就可以,而不需要重复敲所有的语句. 函数的定义 首先,我们要定义一个函数, 以 ...
- python入门之函数结构函数的参数_python3基础之函数参数类型
函数的参数是函数内部与外部交流的纽带,上一篇文章我们使用了最简单的参数形式(就一个参数).接下来测试一下多个参数的情况是怎样的? 1.测试1 例子中使用了两个参数p1和p2, 函数的功能就是打印出p1 ...
- python跨文件调用lambda函数_python基础-4 函数参数引用、lambda 匿名函数、内置函数、处理文件...
1 语法2 以下是round()方法的语法:3 4 round( x [, n] )5 参数6 x --这是一个数值表达式7 8 n --这也是一个数值表达式9 10 返回值11 该方法返回 x 的小 ...
- oracle java数据类型转换函数_Oracle基础——单行函数(类型转换函数)
零点起飞学Oracle 正版现货 155.4元 (需用券) 去购买 > Oracle基础--单行函数(类型转换函数) 在执行运算的过程中,经常需要把一种数据类型转换成另一种数据类型. 数据转换分 ...
- python filter函数_python基础——filter函数
python基础--filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- android arrayadapter自定义,Android零基础入门|自定义ArrayAdapter
原标题:Android零基础入门|自定义ArrayAdapter ListView用起来还是比较简单的,也是Android应用程序中最重要的一个组件,但其他ListView可以随你所愿,能够完成很多想 ...
最新文章
- 软件测试--利用组合覆盖法设计测试用例
- Nginx查看并发连接
- python流程控制语句-python语言的流程控制
- JDK 1.4 主要新特性
- Qt Creator测验Testing
- 反序列化 jackson_使用Jackson和Super类型令牌的Json反序列化
- IOS – OpenGL ES 调节图像对比度 GPUImageContrastFilter
- php验证旧密码,PHP最佳实践之过滤、验证、转义和密码
- Android应用程序组件
- 【译】区块链是如何工作的——用JavaScript演示
- RTSP丢包处理原理及doubango代码改进
- es6阮一峰-import、export学习
- linux终端 快捷键
- arpu计算方法、pv、uv、ip的意思
- 天梯赛L2-016 愿天下有情人都是失散多年的兄妹
- 全球与中国光学光源市场现状及未来发展趋势
- 家庭智能 HomeAssistant 四大组件的安装
- (机顶盒)智能卡通信协议破解智能卡的基础知识
- Git 的一些使用细枝末节
- 淘宝网上的搞笑差评集锦
热门文章
- powerbi导入地图_Power BI系列教程之powerBI功能介绍及使用导引(一)
- 什么是电视光端机?电视光端机是怎么分类的?
- 【渝粤教育】电大中专跨境电子商务理论与实务 (28)作业 题库
- 浅谈工业无线遥控器的基本定义及原理
- php vue联动查询,使用vue.js实现联动效果的示例代码
- php中可以实现分支,PHP中的分支及循环语句
- 随机过程:指数分布、泊松过程、更新过程(renewal process)+大数定律
- python中int函数的用法浅析_Python中int()函数的用法浅析
- 【2021.02.09更新】数字信号处理公式推导
- 截止角频率和截止频率的关系_开关电源的控制环截止频率和开关频率有什么关系?...