首页 > 编程语言 >一文看懂 Python 中的函数参数

一文看懂 Python 中的函数参数

时间:2023-02-13 23:34:24浏览次数:39  
标签:传参 一文 方式 关键字 Python 函数参数 参数 默认值 仅限

函数定义中的参数也就是形式参数,规定了在调用函数时如何传递实际参数以及这些参数有无默认值。

实参传递方式

def f(a):
    print(a)

实参传递方式有两种,位置和关键字。对于上面定义的函数 f,形如 f(1) 这种调用是通过位置的方式传参,形如 f(a=1) 这种调用是通过关键字的方式传参,两种传参方式都可以是因为形参 a 没有对传参方式做限制。

Python 也提供了一些方式用来限制参数的传递方式。

仅限位置参数

def f(a, b, /, d):
	pass

对于这种定义,斜杠 / 之前的参数 a 和 b 只能通过位置参数的方式传参,叫做仅限位置参数,斜杠 / 之后的参数 d 既可以通过位置也可以通过关键字的方式传参,所以 f(1, 2, d=3)f(1, 2, 3) 都可以调用函数。

仅限关键字参数

def f(a, b, *, d):
	pass

定义中星号 * 后面的参数 d 只能通过关键字的方式传参,叫做仅限关键字参数,星号 * 前面的参数 a 和 b 既可以通过位置也可以通过关键字的方式传参,所以 f(1, 2, d=3)f(1, b=2, d=3) 都可以调用函数。

当然星号 * 和斜杠 / 也可以同时定义,如下

def f(a, /, b, *, c):
	pass

a 只能通过位置传参,c 只能通过关键字传参,b 都可以,所以只有 f(1, 2, c=3)f(1, b=2, c=3) 这两种调用方式。

参数的默认值

函数定义中无论规定形参的传递方式是哪种,都可以通过 k=v 的形式设置参数的默认值,如果有参数设置了默认值,那么在调用函数的时候可以省略对该参数的传值。所以上面说的实参传递方式,更准确的描述是:如果仅限关键字参数没有设置默认值,那么只能通过关键字的形式传参,否则可以省略该参数的传递,如果仅限位置参数没有设置默认值,那么只能通过位置的形式传参,否则可以省略该参数的传递。

下面看一个例子作总结

def f(a, b=10, /, c=1, *, d=20, e):
	pass

b 是仅限位置参数有默认值,e 是仅限关键字参数没有默认值。函数定义中出现的 k=v 这种形式表示参数 k 有默认值 v,函数调用中出现的 k=v 的形式表示通过关键字的方式给参数 k 传递参数值 v,这是两个不同的概念不要混淆了。

标签:传参,一文,方式,关键字,Python,函数参数,参数,默认值,仅限
From: https://www.cnblogs.com/zikcheng/p/17118282.html

相关文章

  • Python 高级编程之网络编程 SocketServer(七)
    目录一、概述二、socket模块与socketserver关系三、socketserver模块使用1)创建TCPServer2)创建UDPServer四、异步服务器类(对线程、多进程)1)ThreadingMixIn(多线程)2)Forki......
  • python中list中的元素去重
     直观方法最简单的思路就是: 代码如下:ids=[1,2,3,3,4,2,3,4,5,6,1]news_ids=[]foridinids:   ifidnotinnews_ids:       news_ids.a......
  • SparkSQL指南-快速开始(Python版)——(一)
    快速开始创建环境Spark程序主要分为三个阶段:创建环境数据操作关闭环境(在Streaming程序中为执行环境)下面是批处理的SparkSQLAPI的创建环境的类:SparkSession,其目的......
  • python中defaultdict 的用法
    defaultdict:当我使用普通的字典时,用法一般是dict={},添加元素的只需要dict[element]=value即,调用的时候也是如此,dict[element]=xxx,但前提是element字典里,如果不在字......
  • 电商网站Web自动化测试实战( 编写京东搜索脚本python+selenium框架)
    电商网站Web自动化测试实战(编写京东搜索脚本)1,打开京东页京东首页地址:https://www.jd.com/,故进入京东首页如下:2,打开浏览器开发者模式定位元素前需先打开浏览器开发者......
  • python pandas库总结-数据分析和操作工具
    参考:https://pandas.pydata.org/Input/output相关函数pandas.read_excel—将Excel文件读入pandas数据框支持读取xls,xlsx,xlsm,xlsb,odf,ods和odt文件扩展名,支持单......
  • python爬虫学习——列表
    namelist=[]#定义一个空的列表namelist1=["小张","小红","小李"]print(namelist1[0])print(namelist1[1])print(namelist1[2])testlist=[1,"测试"]#列表中......
  • python入门学习笔记004--趣学Python算法--第4例百钱百鸡
    中国古代数学家张丘建在他的《算经》中提出了一个著名的“百钱百鸡问题”:一只公鸡值五钱,一只母鸡值三钱,三只小鸡值一钱,现在要用百钱买百鸡,请问公鸡、母鸡、小鸡各多少只? ......
  • python 多线程 join
    当一个进程启动之后,会默认产生一个线程。这个线程就是主线程。如果是多线程时,主线程会创建多个线程。主线程执行完成后就会退出。多线程执行完成后也会退出。注意:只有守护......
  • python文件I/O
    1、打印到控制台:printif__name__=='__main__':print('hello')2、读取键盘输入:inputif__name__=='__main__':str1=input('请输入:')print(str1)3、打开......