Python教程81:函数的位置参数、默认参数、动态参数、关键字参数(入门必看) 您所在的位置:网站首页 python动态参数和关键字参数 Python教程81:函数的位置参数、默认参数、动态参数、关键字参数(入门必看)

Python教程81:函数的位置参数、默认参数、动态参数、关键字参数(入门必看)

2024-03-24 20:24| 来源: 网络整理| 查看: 265

1.形式参数(Formal Parameters)和实际参数(Actual Parameters)是函数或方法定义和调用过程中的两个重要概念。举个例子,在下面的greet函数中,当我们调用greet(“李白”)时,"李白"就是实际参数,name是一个形式参数。这个实际参数,被用来替换函数定义中的形式参数,以执行函数操作。

# @Author : 小红牛 # 微信公众号:WdPython

简单来说,形式参数是函数或方法定义的参数列表,用于规定接收输入的方式;实际参数是在调用函数或方法时传递的值,用于执行函数或方法的操作。

def greet(name): print(f'大家好,我是{name}哥哥') # 调用函数 greet('李白') # 输出:大家好,我是李白哥哥

2.位置参数(Positional Arguments):位置参数是按照函数定义时的顺序传递的参数。在调用函数时,必须按照定义时的顺序传递参数。位置参数是函数的基础,通常用于定义函数的主体逻辑。这里还说明参数的个数传参的时候要相同,比如下面的greet函数有两个参数,传参的时候也要传两个,实参和形参数量保持一致,且第一个参数是name,第二个参数是age,顺序不能错乱,参数的类型也要一致,不然解释器容易报错。

def greet(name, age): print(f'大家好,我是{name}哥哥,今年{age}岁') # 调用函数时,必须按照定义时的顺序传递参数 greet('李白', 18) # 输出:大家好,我是李白哥哥,今年18岁 # 传参顺序不一样的输出 greet(18, '李白') # 大家好,我是18哥哥,今年李白岁

3.默认参数(Default Arguments):默认参数是在函数定义时为参数设置一个默认值。如果在调用函数时没有提供该参数的值,那么将使用默认值。默认参数可以减少函数调用的复杂性,同时提供一种灵活的方式来处理未提供的参数值。下面的name=‘李白’, age=18就是两个默认参数。

def greet(name='李白', age=18): print(f'大家好,我是{name}哥哥,今年{age}岁') # 1.调用函数时,不传递任何参数,使用默认值 greet() # 输出:大家好,我是李白哥哥,今年18岁 # 2.调用函数时,只传递一个参数,其他参数使用默认值 greet('杜甫') # 输出:大家好,我是杜甫哥哥,今年18岁 # 3.查询参数有默认值,返回值是一个元组 print(greet.__defaults__) #输出 ('李白', 18)

混合参数的使用的小提醒: 当定义一个有默认值参数的函数时,有默认值的参数必须位于所有,没有默认值参数的后面。如下ab参数,放在默认参数name='李白’的前面就不会报错,反之放在后面就会有语法错误。

# 不会报错 def greet(a, b, name='李白', age=18): # 会报错 def greet(name='李白', age=18, a, b):

4.关键字参数(Keyword Arguments):关键字参数,是在调用函数时明确指定参数的名称和值。在函数定义中,可以通过为参数设置默认值来确保它们有默认值,但在调用函数时,可以使用关键字参数来明确指定要使用的值。关键字参数提供了更大的灵活性,允许在调用函数时传递特定的值,而不是使用默认值。下面例子中,func1函数有4个参数abcd,在调用func1的时候指定了关键字参数d=4,指定的实参和形参,写法上都要放在最后面,除非你把所有的参数,都传入的是关键字参数,这样可以无序传参 。func2函数错误的原因,是因为形参c,如果是关键字参数的时候,一定要放在参数的最后面位置,不然报错。所以func3是对func2错误的改写。只需要把指定的关键字参数c,放在最后面即可。即函数含有混合传参时,关键字参数必须位于所有的位置参数之后。

print('1.正确的写法'.center(30, '-')) def func1(a, b, c, d): print('参数的值:', a, b, c, d) func1(1, 2, 3, d=4) # 参数的值:1 2 3 4 func1(c=30, a=10, b=20, d=40) # 参数的值:10 20 30 40 print('2.错误的写法'.center(30, '-')) def func2(a, b, c, d): print('参数的值:', a, b, c, d) func2(1, 2, 4, c=3) # 输出 TypeError: func2() got multiple values for argument 'c' print('3.错误的改对的方法'.center(30, '-')) def func3(a, b, d, c): print('参数的值:', a, b, c, d) func3(1, 2, 4, c=3) # 参数的值:1 2 3 4

5.动态参数(Variable-length Arguments):动态参数允许函数接受可变数量的参数。在Python中,有两种动态参数类型:args和**kwargs。args用于接收任意数量的位置参数,**kwargs用于接收任意数量的关键字参数。这些动态参数可以与其他普通参数一起传递给函数,以实现更灵活的函数调用。

# 动态参数示例(*args) def sum_numbers(*numbers): total = 0 for num in numbers: total += num return total # 调用函数时,传递任意数量的数字参数 result = sum_numbers(1, 2, 3) print(result) # 输出:6 result2 = sum_numbers(1, 2, 3, 4, 5) print(result2) # 输出:15

**kwargs的示例用法

def print_info(**kwargs): print(kwargs.items()) for key, value in kwargs.items(): print(f"{key}: {value}") # 调用函数并传递参数 print_info(name="李白", age=18, city='唐')

输出内容:

dict_items([('name', '李白'), ('age', 18), ('city', '唐')]) name: 李白 age: 18 city: 唐

完毕!!感谢您的收看

----------★★历史博文集合★★----------

我的零基础Python教程,Python入门篇 进阶篇 视频教程 Py安装py项目 Python模块 Python爬虫 Json Xpath 正则表达式 Selenium Etree CssGui程序开发 Tkinter Pyqt5 列表元组字典数据可视化 matplotlib 词云图 Pyecharts 海龟画图 Pandas Bug处理 电脑小知识office自动化办公 编程工具



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有