Python中如何自定义函数
作者:棉猴 发布时间:2021-12-12 20:20:58
Python自定义函数
在Python编程中,可以使用已经定义好的函数,也可以自定义函数实现某些特殊的功能。
自定义函数的语法
在Python中,自定义函数的语法如下所示
def 函数名(参数):
函数体
其中,def是关键字;之后跟的是函数名,通过函数名来调用该函数;函数名之后是一个圆括号,圆括号内部是函数的参数,通过参数可以将数据传递到函数内部;函数体是函数实现的功能。
需要注意的是(1)在圆括号之后有冒号(2)函数体要有缩进。
自定义函数的实现
图1的代码中代码自定义了一个名为func的函数。
图1 自定义函数func
其中,该自定义函数的函数名是func,i是func的参数。func()函数的功能是打印出从0到i-1的数字,i的值由外部传递到函数内部。
自定义函数的调用
通过图2中的代码调用自定义函数func()。
图2 调用func()函数
其中,func()函数的参数设置为3,此时输出的是0-2的数字;修改func()的参数值,如图3所示。
图3 修改func()函数的参数值
此时输出的是0-4的数字。
Python自定义函数基础概念
函数定义语法
def 函数名(形参列表):
语句块
函数定义语句(def 语句) 的完整语法:
[@装饰器1] [@装饰器2] [...]
def 函数名([位置形参], [*元组形参], [命名关键字形参], [**字典形参]):
'''文档字符串'''
语句块
注: [] 中括号代表其内部可以省略
函数文档字符串
函数内第一次未被赋值给任何变量的字符串是此函数的文档字符串。
说明:
1. 文档字符串通常用来说明本函数的功能和使用方法
2. 在交互模式下输入: help(函数名) 可以查看函数的'文档字符串'
3. 函数的文档字符串绑定在函数的 __doc__ 属性上
函数定义规则
1. 函数的名字就是语句块的名称
2. 函数名的命名规则与变量名相同(函数名必须是标识符)
3. 函数名是一个变量(不要轻易对其赋值)
4. 函数有自己的名字空间,在函数外部不可以访问函数内部的变量,在函数内可以访问函数外部的变量,但不能修改此变量。
5. 函数如果不需要传入参数,形参列表可以为空
6. 语句块部分,内容不能为空,如果为空需要填充pass
形参定义方式
形参:函数调用时,接收调用时传递的数据
【1】位置形参
【2】关键字形参
【3】缺省参数
def 函数名(形参名=默认实参1, 形参名2=默认实参2, ...):
pass
缺省参数必须自右至左依次存在,如果一个参数是缺省参数,则其右侧的所有参数都必须是缺省参数。
【4】*args
星号元组形参,收集多余的位置传参
def 函数名(*元组形参名):
pass
【5】**kwargs
双星号字典形参,收集多余的关键字传参
def 函数名(**字典形参名):
pass
【6】不定长形参
星号元组形参,双星号字典形参
可以接受任意的位置传参和关键字传参
def fun(*args,**kwargs):
pass
位置形参,缺省参数,星号元组形参,双星号字典形参可以混合使用.
函数形参自左至右的顺序为:
位置形参
星号元组形参
命名关键字形参
双星号字典形参
函数调用
函数名(实参)
注:
1. 函数调用是一个表达式
2. 如果函数内部没有return语句,函数调用完毕后返回None对象
3. 如果函数需要返回其它的对象需要用到 return 语句
4.函数名是一个变量,绑定的是函数对象
函数调用时参数的传递形式
【1】位置传参
实参和形参的位置对应,将实参数据传递给函数形参。
实参和形参按位置一一对应。
实参个数和形参个数必须一致。
【2】序列传参
位置传参的一种。
用 * 将序列拆解后按位置进行传递的传参方式
【3】关键字传参
按形参的名称将实参数据传递给形参。
实参和形参按形参名称匹配。
【4】字典关键字传参
实参为字典,将字典用'**' 拆解后再进行关键字传参的传参方式。
字典的键名必须和形参一致,切数量相同。
字典的键必须为字符串。
全局变量与局部变量
【1】全局变量
① 定义在函数外部,模块内部的变量称为全局变量
② 全局变量所有函数都可以直接访问(但函数内不能将其直接赋值)
【2】局部变量
① 定义在函数内部的变量称为局部变量(函数的形参也是局部变量)
② 局部变量只能在函数内部使用
③ 局部变量在函数调用时才能够被创建,在函数调用之后会自动销毁
函数的功能性
① 一个函数可以作为另一个函数调用时的实参,传递给此函数
def f1():
print("f1被调用")
def f2():
print("f2被调用")
def fx(fn):
print(fn)
fn() # 此时这是调用什么呢?
fx(f1)
fx(f2)
#结果
<function f1 at 0x7f7a52ed6f28>
f1被调用
<function f2 at 0x7f7a51757c80>
f2被调用
#---------------------
def goodbye(L):
for x in L:
print("再见:", x)
def hello(L):
for x in L:
print("你好:", x)
def operator(fn, L):
fn(L)
operator(hello, ['Tom', 'Jerry', 'Spike'])
#结果
你好: Tom
你好: Jerry
你好: Spike
② 一个函数可以作为另一个函数的返回值
def fx():
return max
fn = fx()
print(fn([1, 3, 5, 7]))
#结果
7
③ 函数可以嵌套
函数式编程
用一系列函数解决问题。
优点:
【1】用每一个函数完成细小的功能,一系列函数的任意组合可以完成大问题
【2】函数仅接受输入并产生输入,不包含任何能影响输出的内部状态
要求:
def 语句创建的函数最好不要访问局部作用域以外的变量,这样可以保证返回结果的唯一性(可重入性)
函数的 可重入性(结果唯一性)
如果一个函数的输入参数一定,则返回结果必须一定的函数称为可重入函数
【1】 可重入函数,传入参数一定.结果必然一定
def myadd(x, y):
return x + y
【2】不可重入函数:
y = 200
def myadd2(x):
return x + y
print(myadd2(10)) # 210
y = 300
print(myadd2(10)) # 310
来源:https://blog.csdn.net/hou09tian/article/details/123055809
猜你喜欢
- 本文介绍了网页中插入视频播放的代码全集:有avi格式的视频,mpg格式,smi格式,rm格式,wmv格式,wma格式,Windows Med
- 概述路由是自定义url地址执行指定的函数,良好的路由定义可以对seo起到很好的效果。1. 基本路由gin框架封装了http库,提供了 GET
- python数据类型之间怎么转换?数据如果类型不对,在运行中有交集的话就会出现错误,那怎么让两个类型的数据变成同一个类型的呢首先是字符串,在
- 如何最准确地统计在线用户数?我们推荐的这个程序据说是目前最好的在线用户数量统计程序。代码如下:'首先要设置好global.asa&n
- Go流程控制1、条件语句IF1、简单格式(不支持三目运算符)if 布尔表达式 { // 执行语句}2、if里面包含多个表达式的时
- 1 Kmean图像分割按照Kmean原理,对图像像素进行聚类。优点:此方法原理简单,效果显著。缺点:实践发现对于前景和背景颜色相近或者颜色区
- 摘要: 阐述一种全新的ASP模板引擎,实现代码(逻辑)层与HTML(表现)层的分离.这种模板实现方法避免了一般ASP模板加载模板文件(加载组
- 在项目中,尤其是pc端的时候,我们在用户登录后会给前端返回一个标识,来判断用户是否登录,这个标识大多数都是用户的id  
- 一、怎么样取得最新版本的MySQL?要安装MySQL,首先要当然要取得它的最新版本,虽然大家都知道在FreeBSD的Packages中可以找
- 1.IP代理某些网站会检测一段时间内某IP的访问次数,若访问次数过多会禁止访问,这时需要设置一些代理服务器,每隔一段时间换一个代理。IP代理
- 0x01 安装pyinotify>>> pip install pyinotify>>> import
- 新手,参考了以下链接:python opencv在图像上画矩形(已验证)本文可以实现在指定图片上动态绘制圆和矩形。import cv2imp
- 密钥密码'''如密钥短语密码为: university -> universty明文: abcdefghijk
- Numpy创建矩阵并等间隔抽取数据1、利用Numpy创建向量和二维矩阵1.1 创建向量得到需要强调的是,向量的维度,在python中并不是书
- 1.如何在网页中插入空格 我们在用Dreamweaver的所见即所得编辑模式下编辑中文网页时,往往需要
- SSI是英文Server Side Includes的缩写,翻译成中文就是服务器端包含的意思。从技术角度上说,SSI就是在HTML文件中,可
- 参数让我们进一步看看CPU的数量是如何影响这些参数的。 参数fast_start_parallel_rollback Oracle并行机制中
- 在使用Django自带的admin后台的时候,他提供了一些默认的指令可以对数据进行操作, 比如批量删除,修改等 同样的我们也可以添加自己的指
- Python list列表添加元素方法实际开发中,经常需要对 Python 列表进行更新,包括向列表中添加元素、修改表中元素以及删除元素。&
- <script type="text/javascript">/*<![CDAT