Python 函数的定义与调用

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

python函数的定义和调用,Python,# Python入门基础,python,开发语言

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。
🥭本文内容:Python 函数的定义与调用



定义和调用函数

Python 中使用def语句创建函数,其一般的格式如下所示:

def name(arg1, arg2, ...,argN):
    statements

下面这段代码定义了一个简单函数。

def repeator(s, n):
    result = s * n
    print(result)

这段代码仅仅是对函数的定义,并没有调用执行。这条定义语句运行后会新建一个名为repeator的变量名,其类型为function,即函数。

def repeator(s, n):
    result = s * n
    print(result)
print(type(repeator))
# <class 'function'> 

与内置函数一样,定义完函数后,可以通过函数名调用执行。

def repeator(s, n):
    result = s * n
    print(result)
repeator('嗷', 3)
# 嗷嗷嗷

在很多情况下,函数需要将计算的结果返回到调用处。在这类函数的函数体中,通常包含一条return语句:

def name(arg1, arg2, ...,argN):
    statements 
    return value

在创建函数时, 没有在函数体中添加return语句,Python 也会默默地在函数体最后添加一条return None

def repeator(s, n):
    result = s * n
    print(result)
value = repeator('嗷', 3)
# 嗷嗷嗷
print(value)
# None

函数如果以返回值来输出:

def repeator(s, n):
    result = s * n
    return result
print(repeator('嗷', 3))
# 嗷嗷嗷

在 Python 中, 还允许在函数中返回多个值。 只需将返回值以逗号隔开, 放在return关键字后面即可。

def calculator(m, n): 
    return m+n, m-n, m*n, m/n
i, j = 2, 4
r1, r2, r3, r4 = calculator(i, j)
print(f'{i}{j} 的加减乘除运算结果是:{r1}{r2}{r3}{r4}')
# 2 和 4 的加减乘除运算结果是:6,-2,8,0.5

在这里总结一下函数调用的四个步骤:

  1. 程序执行到函数调用时,在调用处暂停,等待函数执行完毕;
  2. 将实参赋值给函数的形参;
  3. 执行函数体中的语句;
  4. 调用结束后,回到调用前暂停处继续执行,如果函数体中执行了return语句, return关键字后的值会返回到暂停处,供程序使用,否则函数返回None值。

函数参数

参数传递

参数的传递过程,实际上是一个赋值的过程。在调用函数时,调用者的实际参数自动赋值给函数的形式参数变量。

def avg(m, n):
    return (m + n) /2
print(avg(5, 2))
# 3.5

不可变和可变类型参数

目前我们所学习的不可变类型包括:整型、浮点型、字符串和元组,可变类型有:列表、字典和集合等。这些都可以作为参数的类型。但参数在函数中使用时,这两种类型的表现有所不同。

下面的代码调用时,传递的是不可变类型的参数:

def priceChanger(p):
    p = p + 10 
    print('改变后的价格:{:.2f}'.format(p))
price = 10.8
priceChanger(price)
# 改变后的价格:20.80
print(price)
# 10.8

在使用可变参数时,函数体中可以改变参数的元素:

def contentChanger(name_list):
    name_list[0], name_list[1] = name_list[1], name_list[0]
    print('函数中的 name_list:', name_list)
language_name = ['C', 'Python']
contentChanger(language_name)
# 函数中的 name_list: ['Python', 'C']
print('调用函数后的 language_name:', language_name)
# 调用函数后的 language_name: ['Python', 'C']

因此,在使用可变类型参数时需要特别注意,如果在函数中修改了参数的元素,这种修改会影响调用者的变量。 如果想消除这种影响,可以使用列表copy方法或者使用分片操作创建新列表。


位置参数

位置参数是调用函数为形参赋值的一种默认方式。实参与形参按照从左到右的位置顺序依次赋值。

def myMinus(num1, num2): 
    return num1 - num2
