Python学习之路-函数(不定长参数)

简介: 开发者学堂课程,了解Python语言的基本特性、编程环境的搭建、语法基础、算法基础等,了解Python的基本数据结构,对Python的网络编程与Web开发技术具备初步的知识,了解常用开发框架的基本特性,以及Python爬虫的基础知识。课程地址:https://developer.aliyun.com/learning/course/601/detail/8726

不定长的参数:

定义一个函数,可以求任意个数字的和

咱们举一个例子:

defsum(a,b):
print(a+b)
sum(123,345)

调用函数sum,就会算出a+b的值。

如果传入3个函数,那就会报错。

defsum(a,b):
print(a+b)
sum(123,345,222)

报错:TypeError: sum() takes 2 positional arguments but 3 were given


在定义函数时,可以在形参前加*,这样形参将会获取所有实参,它会将所有的实参保存到一个元组中

*a 会接受所有的位置实参,并且会将这些实参统一保存到一个元组中(装包)

deffn(*a):
print('a=',a,type(a))
fn()

得到的结论是:a= () <class 'tuple'>,a是一个元组

deffn(*a):
print('a=',a,type(a))
fn(1,2,3,4)

得到的结论是:a= (1, 2, 3, 4) <class 'tuple'>

这样就完美解决上面的问题啦。

二、实参与形参的定义及各种用法

defsum(*nums):
# 定义一个变量,来保存结果result=0# 遍历元组,并将元组中的数进行累加forninnums:
result+=nprint(result)
sum(12,3,4,5,6,333,22,22)

得到的结果是:407.

不论传几个参数,都可以相加


#带星号的形参只能有一个

#带星号的参数,可以和其他参数配合使用

#以一个参数给 a,第二个参数给 b,余下的参数都保存到c的元组中

deffn(a,b,*c):
print('a=',a)
print('b=',b)
print('c=',c)
fn(1,2,3,4,5,6,7,8)

image.png


#可变参数不是必须写在最后,但是带*参数后的所有参数,必须以关键字参数的形式传递

deffn(a,*b,c):
print('a=',a)
print('b=',b)
print('c=',c)
#fn()这样写会报错: missing 1 required keyword-only argument: 'c'#fn(1,2,3,4,5,6,7,8) #应该这样写:fn(1,2,3,4,5,6,7,c=8) 

image.png

#所有的位置参数都给 a,b 和 c 必须使用关键字参数

deffn(*a,b,c):
print('a=',a)
print('b=',b)
print('c=',c)
fn(1,2,3,4,5,6,b=7,c=8) 

image.png


#如果在形参的开头直接写一个*,则要求所有的参数必须以关键字参数的形式传递

deffn(*,a,b,c):
print('a=',a)
print('b=',b)
print('c=',c)
fn(a=3,b=7,c=8) 

image.png


*形参只能接受位置参数,而不能接受关键字参数

举个例子:

deffn(*a):
print('a=',a)
fn(d=3,b=7,c=8) 

会报错;fn() got an unexpected keyword argument 'd',*行参不能接受关键字参数

怎么办呢,咱们用**行参

**形参可以接收其他的关键字参数,它会将这些参数统一保存到一个字典中

#字典的 key 就是参数的名字,字典的值就是参数的值

#形参只能有一个,并且必须卸载所有参数的最后

deffn(**a):
print('a=',a,type(a))
fn(d=3,b=7,c=8) 

image.png

相关文章
|
3天前
|
测试技术 开发者 Python
Python中的装饰器:提升函数的灵活性和可重用性
在Python编程中,装饰器是一种强大的工具,它可以在不修改函数本身的情况下,动态地扩展函数的功能。本文将介绍装饰器的工作原理及其在实际开发中的应用,帮助读者更好地理解和利用这一特性。
|
2天前
|
存储 Python
在Python中,匿名函数(lambda表达式)是一种简洁的创建小型、一次性使用的函数的方式。
【6月更文挑战第24天】Python的匿名函数,即lambda表达式,用于创建一次性的小型函数,常作为高阶函数如`map()`, `filter()`, `reduce()`的参数。lambda表达式以`lambda`开头,后跟参数列表,冒号分隔参数和单行表达式体。例如,`lambda x, y: x + y`定义了一个求和函数。在调用时,它们与普通函数相同。例如,`map(lambda x: x ** 2, [1, 2, 3, 4, 5])`会返回一个列表,其中包含原列表元素的平方。
13 4
|
2天前
|
Python
在Python中,高阶函数是指那些可以接受一个或多个函数作为参数,并返回一个新的函数的函数。
【6月更文挑战第24天】Python的高阶函数简化代码,增强可读性。示例:`map()`检查用户名合法性,如`[&quot;Alice&quot;, &quot;Bob123&quot;, &quot;Charlie!&quot;, &quot;David7890&quot;]`;`reduce()`与`lambda`结合计算阶乘,如1到10的阶乘为3628800;`filter()`找出1到100中能被3整除的数,如[3, 6, 9, ..., 99]。
12 3
|
3天前
|
分布式计算 大数据 调度
MaxCompute产品使用问题之为什么用python写的udf函数跑起来比本地还要慢
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
3天前
|
SQL 分布式计算 大数据
MaxCompute产品使用问题之建了一个python 的 UDF脚本,生成函数引用总是说类不存在,是什么导致的
MaxCompute作为一款全面的大数据处理平台,广泛应用于各类大数据分析、数据挖掘、BI及机器学习场景。掌握其核心功能、熟练操作流程、遵循最佳实践,可以帮助用户高效、安全地管理和利用海量数据。以下是一个关于MaxCompute产品使用的合集,涵盖了其核心功能、应用场景、操作流程以及最佳实践等内容。
|
1天前
|
SQL 小程序 数据库连接
【Python学习】Python基础必背的内容
【Python学习】Python基础必背的内容
14 1
|
1天前
|
Python
python函数
python函数
5 0
|
1天前
|
Python
python之print函数
python之print函数
7 0
|
2天前
|
Python
Python深入学习教程
Python深入学习教程
|
2天前
|
JavaScript PHP 网络架构
Python学习技巧及方法总结
Python学习技巧及方法总结