Python中函数的参数有哪些?

news2024/12/22 19:47:48

目录

①必选参数

②默认参数

③可变参数

④关键字参数

⑤命名关键字参数


学习python函数部分的时候,发现除了正常定义的必选参数外,还使用默认参数、可变参数、关键字参数和命名关键字参数,在这里理清楚这些参数具体是怎么回事吧!

直接用一个例子来解释,来自于函数的参数_廖雪峰的官方网站。

牢记参数定义的顺序必须是:必选参数、默认参数、可变参数、命名关键字参数和关键字参数

def f1(a, b, c=0, *args, **kw):
    print('a =', a, 'b =', b, 'c =', c, 'args =', args, 'kw =', kw)

①a,b是必选参数,也就是最常见的位置参数。

比如在计算a的平方时,我们可以这样定义:

def power(x):
    return a * a

这里的x就是位置参数,也是我们调用power函数时必须输入的参数。

②c=0是默认参数。

比如我们经常计算a的平方,但是偶尔也用到a的三次方、四次方怎么办?

def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s

那么n是默认参数,默认为2,也就是调用power(x)也不会报错,因为n有默认值2。如果有多个默认参数,会按照顺序来提供参数;也可以不按顺序提供部分默认参数,需要把对应的参数名写上。

注意:默认参数必须指向不变对象。在Python中,字符串、整数等都是不可变的;而list是可变对象。

③*args是可变参数

在函数内部,参数args接收到的是一个tuple(是python内置的有序集合,与list区别是,tuple一旦初始化就不可更改)。比如我们需要一个将输入数字累加的函数:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n
    return sum

在这里*numbers是可变参数,也就是参数数量可变,我们可以输入两个数字调用calc进行累加,也可以输入更多数字,也可以直接调用一个数组里面的数字,只需要加上*号。

**kw是关键字参数

可变参数允许你传入0个或任意个参数,这些可变参数在函数调用时自动组装为一个tuple。而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict(dict是key-value存储结构,根据key来计算value的存储位置)。

关键字参数可以扩展函数的功能。如用户注册时除了用户名和年龄是必填项外,其他都是可选项,利用关键字参数来定义这个函数就能满足注册的需求。*下面这张图片来自廖雪峰的官方网站。

与可变参数类似,也可以把dict转换为关键字参数传进去,只需要加上**号

⑤命名关键字参数

上述关键字参数可以传入任意不受限制的关键字参数;想要限制关键字参数的名字,就可以用命名关键字参数。*下面这张图片来自廖雪峰的官方网站。

命名关键字参数必须传入参数名(如上图中箭头所指)。使用命名关键字参数时,如果没有可变参数,就必须加一个*作为特殊分隔符。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1408446.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

nvm 配置淘宝镜像失效,以及安装node后 npm-v 无效

win11 nvm版本 1.1.4 和1.1.7和1.1.12(目前最新版本24年 一月二十三日) 以上nvm版本都会出现一下问题, 从https://github.com/coreybutler/nvm-windows/releases 下载nvm安装包如下图 傻瓜式安装后,不用去配置环境变量&#…

动态IP代理与静态IP代理:详细区别与比较全析

动态代理IP和静态代理IP在跨境业务中具有非常广泛的实用性,但仍然有非常多小白选手并不清楚什么场景适合用哪一类IP,哪一中代理IP类型更适合你?其实他们各有其优点和缺点,为了使您的网络营销、社媒推广、跨境电商运营、网络抓取尽…

C#用DateTime.DaysInMonth(Int32, Int32) 获取指定月的天数

目录 一、DateTime.DaysInMonth(Int32, Int32) 方法 二、实例 1.实例1 2.实例2 3.方法3 一、DateTime.DaysInMonth(Int32, Int32) 方法 返回指定年和月中的天数。 public static int DaysInMonth (int year, int month);参数 year Int32 年。month Int32 月&#…

「JavaSE」抽象类接口2

🎇个人主页:Ice_Sugar_7 🎇所属专栏:快来卷Java啦 🎇欢迎点赞收藏加关注哦! 抽象类&接口2 🍉接口间的继承🍉接口的应用🍉总结 🍉接口间的继承 和类的继承…

Java--异常处理

文章目录 主要内容一.练习11.源代码代码如下(示例): 2.结果 二.练习21.源代码代码如下(示例): 2.结果 三.练习31.源代码代码如下(示例): 2.结果 总结 主要内容 一.练习1 编写程序,定义一个 cir…

FRRouting学习(一) 配置日志文件

以配置isis event事件日志为例 1、在配置之前,/var/log/frr路径下是没有文件的: 2、在vtysh config之下输入:log file /var/log/frr/isisd.log debugging 后面的debugging表示日志级别,可以根据自己修改 3、配置好了之后&#xf…

力扣hot100 两两交换链表中的节点 双指针