print(myMinus(5, 2))
# 3

赋值顺序改变将得到不同的结果。

def myMinus(num1, num2): 
    return num1 - num2
print(myMinus(2, 5))
# -3

关键字参数

为了避免位置参数赋值带来的混乱,Python 允许调用函数时通过关键字参数的形式指定形参与实参的对应关系。 调用者使用name=value的形式来指定函数中的哪个形参接受某个值:

def myMinus(num1, num2): 
    return num1 - num2
print(myMinus(num1=5, num2=2))
# 3
print(myMinus(num2=2, num1=5))
# 3

指定默认参数值

在函数定义时,可以为参数指定值。这样当函数调用者没有提供对应参数值时,就可以使用指定的默认值。 指定默认参数值在 Python 的函数中广泛存在。例如,打印函数print,在查看其帮助时,其函数的部分描述如下:

print(...)
    print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
    
    Prints the values to a stream, or to sys.stdout by default.
    Optional keyword arguments:
    file:  a file-like object (stream); defaults to the current sys.stdout.
    sep:   string inserted between values, default a space.
    end:   string appended after the last value, default a newline.
    flush: whether to forcibly flush the stream.

可以看到,print函数的sependfileflush参数都指定了默认值。

print('C', 'C++', 'Java', 'Python')
# C C++ Java Python

如果调用时指定了sep参数的值,则会使用该值来连接每个打印的值。

print('C', 'C++', 'Java', 'Python', sep='_')
# C_C++_Java_Python

在定义函数时, 为形参指定默认值, 就可以让该形参在调用时变为可选:

def myMod(x, y=2): 
    return x % y
print(myMod(13,4))
# 1
print(myMod(13))
# 1

任意数量参数

Python 允许在定义函数时使用单星号*来收集位置参数,双星号**收集关键字参数。

单星号*收集位置参数

单个星号将一组可变数量的位置参数组合成参数值的元组。在函数内部可以通过访问元组中的每个元素来使用参数。

def m_value(*values):
    max_value = max(values)
    min_value = min(values)
    print(f'最大值: {max_value}, 最小值: {min_value}')
m_value(8, 6, 7, 4, 3, 9)
# 最大值: 9, 最小值: 3

双星号**收集关键字参数

针对形参的关键字参数赋值形式, 利用 Python 定义函数时, 在形参前面加上双星号**来定义收集关键字参数的形参。此时形参是字典类型。

def f(**info):
    if 'name' not in info.keys():
        print('必须拥有名称信息。')
    else:
        print(info['name'] + '的诞生年份:' + info.get('time', '不详'))

f(name = 'C', time = '1972')
# C的诞生年份:1972
f(name = 'Python')
# Python的诞生年份:不详

解包参数

在调用函数时,实参也可以使用***语法。此时不是收集参数,正好相反, 实参前加上***执行的是参数解包。 通常来说, 在列表、元组等类型的实参值前加上*, 将这些类型的元素解包成位置参数的形式;在字典类型的实参值前加上**,将字典的元组解包成关键字参数的形式。

当调用者的数据存储在列表中时, 可以通过在列表前加上*对列表解包来实现位置参数形式的调用。

当调用者的数据存储在字典中时, 可以通过在字典前加上**对字典解包来实现关键字参数形式的调用。文章来源地址https://www.toymoban.com/news/detail-824814.html

def f(name, time='不详'):
    if name and len(name) > 0:
        print(name + '的诞生年份:' + str(time))
    else:
        print('必须拥有名称信息。')


info1 = ['C', '1972']
f(*info1)
# C的诞生年份:1972
info2 = {'name': 'Python', 'time': '1989'}
f(**info2)
# Python的诞生年份:1989

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

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

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

