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 办公设备维修网 版权所有 豫ICP备15022753号-3