Problem: 24. 两两交换链表中的节点 复杂度 时间复杂度: O ( n ) O(n) O(n) 空间复杂度: O ( 1 ) O(1) O(1) Code /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { …

力扣hot100 环形链表 快慢指针 哈希 数学公式

Problem: 142. 环形链表 II 文章目录 思路Code 思路 👨‍🏫 参考题解 Code ⏰ 时间复杂度: O ( n ) O(n) O(n) 🌎 空间复杂度: O ( 1 ) O(1) O(1) /** /*** Definition for singly-linked list.* class ListNode {* int val;* …

微信小程序如何做到高效引流?-数灵通

随着微信小程序制作门槛的降低,大量的小程序如雨后春笋般涌现,其中小程序商城类型尤为众多。然而,由于微信自身的流量有限,对于大多数小程序商城而言,获取足够的流量成为了一大挑战。 针对这一问题,我们可以…

如何在Windows 10/11中设置IPv4?这里有详细步骤

在Windows上,路由器的动态主机配置协议(DHCP)服务器(通常)负责将动态传输控制协议/互联网协议(TCP/IP)配置分配给网络中的每个设备,包括运行Windows 11或Windows 10的计算机。 尽管…

链表OJ----相交链表找交点

https://leetcode.cn/problems/intersection-of-two-linked-lists/description/ 1、长链表先走,然后二者一起走 由于两个链表可能不一样,就不好控制移动。那么我们可以让长的链表先走二者的长度差的长度,使剩下部分和短链表一样长。然后二者一…

操作无法完成,因为文件已在Windows资源管理器中打开,如何解决?以及如何将哔哩哔哩下载好的视频导出到电脑中播放?— 以vivo手机为例

前言 想删除流氓软件的时候,提示操作无法完成,因为文件已在Windows资源管理器中打开,但打开任务管理器,似乎又没有符合的正在执行的程序,更别说打开让人看到头疼的资源监视器了,本文将用一招解决如上问题 …

【RF FILTER 仿真】滤波器 Ansys Electronics not ADS

第一,声明 全网搜索,用这个HFSS继承的介绍非常少,并且没有什么指导意义。所以有必要写一下,就像之前的xpedition,总要挑战一下吧。本文仅仅和大家学习研究,对比ADS体会一下差别。 第二,记录直接开始&…

微信小程序如何解决botton按钮对齐问题

如果botton不在其他控件下层&#xff0c;或者上层控件类型不为flex&#xff0c;可以用float调整botton显示位置&#xff0c;如floatright&#xff0c;则botton显示在右侧。 <button type"primary" style"float: right;">测试</button><vie…

什么是JMeter?我们为什么要用JMeter做性能测试

什么是JMeter&#xff1f;我们为什么要用JMeter做性能测试 什么是JMeter&#xff1f;为什么选择JMeterJMeter的优点JMeter是如何工作的 什么是JMeter&#xff1f; Apache JMeter TM是纯Java开源软件&#xff0c;最初由Apache软件基金会的Stefano Mazzocchi开发&#xff0c;旨在…

运维神器Ansible的常用模块

引言&#xff1a;话不多说&#xff0c;今天分享一下Ansible的常用模块&#xff0c;建议收藏哦 1、ping模块 ping模块可以进行主机连通性测试 命令格式 ansible 主机或主机组 -m ping 例&#xff0c;成功显示如下&#xff1a; 2、command 模块 command模块可以直接在远程主机…

条件语句及if语句,case语句

文章目录 条件语句一、测试1、概述格式 2、文件测试2.1 格式2.2 常用操作符 3、比较整数数值3.1 格式3.2 常用操作符 4、字符串比较4.1 格式4.2 常用操作符 5、逻辑测试&#xff08;短路运算&#xff09;5.1 格式5.2 常用操作符 6、双中括号6.1 格式6.2 说明 二、if语句1、单分…

DA14531平台secondary_bootloade工程修改笔记

DA14531平台secondary_bootloade工程修改笔记 1.支持在线仿真 初始时加入syscntl_load_debugger_cfg(); 表示可以重复Jlink连接调试仿真 2.支持串口烧录&#xff0c;和支持单线线写 utilities\secondary_bootloader\includes\bootloader.h /************** 2-wire UART supp…

程序媛的mac修炼手册-- 如何用Python节省WPS会员费

上篇分享了如何用微博爬虫&#xff0c;咱举例爬了女明星江疏影的微博数据。今天就用这些数据&#xff0c;给大家安利一下怎么用Python实现WPS中部分Excel付费功能。 MacOS系统自带的工具&#xff0c;绝大多数都非常顶&#xff0c;除Numbers外。当然&#xff0c;page比起word来&…

ubuntu 22.04 安装mysql-8.0.34

ubuntu 22.04 安装mysql-8.0.34 1、基础安装配置 更新软件包&#xff1a; sudo apt update查看可用软件包&#xff1a; sudo apt search mysql-server安装最新版本&#xff1a; sudo apt install -y mysql-server或者&#xff0c;安装指定版本&#xff1a; sudo apt inst…