相关文章

  • python-自定义函数(定义调用、默认参数、返回值)

    本篇文章讲解了python中自定义函数的一些知识点,包括了函数的定义和调用,默认参数,函数返回,其中也添加了比较高级的用法,能适应任何场合 函数是什么:函数是一段可执行的代码块,用于执行特定的任务或完成特定的操作。它由函数名、参数(可选)和函数体组成。

    2024年02月09日
    浏览(43)
  • Python 函数:定义、调用、参数、递归和 Lambda 函数详解

    函数是一段代码块,只有在调用时才会运行。您可以将数据(称为参数)传递给函数。 函数可以返回数据作为结果。 在Python中,使用def定义函数: 示例 要调用函数,请使用函数名称后跟括号: 示例 可以将信息作为参数传递给函数。参数在函数名称后面的括号内指定

    2024年02月08日
    浏览(78)
  • vscode python 自定义函数无法跳转到定义处,且定义处无法展示所有调用该函数的位置

    在vscode中编写python代码,在自定义类的forward函数中调用该类的成员函数,但在调用处无法通过ctrl+鼠标左键直接跳转到该成员函数的定义中,系统显示找不到函数声明。同时 ,在该函数的定义处无法通过 ctrl+鼠标左键展示项目中所有调用了该函数的位置和跳转链接。     

    2024年02月10日
    浏览(43)
  • Python函数——函数的基础定义语法

    在Python编程中,函数是构建高效代码的关键。通过创建可重用的代码块,我们可以使程序更加清晰、易读且易于维护。在本文中,我们将深入了解Python函数的基本概念、特性以及如何在编程实践中灵活运用它们。 1、函数的定义: 函数是一段具有特定功能的代码块,它可以接

    2024年02月20日
    浏览(42)
  • 【Python入门篇】——Python函数(函数介绍,函数的定义,函数的参数和函数的返回值)

    作者简介: 辭七七,目前大一,正在学习C/C++,Java,Python等 作者主页: 七七的个人主页 文章收录专栏: Python入门,本专栏主要内容为Python的基础语法,Python中的选择循环语句,Python函数,Python的数据容器等。 欢迎大家点赞 👍 收藏 ⭐ 加关注哦!💖💖 函数:是组织好的

    2024年02月08日
    浏览(82)
  • 【Python基础】- 自定义函数和匿名函数

      🤵‍♂️ 个人主页:@艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞👍🏻 收藏 📂加关注+ 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。   函数能提高

    2024年02月14日
    浏览(48)
  • Python 程序设计入门(023)—— Python 的自定义函数

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

    2024年02月12日
    浏览(59)
  • Python基础List列表定义与函数

    如何定义一个非空的列表? 列表的特点: 1.列表是有序的 2.可以存放多个元素 3.每个元素可以是任何数据类型 定义一个空列表 访问列表中的元素 通过索引值来访问列表中的元素,索引从0开始 获取列表中的长度,内置函数len() 修改列表中的元素 列表切片,步长 说明:列表

    2024年02月09日
    浏览(43)
  • Python零基础学习7.2—Python自定义函数的综合应用

    本章我们加大一点难度,来让大家更好的掌握Python函数的使用技巧 来看例题: 任务描述 本关任务:素数问题函数。 (1)实现isPrime()函数,参数为整数。如果是素数,返回True,否则返回False。 (2)在(1)的基础上,编写一个函数listPrime(),该函数可以接受任意个数数据,返

    2024年02月03日
    浏览(53)
  • Python学习笔记(四):函数的定义、函数的返回值、None类型、函数说明文档、函数的嵌套调用、局部变量、全局变量、global关键字

    目录 一、函数介绍 1. 函数是: 2. 使用函数的好处是: 二、函数的定义: 三、函数的参数 1.传入参数的功能是: 2.函数的传入参数 - 传参定义 3.注意事项: 4.练习:测量体温 四、函数的返回值 1.函数返回值的定义 2.None类型 五、函数说明文档 六、函数的嵌套调用 七、变量的

    2024年02月05日
    浏览(67)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包