Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Python:函数的定义、参数传入与函数的调用

Python:函数的定义、参数传入与函数的调用

作者头像
小白学视觉
发布于 2022-09-28 03:33:23
发布于 2022-09-28 03:33:23
1.5K00
代码可运行
举报
运行总次数:0
代码可运行

作为计算机代码的一种抽象方式,函数在Python中扮演了极为重要的角色。本节介绍Python函数的定义、参数的传入以及调用方式。其中函数参数的传入方式为本节重点内容。Python函数的参数形式包括必选参数、默认参数、可变参数、命名关键字参数以及关键字参数。五类参数可单独传入也可组合传入。

>>>>

Python 函数的定义

与R语言中定义函数的function(x)不同的是,Python中使用def语句来定义函数,然后依次写出函数名、括号、括号内的参数以及最后不能忘记的冒号,函数体需另起一行在缩进块中编写,最后返回值用return语句执行。看一例求绝对值的自编函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def f_abs(x):
    if x >=0:
        return x
    else:
        return -x

当然,如果你已经通过pycharm将f_abs保存为abstest.py文件的话,可以通过cmd在当前文件目录下启动Python然后直接导入函数模块来调用f_abs函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
C:\Users\Administrator>F:
F:\>cd pythoncode>python
>>> from abstest import f_abs
>>> f_abs(-1.0923)
-1.0923

另外我们在编写函数时也可以对函数做参数个数和参数类型的检查,函数也可以返回多个值,但其本质是一个tuple。

>>>>

函数的参数传入

函数参数传入的灵活性使得Python函数十分强大,函数参数除了必选参数之外,还包括默认参数、可变参数、命名关键字参数以及关键字参数。函数参数传递顺序为必选参数>默认参数>可变参数>命名关键字参数>关键字参数。

必选参数:

先定义一个求平方的函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def power(x):
    return x*x  
power(-10)
100

可见求平方函数定义起来很方便,但如果我们想求x的更高次幂的话,恐怕这个函数就得改改了,我们需要两个必选参数才能搞定:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def power(x,n):
   s = 1
   while n >0:
       n = n-1 
       s = s*x
    return s
power(10,3)
1000

默认参数:

当我们重新定义power函数时,原先的只传入一个必选参数的函数就已经失效了,这时候我们就需要默认参数来帮忙了,将参数n的值定义为默认值2:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def power(x,n=2):
  s = 1
   while n >0:
       n = n-1 
       s = s*x
    return s
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> power(10100
>>> power(10,2100

从上述例子我们可以看出,默认参数的使用可以简化函数的调用。必选参数在前,默认参数在后,当传入多个参数时,变化大的参数放前面,变化小的参数可作为默认参数放后面,最重要的一点是,默认参数必须指向不变对象!这是设置默认参数时需要注意的。

可变参数:

我们对一组数的平方求和定义一个函数,即a2+b2+c2+...利用可变参数我们可以编写函数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def jisuan(*numers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

由上面的命令可见可变参数仅仅需要在参数前加上一个*号就可完成对其定义,参数numbers接受的数据类型为一个list或者tuple。当我们已有一个list或者tuple时,我们可以直接将其当作可变参数传入函数中去:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> nums = [2,3,5]
>>> jisuan(*nums)
38

关键字参数:

与可变参数可以传入任意个参数不同的是,关键字参数可以传入任意个含参数名的参数,这样key-value格式显然是以dict的数据类型传入的。且看示例:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def player(name,team,**kw):
    print('name:',name,'team:',team,'other:',kw)
player('Harden','Rockets',city = 'Houston')
name: Harden team: Rockets other: {'city':'Houston'}

显而易见的一点是,关键字参数增加了函数的灵活性,除去必选参数外,用户可通过关键字参数输入任何想要的参数。和可变参数类似的是,我们也可以先定义一个dict,然后将其作为关键字参数传入函数中去:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> info = {'city': 'Golden states'}
>>> player('Curry','Worriors',**info)
name: Curry team: Worriors other: {'city':'Golden states'}

命名关键字参数:

通过关键字参数,我们可以传入任意不受限制的参数,但如果我们想要限制关键字参数的名字,可以使用命名关键字参数,例如只接受city和age作为关键字参数,定义方式如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def palyer(name,team,*,city,age):
    print(name,team,city,age)

命名关键字参数需要一个*作为分隔,*后面的参数均为命名关键字参数,这与关键字参数的**大不相同。但如果在此之前函数已有可变参数的话,再定义命名关键字参数的话就不需要*作为分隔符了。示例如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def palyer(name,team,*tec,city,age):
    print(name,team,tec,city,age)

需要注意的是,命名关键字参数必需连同参数名一起传入函数中,否则的话Python将会报错。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> player('Parker','Spurs',city = 'San Antonio',age = 32)
Parker Spurs San Antonio 32

需要说明的一点是,各类参数可以组合传入函数当中,只是需要注意传入的顺序:必选参数>默认参数>可变参数>命名关键字参数>关键字参数。

>>>>

函数的调用

当我们定义好函数后,相应的函数调用也就十分简单了,直接使用函数名即可完成调用。当然,并不是每个函数都需要我们去自定义,Python基础模块和各类库里面内置了大量函数,我们可直接调用,这一点和R也是类似的。看几个Python函数的例子:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> abs(-0.3)
0.3
>>> max(3,0,8,3)
8
>>> int(10.24)
10
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-07-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白学视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python函数参数之全面讲解
Python函数参数 Python函数参数 本文主要介绍Python的函数参数,各种形式的参数。建议动手试试,可以加深理解。 函数参数 定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道如何传递正确的参数,以及函数将返回什么样的值就够了,函数内部的复杂的逻辑被封装起来,调用者无需了解。 Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以
1846122963
2018/03/09
1.4K0
【AICAMP —— Python】入门系列!(3. Python函数编程)
Python与其它编程语言一样,可以直接调用我们写好的函数,或者已经实现的函数。如我们可以使用系统自带的函数,求一个数的绝对值,使用abs函数,对其传入参数,得到输出。
灿视学长
2021/05/28
5110
人人都能学会的python编程教程12:函数的参数
Python的函数定义非常简单,也非常灵活。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。
JKXQJ
2018/04/18
8706
人人都能学会的python编程教程12:函数的参数
Python函数的参数
定义函数的时候,我们把参数的名字和位置确定下来,函数的接口定义就完成了。对于函数的调用者来说,只需要知道传递正确的参数,以及函数就返回什么样的值就够了,函数内部的复杂逻辑被封装起来了,调用者无须了解。
小破孩的梦想空间
2020/04/23
1.2K0
Python 函数的参数
power(x,n),x和n就是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。
py3study
2020/01/13
1.2K0
Python基础笔记3
要调用一个函数,需要知道函数的名称和参数,比如求绝对值的函数abs,只有一个参数。可以直接从Python的官方网站查看文档:
py3study
2020/01/03
3720
Python 函数
定义函数 在 Python 中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回。 我们以自定义一个求绝对值的 my_abs 函数为例: 12345 def my_abs(x): if x >= 0: return x else: return -x 如果没有 return 语句,函数执行完毕后也会返回结果,只是结果为 None。 return None 可以简写为
一份执着✘
2018/06/04
1.4K0
Python学习笔记(三)——函数
本文是廖雪峰的Python教程的笔记,主要是摘抄一些重点。所以我把他划分到转载里。侵删。
蛮三刀酱
2019/09/10
5850
python函数的参数
对于power(x)函数,参数x就是一个位置参数,当我们调用power(x)函数时,必须传入有且仅有一个参数x
py3study
2020/01/06
9620
【Python】8“函数的参数“
按函数参数顺序传入参数,这样的参数就叫做位置参数。Java的函数中,规定调用者必须按形式参数顺序依次传入参数,这样也可以看做是位置。 案例(幂运算):
肓己
2021/08/12
3660
Python传入参数的几种方法
Python唯一支持的参数传递方式是『共享传参』(call by sharing)
py3study
2020/01/07
4.1K0
Python 函数调用&定义函数&函数参
在python中内置了很多函数,我们可以直接调用 。想要调用函数首先要知道函数的名称及包含的参数,还可以通过查看python官方的文档:https://docs.python.org/3/library/functions.html
py3study
2020/01/19
2.6K0
Python学习笔记(二)·函数
当代码出现有规律的重复的时候,你就需要当心了,每次写3.14 * x * x不仅很麻烦,而且,如果要把3.14改成3.14159265359的时候,得全部替换。
公爵
2022/09/28
1.7K0
Python学习笔记(二)·函数
Python函数 day3
如:除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求
昆兰
2024/07/24
670
Python 函数中的参数类型
Python 中函数的参数类型比较丰富,比如我们经常见到 *args 和 **kwargs 作为参数。初学者遇到这个多少都有点懵逼,今天我们来把 Python 中的函数参数进行分析和总结。
码农小胖哥
2020/02/24
3.5K0
Python学习笔记一(基础知识)
本文是小编自己学习Python的学习笔记,本着简介方便的原则,记录Python的主要基础知识点,以便学习和回顾。
全栈程序员站长
2022/07/05
2740
【python入门到精通】python核心知识之参数与变量完全解读
上面的函数虽然解决了问题,但是显然不够完美,假设在大部分的调用里,基本都只是求x的2次幂,但 是这个时候我在调用的时候依旧每次都得传n,这就显得有点多余。有没有什么方法可以让我调用的时 候少些一个入参呢?
大数据小禅
2021/12/21
4320
python3_函数
欢迎与我分享你的看法。 转载请注明出处:http://taowusheng.cn/
yifei_
2022/11/14
2520
【Python】002-Python函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后在缩进块中编写函数体,函数的返回值用return语句返回;
訾博ZiBo
2025/01/06
410
【Python】002-Python函数
Python学习 Day 4 函数 切片 迭代 列表生成式 生成器
TypeError: my_abs() takes exactly 1argument (2 given)#参数个数不对
统计学家
2019/04/10
3870
相关推荐
Python函数参数之全面讲解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验