Python 程序设计入门(023)—— Python 的自定义函数

这篇具有很好参考价值的文章主要介绍了Python 程序设计入门(023)—— Python 的自定义函数。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python 程序设计入门(023)—— Python 的自定义函数

在 Python 中,函数的应用非常广泛。比如:input()、print()、str()、range()、len() 等,这些称为 Python 的内置函数,可以直接使用。Python 支持自定义函数,即将一段有规律的、可重复使用的代码定义为函数,达到一次编写,多次使用的目的。

一、创建自定义函数

自定义函数使用关键字 def 实现,语法格式如下:

def function_name([parameterlist]):
    ["connments"]
    [function_body]

说明:

(1)function_name:函数名称。

(2)parameterlist:可选参数,用于指定向函数中传递的参数,如果有多个参数,各参数之间使用逗号分隔。如果不指定参数,则表示函数没有参数。

(3)connments:可选参数,表示为函数指定的注释。

(4)function_body:可选参数,用于指定函数体。

例如:定义以下函数,取出字符串中的数字字符

def get_digit(instr):
    num = ""
    for item in instr:
        if item.isdigit():
            num += item
    return num

二、自定义函数的调用

调用函数也就是执行函数,调用函数的语法格式如下:

function_name([parameterlist])

说明:

(1)function_name:表示要调用的函数名称。

(2)parameterlist:可选参数,用于指定各参数的值。

例如:文章来源地址https://www.toymoban.com/news/detail-651936.html

def get_digit(instr):
    num = ""
    for item in instr:
        if item.isdigit():
            num += item
    return num
print(get_digit("abc12张三88,2^..33")) # 调用函数

程序的运算结果为:
============================= RESTART: C:\Python\Python38\First.py =============================
1288233

三、函数参数的传递

在调用函数时,主调函数和被调用函数之间有数据传递关系。函数参数的作用是传递数据给函数使用,函数利用接收的数据进行具体的操作。

1、形参和实参

在使用函数时,函数名后面括号中的参数称为【形式参数】,简称【形参】。

在调用一个函数时,函数名后面括号中的参数称为【实际参数】,也就是函数的调用者提供给函数的参数,实际参数也称为【实参】。

根据实参的类型不同,可以分为将实参的值传递形参和将实参的引用传递给形参两种情况。其中:

(1)当实参为不可变对象时,进行的是值传递。

(2)当实参为可变对象时,进行的是引用传递。

值传递和引用传递的区别是:进行值传递后,形参的值改变,而实参的值不变。进行引用传递后,形参的值改变,实参的值也一同改变。

例如:

(1)值传递

代码如下:

def add(x,y):
    x = x * 2
    y = y ** 2
    return x + y
a = 2
b = 3
print(add(a,b))
print("a=", a)  # a的值不变
print("b=", b)  # b的值不变

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
13
a= 2
b= 3

(2)引用传递

代码如下:

def list_add(mylist):
    for i in range(len(mylist)):
        mylist[i] = mylist[i] + 3 # 列表中的每个元素的值增加3
    print(mylist)
list1 = [12, 23, 4, 76, 100]
list_add(list1)
print(list1)  # 列表list1的元素发生变化

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
[15, 26, 7, 79, 103]
[15, 26, 7, 79, 103]
2、位置参数

位置参数也称为必备参数,必须按照正确的顺序传递给函数。即:调用函数时指定的参数的数量和位置必须和定义时的相同。

在调用函数时,指定的实参数量必须与形参数量一致,否则将抛出 TypeError 异常,提示缺少必要的位置参数。

在调用函数时,指定的实参位置必须与形参位置一致,否则可能产生如下两种结果:

(1)抛出异常:如果指定的实参与形参的位置不一致,数据类型也不一致,将抛出异常。

(2)不抛出异常:得到的结果与预期不一致。如果指定的实参与形参的位置不一致,数据类型一致,则不会抛出异常,但是得到的结果与预期的不一致。

例如:

(1)实参与形参数量不一致

def pow1(x,y):
    return x ** y
a = 2
b = 10
print(pow1(a))  # 实参与形参个数不同

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
Traceback (most recent call last):
  File "C:\Python\Python38\First.py", line 5, in <module>
    print(pow1(a))  # 实参与形参个数不同
TypeError: pow1() missing 1 required positional argument: 'y'

(2)实参与形参位置不一致

def pow1(x,y):
    return x ** y  # 返回x的y次幂
