python的函数定义、调用与默认参数

简介: python函数定义、调用与默认参数

主要写对于python函数的学习和理解。

python函数定义

在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。

!!!注意冒号需要强调,这与C的编程思想有区别

Python的函数定义非常简单,但灵活度却非常大。除了正常定义的必选参数外,还可以使用默认参数、可变参数和关键字参数,使得函数定义出来的接口,不但能处理复杂的参数,还可以简化调用者的代码。

函数调用

与其他语言类似,python遵循函数先定义后调用的原则。

在调用之前必须先进行定义,然后才可以使用。

函数参数

位置参数

我们先写一个计算x2的函数:

def cal(x):
    return x * x

对于cal(x)函数,参数x就是一个位置参数。

当我们调用cal函数时,必须传入有且仅有的一个参数x:

>>> cal(2)
4

现在,如果我们要计算高于2次方的函数怎么办?我们可以引入另一个参数,来指示为次方,如cal(x,n),其中,n代表几次方。如cal(x,4)代表计算x的4次方。

可如下定义

def cal(x, n):
    s = 1
    while n:
        n = n - 1
        s = s * x
    return s

对于这个cal(x, n)函数,可以计算任意n次方:

>>> cal(2, 2)
4
>>> cal(3, 3)
27

修改后的cal(x, n)函数有两个参数:x和n,这两个参数都是位置参数,调用函数时,传入的两个值按照位置顺序依次赋给参数x和n。

默认参数

新的cal(x, n)函数定义没有问题,但是,我们会发现之前的函数cal(x)不能用了,因为如果代码中已经调用了cal(x),此时我们把函数修改为cal(x,n),原来的调用会报出错误,因为有一个参数在原来的函数中是不存在的。

这个时候,python提供了一个默认参数,我们可以把第二个参数n的默认值设定为2:

def cal(x, n=2):
    s = 1
    while n:
        n = n - 1
        s = s * x
    return s

这样,当我们用原来的代码调用cal(2)时,相当于调用cal(2, 2):

>>> cal(2)
4
>>> cal(2, 2)
4

而对于n != 2的次方计算,我们必须传入正确的次方数,也就是n的值才能计算出来。

>>> cal(4,3)
64

这说明,python提供的默认参数可以简化我们队代码的维护及调用。

但是有几点需要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错;
二是如何设置默认参数。
三是当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。
相关文章
|
5天前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
40 1
|
5天前
|
算法 Java Docker
(Python基础)新时代语言!一起学习Python吧!(三):IF条件判断和match匹配;Python中的循环:for...in、while循环;循环操作关键字;Python函数使用方法
IF 条件判断 使用if语句,对条件进行判断 true则执行代码块缩进语句 false则不执行代码块缩进语句,如果有else 或 elif 则进入相应的规则中执行
56 1
|
5天前
|
Java 数据处理 索引
(numpy)Python做数据处理必备框架!(二):ndarray切片的使用与运算;常见的ndarray函数:平方根、正余弦、自然对数、指数、幂等运算;统计函数:方差、均值、极差;比较函数...
ndarray切片 索引从0开始 索引/切片类型 描述/用法 基本索引 通过整数索引直接访问元素。 行/列切片 使用冒号:切片语法选择行或列的子集 连续切片 从起始索引到结束索引按步长切片 使用slice函数 通过slice(start,stop,strp)定义切片规则 布尔索引 通过布尔条件筛选满足条件的元素。支持逻辑运算符 &、|。
45 0
|
15天前
|
设计模式 缓存 监控
Python装饰器:优雅增强函数功能
Python装饰器:优雅增强函数功能
220 101
|
22天前
|
缓存 测试技术 Python
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
167 99
|
22天前
|
存储 缓存 测试技术
Python装饰器:优雅地增强函数功能
Python装饰器:优雅地增强函数功能
146 98
|
27天前
|
缓存 Python
Python中的装饰器:优雅地增强函数功能
Python中的装饰器:优雅地增强函数功能
|
18天前
|
JSON 缓存 开发者
淘宝商品详情接口(item_get)企业级全解析:参数配置、签名机制与 Python 代码实战
本文详解淘宝开放平台taobao.item_get接口对接全流程,涵盖参数配置、MD5签名生成、Python企业级代码实现及高频问题排查,提供可落地的实战方案,助你高效稳定获取商品数据。
|
2月前
|
Python
Python 函数定义
Python 函数定义
139 1
|
1月前
|
算法 安全 数据安全/隐私保护
Python随机数函数全解析:5个核心工具的实战指南
Python的random模块不仅包含基础的随机数生成函数,还提供了如randint()、choice()、shuffle()和sample()等实用工具,适用于游戏开发、密码学、统计模拟等多个领域。本文深入解析这些函数的用法、底层原理及最佳实践,帮助开发者高效利用随机数,提升代码质量与安全性。
180 0

推荐镜像

更多