【Python】12_函数传参的四类参数

简介: ​一、函数传参的四类参数1、位置传参与关键字传参def func(a, b, c): print(f'a:{a}') print(f'b:{b}') print(f'c:{c}')# 位置传参func(1,2,3)# func(3,1,2)# 关键字传参func(a=10, b=20, c=30)# func(c=10, a=20, b=30)# 混合使用, 先写位置传参,再写关键字传参'''先写没等号的,再写有等号的,有等号的要在后边'''func(10, b=20, c=30)# func(a=10, 20, 30) #


一、函数传参的四类参数
1、位置传参与关键字传参

def func(a, b, c):

print(f'a:{a}')
print(f'b:{b}')
print(f'c:{c}')

位置传参

func(1,2,3)

func(3,1,2)

关键字传参

func(a=10, b=20, c=30)

func(c=10, a=20, b=30)

混合使用, 先写位置传参,再写关键字传参

'''先写没等号的,再写有等号的,有等号的要在后边'''
func(10, b=20, c=30)

func(a=10, 20, 30) # 代码会报错

func(10, a=30, b=20) # 代码会报错

2、缺省参数

print()

'''
有等号的在后边写
'''

def func(a, b, c=10): # 形参c 称为缺省形参

print(f"a: {a}")
print(f"b: {b}")
print(f"c: {c}")

func(1, 2) # 没有给c 传递实参,使用默认值10
func(1, 2, 3) # 给c传递实参值,使用传递的数据3

def fun1(a=1, b, c): # 代码报错,语法错误

pass

3、不定长参数(重点)
有两个注意点: 函数定义中的 args 和 kwargs可以是任意的形参变量,不过习惯使用 args 和 kwargs.

print(1)

print(1, 2)

print(1, 2, 3)

print(1, 2, 3, 4)

print(1, 2, 3, 4, 5)

def func(args, kwargs): # 两个普通的形参

print(args)
print(kwargs)

func(1, 2)
func(args=2, kwargs=1)

print('' 30)
print('' 30)

def func(args, *kwargs):

print(args)
print(kwargs)

func(1, 2, 3, 3, 4, 5)
'''(1, 2, 3, 3, 4, 5)
{}'''
func(a=1, b=2, c=3, d=4)
'''()
{'a': 1, 'b': 2, 'c': 3, 'd': 4}'''
func(1, 2, 3, a=4, b=5, d=6)
'''(1, 2, 3)
{'a': 4, 'b': 5, 'd': 6}'''

 重点!!!(下面的)

def func(args, *kwargs):

print('args', args)
print('kwargs', kwargs)

my_list = [1, 2, 3, 4, 5, 6]
my_dict = {'a': 7, 'c': 8, 'b': 9, 'd': 10}

func(my_list) # 将列表作为一个数据进行传递(整体)
'''args ([1, 2, 3, 4, 5, 6],)
kwargs {}'''
func(*my_list) # 将列表中的每一个数据作为位置参数进行传递, 拆包
'''args (1, 2, 3, 4, 5, 6)
kwargs {}'''

func(*my_list ) # 这个会报错,因为本来该是元组的类型,加两个号,该放在字典的位置上,有冲突!

func(my_dict) # 将my_dict 作为一个位置实参进行传递(元组)
'''args ({'a': 7, 'c': 8, 'b': 9, 'd': 10},)
kwargs {}'''
func(*my_dict) # 将my_dict中的key 作为位置实参进行传递(元组)
'''args ('a', 'c', 'b', 'd')
kwargs {}'''
func(**my_dict) # 将my_dict中键值对作为关键字实参进行传递
'''args ()
kwargs {'a': 7, 'c': 8, 'b': 9, 'd': 10}'''

4、应用
def my_sum(args, *kwargs):

num = 0
for i in args:
    num += i  # num = num + i

for j in kwargs.values():
    num += j

print(f"求和的结果为{num}")

my_sum(1, 2, 3, a=4, b=5, c=6) # 21

5、函数参数的完整格式

普通形参 缺省形参 不定长元组形参 不定长字典形参

def func(a, b=1): # 先普通再 缺省

pass

def func1(a, b=1, *args): # 语法上不会报错,但是缺省参数不能使用默认值

print('a', a)
print('b', b)
print(args)

def func2(a, *args, b=1): # 普通形参 不定长元组形参 缺省形参

print('a', a)
print('b', b)
print(args)

def func3(a, args, b=1, *kwargs): # 普通形参 不定长元组形参 缺省形参 不定长字典形参

pass

func1(1, 2, 3, 4)

func2(1, 2, 3, 4)

func2(1, 2, 3, 4, b=10)

6、print函数中的sep

print(1)

print(1, 2)

print(1, 2, 3)

print(1, 2, 3, 4)

print(1, 2, 3, 4, 5)

print(1)
print(1, 2, sep='*')
print(1, 2, 3, sep='_') # 1_2_*_3
print(1, 2, 3, 4, sep='hello')
print(1,2) # 1 2
print(1, 2, 3, 4, 5, sep=' ') # 默认 1 2 3 4 5

二、拆包

相关文章
|
3月前
|
搜索推荐 Python
利用Python内置函数实现的冒泡排序算法
在上述代码中,`bubble_sort` 函数接受一个列表 `arr` 作为输入。通过两层循环,外层循环控制排序的轮数,内层循环用于比较相邻的元素并进行交换。如果前一个元素大于后一个元素,就将它们交换位置。
155 67
|
2月前
|
分布式计算 MaxCompute 对象存储
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
42 2
|
30天前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
85 8
|
2月前
|
Python
Python中的函数
Python中的函数
62 8
|
3月前
|
监控 测试技术 数据库
Python中的装饰器:解锁函数增强的魔法####
本文深入探讨了Python语言中一个既强大又灵活的特性——装饰器(Decorator),它以一种优雅的方式实现了函数功能的扩展与增强。不同于传统的代码复用机制,装饰器通过高阶函数的形式,为开发者提供了在不修改原函数源代码的前提下,动态添加新功能的能力。我们将从装饰器的基本概念入手,逐步解析其工作原理,并通过一系列实例展示如何利用装饰器进行日志记录、性能测试、事务处理等常见任务,最终揭示装饰器在提升代码可读性、维护性和功能性方面的独特价值。 ####
|
3月前
|
Python
Python中的`range`函数与负增长
在Python中,`range`函数用于生成整数序列,支持正向和负向增长。本文详细介绍了如何使用`range`生成负增长的整数序列,并提供了多个实际应用示例,如反向遍历列表、生成倒计时和计算递减等差数列的和。通过这些示例,读者可以更好地掌握`range`函数的使用方法。
90 5

热门文章

最新文章