a = 2
b = 10
print(pow1(a,b))   # 2^10 = 1024
print(pow1(b,a))   # 10^2 = 100

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
1024
100

四、函数的返回值

可以在函数体内使用 return 语句为函数指定返回值。函数的返回值可以是任意类型的,无论 return 语句出现在函数的什么位置,只要执行 return 语句就是结束函数的执行。return 语句的语法格式如下:

return [value]

说明:

(1)value:可选参数。用与指定函数要返回的值,可以返回一个值,也可以返回多个值。如果返回多个值,则返回值的类型为一个元组。

(2)当函数中没有 return 语句,或者省略了 return 语句的参数时,将返回 None(空值)。

例如:

(1)返回值为空

def circle_r(r):
    print("圆的周长:", 3.14 * r * 2)
    print("圆的面积:", 3.14 * r ** 2)
circle_r(5)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
圆的周长: 31.400000000000002
圆的面积: 78.5

(2)返回一个值

def f(n):
    fac = 1
    for i in range(1,n+1):
        fac *= i
    return fac
x = f(5)
print("返回值的类型:", type(x))
print("返回值:", x)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
返回值的类型: <class 'int'>
返回值: 120

(3)返回多个值

def circle_r(r):
    c = 3.14 * r * 2
    s = 3.14 * r ** 2
    return c,s
result = circle_r(5)
print("返回值的类型:", type(result))
print("返回值:", result)
print("圆的周长:", result[0])
print("圆的面积:", result[1])

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
返回值的类型: <class 'tuple'>
返回值: (31.400000000000002, 78.5)
圆的周长: 31.400000000000002
圆的面积: 78.5

返回多个值的函数在调用时可以使用多个变量接收返回值,代码如下:

def circle_r(r):
    c = 3.14 * r * 2
    s = 3.14 * r ** 2
    return c,s
zc,mj = circle_r(5)
print("圆的周长:", zc)
print("圆的面积:", mj)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
圆的周长: 31.400000000000002
圆的面积: 78.5

五、在函数中使用局部变量

局部变量是指在函数内部定义并使用的变量,只在函数内部有效。

函数内部的变量只在函数运行时才会创建,在函数运行之前或之后,所有的局部变量都不存在。

局部变量只在函数内部有效,在函数外部无效。如果在函数内部和外部都定义了同名的变量,那么它们代表的是不同的变量值。

例如:

def add(x,y):
    count = x + y
    return count
count = 1
a = 1
b = 10
print("{} + {} = {}".format(a,b,add(a,b)))
print("count = ",count)

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
1 + 10 = 11
count =  1

六、在函数中使用全局变量

有时需要在函数外设定变量的初始值,然后在函数内对其进行访问、修改,这就需要定义全局变量。

函数内外部都可以访问的变量叫全局变量。

(1)如果一个变量是在函数外部定义的,则该变量不仅在函数外可以访问,在函数内也可以访问。

注意:在函数体外定义的全局变量,只能访问,不能修改!

例如:

str1 = "Hello Python!"
def p():
    print(str1)  # str1 为全局变量
p()  # 调用函数

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
Hello Python!

在函数中修改全局变量的值,会抛出异常:

num = 20
def p():
    num = num + 5  # 在函数中不能修改全局变量的值
    print(num)
p()  # 调用函数

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
Traceback (most recent call last):
  File "C:\Python\Python38\First.py", line 5, in <module>
    p()  # 调用函数
  File "C:\Python\Python38\First.py", line 3, in p
    num = num + 5  # 在函数中不能修改全局变量的值
UnboundLocalError: local variable 'num' referenced before assignment

(2)如果在函数内使用 global 关键字定义变量为全局变量,那么在函数外也可以访问该变量,并且在函数内可以对变量进行修改。

例如:

num = 20
def p():
    global num     # 定义 num 为全局变量
    num = num + 5  # 在函数中修改全局变量的值
    print(num)
p()  # 调用函数
print(num)         # 全局变量num的值发生改变

程序的运算结果为:
============ RESTART: C:\Python\Python38\First.py ============
25
25

