python不同函数参数的概念解读(位置参数、默认参数、可变参数、关键字参数、命名关键字参数)

news/2025/3/14 1:10:58/

python不同函数参数的概念解读(位置参数、默认参数、可变参数、关键字参数、命名关键字参数、命名位置参数)

  • 一、示例
  • 二、不同参数类别
    • 1. 位置参数
    • 2. 默认参数
    • 3. 可变参数
    • 4. 关键字参数
    • 5. 命名关键字参数
  • 三、总结

这里记录一下最近复习python 函数参数相关知识的概念和示例。系统学习内容可参考廖雪峰老师的笔记

一、示例

当我们在定义函数的时候,往往需要定义函数的参数,有的时候会不理解各种函数参数都是干啥的,下面先给个简单的例子看看:

def func(a, b=1, *args, **kwargs):print(a)print(b)print(args)print(kwargs)

从上面例子中,

  • a属于默认参数
  • b属于位置参数
  • args和kwargs都属于可变参数,至于差别我们后面再说。

二、不同参数类别

1. 位置参数

python中按先后位置传入的参数,例如下面的例子:

def add(a, b):return a + b

执行:

print(add(5, 10))

结果:

15

当我们定义add函数时,a, b两个参数按顺序接受参数,赋值给a和b,这种类型的参数最为常见。

2. 默认参数

python中如果我们想设定默认值,并不想每次都要传入这个参数,那么就可以使用默认参数,例如下面的例子:

def power(a, n=2):print(a ** n)

执行:

power(2)
power(2, 2)
power(2, 10)

结果:

4
4
1024

当我们定义power函数,求a^n 时,我们更多时候想用a^2,那么就可以将n设为一个默认参数,传入一个参数时,会默认使用n=2,当然我们也可以传入两个参数,这时候会按位置更改n。

合理使用默认参数可以降低我们函数传入参数的复杂度。

注意:

  1. 必须参数必须要在默认参数前面
  2. 尽量把变化大的参数定义在前面。

3. 可变参数

python中如果我们输入参数的个数是可变的,那么这时候就需要用到可变参数了,例如我们计算add时,如果不知道有几个参数要传入,那么就可以使用可变参数:

def add(*nums):print(nums)print(sum(nums))

执行:

add(2, 3)
add(2, 2, 2)
add()

结果:

(2, 3)
5
(2, 2, 2)
6
()
0

当我们执行add函数,*nums会把传入的参数按顺序组装成一个tuple,然后供我们使用。

这里会有一个问题,那就是如果你的参数本身就是一个list或者tuple,那要怎么传入呢,这个时候就可以使用*nums传入,如下:

nums = [1,2,3]
add(*nums)

这样的话,传入的就是nums这个list中的1,2,3三个数字,然后变为tuple使用。

4. 关键字参数

除了可变参数之外,我们除了必选的可变参数之后,可能还需要一些非必选的参数,使用关键字参数允许任意个参数,函数调用时组装成一个dict

def example(a, b, **kw):print(name, age, kw)

执行:

example('123', 20, c=0, d=1)

结果:

123 20 {'c': 0, 'd': 1}

注意:
可以发现,关键字参数也允许传入任意个参数,会将外部传入的key-value形式的参数拷贝到kw上,但不影响外部变量。

5. 命名关键字参数

有时候,尽管我们运行关键字参数的传入,但是又不想让肆无忌惮的传入,这时候就需要限制一下哪些是可以接收的关键字参数,主要的用法有以下几种:

#eg1
def get(name, age, *, city, job):print(name, age, city, job)
#eg2
def get(name, age, *args, city, job):print(name, age, args, city, job)
#eg3 
def get(name, age, *, city='XA', job):print(name, age, city, job)
  • 示例1:我们可以在位置参数之后加一个*,后面的都被视作是命名关键字参数。
  • 示例2:当我们参数中存在可变参数是,那么就不需要再添加*来作分割。
  • 示例3:命名关键字参数是可以缺省的。

注意:

  1. 命名关键字必须要传入参数名,除非其为默认参数;例如上述示例2,必须用city=‘xxx’来传入命名关键字参数,否则会报错。
  2. 缺少*时,命名关键字参数被视为位置参数。

三、总结

通过上述的描述,结合我们的实践,可以发现,很多时候,都可以用下面的格式,来描述一个函数,即由可以不限数量的可变参数和命名关键字参数组成。

func(*args, **kwargs)

http://www.ppmy.cn/news/472896.html

相关文章

oracle常用的SQL PLUS命令详解

dba基础课程:oracle常用的SQL PLUS命令详解 Oracle的sql*plus是与oracle进行交互的客户端工具。在sql*plus中,可以运行sql*plus命令与sql*plus语句。我们通常所说的DML、DDL、DCL语句都是sql*plus语句,它们执行完后,都可以保存在一…

常用的SQL*PLUS命令

当输入SQL语句时,该语句被存在SQL缓冲区中(一个内存区)。这个SQL缓冲区很小,只能存一个SQL语句,当下一条SQL语句输入时,原来在缓冲区中的SQL语句被覆盖掉。SQL*PLUS是一个工具(环境)…

sqlplus 命令集

show和set命令是两条用于维护SQL*Plus系统变量的命令 SQL> show all --查看所有68个系统变量值 SQL> show user --显示当前连接用户 SQL> show error                --显示错误 SQL> set heading off --禁止输出列标题,默认值为ON SQL&…

gcc的-l参数,-L参数,-I参数

一、基础知识 标准库的大部分函数通常放在文件 libc.a 中(文件名后缀.a代表“achieve”,译为“获取”),或者放在用于共享的动态链接文件 libc.so 中(文件名后缀.so代表“share object”,译为“共享对象”&…

SQL*PLUS命令的使用(一)

命令不需要分号结束我们可以通过help index命令,来查看命令清单showdown命令可以关闭数据库实例,describe命令可以返回对数据库所存储对象的描述 查找oracle中有哪些用户 select username from dba_usernames1.如何解锁用户 alter user 用户名 accoun…

sqlplus 命令大全

Shell 脚本和sqlplus间的交互 有些时候我们可能需要shell脚本通过oracle的sqlplus执行一些sql,并对结果集进行相关的操作。 1、设置输出显示 SQL> show all --查看所有68个系统变量值 SQL> show user --显示当前连接用户 SQL> show error --显示错误 SQL> set s…

SQLPLUS常用命令

一.SQLPLUS登陆命令: 使用sqlplus: 10G之前的版本登陆时需要加引号(单、双引号皆可)如:sqlplus " / as sysdba" sqlplus -prelim / as sysdba 从Oracle10g开始,sqlplus提供了一个参数选项-…

SQL * PLUS 概述与常用命令

简介 SQL * PLUS 是用户与oracle进行交互的客户端工具。在SQL*PLUS 中,用户可以执行输入的SQL语句、PL/SQL 语句,以及各种sql *plus命令,还可以格式化SQL,PL/SQL语句的输出结果等。 SQL*PLUS的命令类型: SQL &#x…