到了这里,关于Python 程序设计入门(023)—— Python 的自定义函数的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 头歌Educoder实验:程序设计二(面向对象)_实训3_类外定义成员函数

    第1关:类外定义存取函数 任务描述 本关仍然有一个 Int 类,该类包含一个 int 类型的成员。为其编写存取函数。注意,存取函数要在类外实现。 相关知识 类的定义中,既可以书写成员函数的声明,也可以书写成员函数的定义(即实现)。如果在类中定义成员函数,则该成员

    2024年02月06日
    浏览(53)
  • Python 程序设计入门(017)—— 选择结构程序设计

    程序中的选择结构也称为判断结构,按照条件选择执行不同的代码片段。Python 中的选择结构主要有三种形式:if 语句、if…else 语句和 if…elif…else 语句。 if 语句的语法格式如下: 说明: (1)表达式:可以是比较表达式或逻辑表达式。如果表达式的值为 True,则执行语句块

    2024年02月13日
    浏览(45)
  • 《Python程序设计》 第六章 函数+编程题解

    目录 6-1 使用函数求特殊a串数列和 6-2 使用函数求素数和 6-3 使用函数统计指定数字的个数 6-4 使用函数输出指定范围内Fibonacci数的个数  6-5 使用函数求余弦函数的近似值 6-6 缩写词 7-1 输入列表,求列表元素和(eval输入应用) 7-2 一帮一 7-3 验证“哥德巴赫猜想” 7-4 列表或元组

    2024年02月07日
    浏览(66)
  • Python 程序设计入门(022)—— 循环结构程序设计(3):循环的嵌套

    在编程时,循环语句的嵌套是很常见的,循环嵌套是指在一个循环语句中又包含另一个循环语句。例如:在 for 循环中嵌入另一个 for 循环或 while 循环,在 while 循环中嵌入另一个 while 循环或 for 循环等。 1、使用双层 for 循环 代码如下: 代码如下: 1、使用 for 循环中嵌套 w

    2024年02月12日
    浏览(41)
  • Python 程序设计入门(024)—— Python 的文件操作

    为了能够长期保存程序中的数据,需要将其保存到磁盘文件中。Python 提供了内置的文件对象和对文件、目录进行操作的内置模块。 Python 中内置了文件(file)对象,使用文件对象时,需要先通过内置的 open() 函数创建一个文件对象,然后通过该对象提供的方法进行操作。 使用

    2024年02月07日
    浏览(49)
  • 【Python 程序设计】包和数据人员入门【01/8】

            一个坚实的Python项目的基础是掌握模块,包和导入。 以下文章是有关 Python 数据工程系列文章的一部分,旨在帮助数据工程师、数据科学家、数据分析师、机器学习工程师或其他刚接触 Python 的人掌握基础知识。         迄今为止,本初学者指南包括: 第 1 部

    2024年02月09日
    浏览(37)
  • Python 程序设计入门(008)—— 列表的操作(3):列表推导式

    使用列表推导式可以快速生成一个列表。或者根据某个列表生成满足指定需求的列表。列表推导式包含在方括号内,它由一个表达式、一个或多个 for 循环和一个用于过滤生成的列表的可选条件组成。 列表推导式的语法格式如下: 说明: (1)Expressinon:表达式,用于计算列

    2024年02月14日
    浏览(50)
  • python的自定义函数的用法和实例

    目录 1.自定义函数的语法和用法 (1)引入 (2)语法 (3)用法:用于自定义目标函数语法。 (4)调用函数 ①语法 ②解释 2.实例 (1)简单的用法 (2)与input函数、while语句结合使用 python语言调用的求和sum()、replace等函数是已经定义好的函数,而我们想要调用自己想要的函

    2024年02月08日
    浏览(46)
  • Python 程序设计入门(025)—— 使用 os 模块操作文件与目录

    Python 内置了 os 模块及其子模块 os.path,用于对目录或文件进行操作。在使用 os 模块及其子模块 os.path 模块时,需要使用 import 导入该模块,才能使用它们提供的函数或方法。 1、os 模块提供的操作目录的函数 os 模块提供的操作目录的函数如下表所示: 函数 说明 getcwd() 返回当

    2024年02月11日
    浏览(53)
  • 微信小程序入门学习02-TDesign中的自定义组件

    我们上一篇讲解了TDesign模板的基本用法,如何开始阅读模板。本篇我们讲解一下自定义组件的用法。 官方模板在顶部除了显示图片外,还显示了一段文字介绍。文字是嵌套在容器组件里,先按照他的写法复制代码到我们自己创建的index.wxml文件里 因为我们的布局是从上到下,

    2024年02月10日
    浏览(64)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包