干货!Python函数中的参数类型

news2024/11/19 10:34:39

图片

1.必须参数

  • 调用函数的时候,必须以正常的顺序传参,实参的数量和形参的数量保持一致

def demo(name, age):
    print("我的姓名是:%s, 年龄是:%d"%(name, age))

demo("张三", 22)    # 我的姓名是:张三, 年龄是:22
demo(22, "张三")    # TypeError: %d format: a real number is required, not str 若参数顺序不正确会报错

2.关键字参数

  • 允许函数调用的时候,实际参数和形式参数的顺序不一致,使用关键字进行自动匹配

demo(age=24, name="王五")    # 我的姓名是:王五, 年龄是:24

3.默认参数

  • 是指在函数定义时,给形参设置的默认值

def fn(num1, num2 = 10):
    print(num1 + num2)

fn(12, 36)    # 48
fn(12)    # 22

"""
使用默认参数时,注意的事项:
a.若函数中有默认参数,在调用函数时,若没有传递参数,则使用默认参数,若传递了参数,则使用传递的参数,传递的参数会覆盖默认参数
b.在定义函数时,若有默认参数,默认参数要放在参数列表的最后面,若放在前面会报错
"""

""" 
# 默认参数放在前面会报错
def test(a = 13, b):    # SyntaxError: parameter without a default follows parameter with a default
    print(a - b)
"""

4.不定长参数(可变参数):*args 和 **kwargs

"""
a. *args:用来接收多个位置参数,args是arguments的简写,得到的参数是一个元组
b. *kwargs:用来接收多个关键字参数,kwargs是 keyword arguments的简写,得到的参数是一个字典
"""
def fn1(num, *args):
    print(num, args)

fn1(13)    # 13 ()
fn1(13, 32)    # 13 (32,)
fn1(43, 447, 78)    # 43 (447, 78)

"""
# 注意:若函数参数中有 *args和普通参数,要八可变参数(*args)放在参数列表的最后面
def fn2(*args, num):
    print(args, num)

fn2(4343, 656, 78, 99, 4)    # TypeError: fn2() missing 1 required keyword-only argument: 'num'
"""

def fn3(a, **kwargs):
    print(a, kwargs)

fn3(76, x = 23, y = 87)    # 76 {'x': 23, 'y': 87}
# fn3(76, 23, 87)   # TypeError: fn3() takes 1 positional argument but 3 were given

"""
注意:
a.若函数中有 **kwargs 参数,在传输 kwargs 参数时,必须以键值对形式传输,k=v这种方式
b.参数列表中的 **kwargs 必须放在参数列表的最后面

def fn4(**kwargs, b):    # SyntaxError: arguments cannot follow var-keyword argument
    print(kwargs, b)
fn4(a = 32, b = 43, 32)
"""

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

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

相关文章

黑马点评-发布探店笔记

探店笔记 探店笔记类似点评网站的评价,往往是图文结合。 对应的表有两个: tb_blog:探店笔记表,包含笔记中的标题、文字、图片等 tb_blog_comments:其他用户对探店笔记的评价 流程如下: 上传接口&#…

pytest测试框架使用基础07 fixture—parametrize获取参数的几种常用形式

【pytest】parametrize获取参数的几种常用形式: a.数据结构 b.文件 c.数据库 d.conftest.py配置一、直接在标签上传参 1.1 一个参数多个值 pytest.mark.parametrize("参数", (参数值1, 参数值2, 参数值3))示例: import pytest # 单个参数的情况 pytest.…

枚举 --java学习笔记

什么是枚举 枚举是一种特殊类 格式: 修饰符 enum 枚举类名{ 名称1,名称2,...; //枚举类的第一行必须罗列的是枚举对象的名字 其他成员... } 枚举类的第一行只能罗列一些名称,这些名称都是常量,…

[C++]类和对象,explicit,static,友元,构造函数——喵喵要吃C嘎嘎4

希望你开心,希望你健康,希望你幸福,希望你点赞! 最后的最后,关注喵,关注喵,关注喵,大大会看到更多有趣的博客哦!!! 喵喵喵,你对我真的…

Python数据处理实战(4)-上万行log数据提取并作图进阶版

系列文章: 0、基本常用功能及其操作 1,20G文件,分类,放入不同文件,每个单独处理 2,数据的归类并处理 3,txt文件指定的数据处理并可视化作图 4,上万行log数据提取并作图进阶版&a…

Vue组件中的scoped属性

Vue组件中的scoped属性的作用是:当前的单文件组件的css样式只用于当前组件的template模板,在Vue脚手架汇总组件间关系时避免样式命名重复的情况。 原理:使用data-*属性在template模板中使用样式的HTML元素上添加额外属性,再利用标…

(sub)三次握手四次挥手

TCP的三次握手与四次挥手理解及面试题 序列号seq:占4个字节,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生;给字节编上序号后,就给每一个报文段指派一…

即插即用篇 | YOLOv8 引入 ParNetAttention 注意力机制 | 《NON-DEEP NETWORKS》

论文名称:《NON-DEEP NETWORKS》 论文地址:https://arxiv.org/pdf/2110.07641.pdf 代码地址:https://github.com/imankgoyal/NonDeepNetworks 文章目录 1 原理2 源代码3 添加方式4 模型 yaml 文件template-backbone.yamltemplate-small.yamltemplate-large.yaml

蓝桥杯2023年-买瓜(dfs,类型转换同样耗时)

题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜,每个瓜的重量为 Ai 。 小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。 小蓝希望买到的瓜的重量的和恰好为 m 。 请问小蓝至少要劈多少个瓜才能买到重量恰好…

Igraph入门指南 3

4、图转换到其他R数据结构 图是对实体关系的表达,在igraph中,图可以转换为三种数据结构。 4-1 图转邻接矩阵:as_adjacency_matrix | as_adj,结果是矩阵 邻接矩阵又分为有向图邻接矩阵和无向图邻接矩阵,但本函数使用…

MySQL-Linux安装

JDK安装(linux版) CentOS7环境: jdk下载地址huaweicloud.com 创建目录: mkdir /opt/jdk通过 ftp 客户端 上传 jdk压缩包(linux版本)到 1中目录进入目录:cd /opt/jdk解压:tar -zxv…

ArcGIS学习(十一)公服设施服务区划分与评价

ArcGIS学习(十一)公服设施服务区划分与评价 本任务带来的内容是公服设施服务区划分与公服设施服务区评价。本任务包括两个关卡: 公服设施服务区划分公服设施服务区空间价值评价1.公服设施服务区划分 首先,来看看这个案例的场景和基础数据。我们以上海市图书馆为例进行分析…

信息抽取技术在电商CRM中的应用与实践

一、引言 在当今快速发展的互联网电商领域,客户资源的有效管理和精准营销已成为商家提升竞争力的关键。为了实现这一目标,许多商家开始采用客户关系管理(CRM)系统来优化他们的客户互动策略。通过这些系统,商家能够收集…

【netty系列-02】深入理解socket本质和BIO底层实现

Netty系列整体栏目 内容链接地址【一】深入理解网络通信基本原理和tcp/ip协议https://zhenghuisheng.blog.csdn.net/article/details/136359640【二】深入理解Socket本质和BIOhttps://zhenghuisheng.blog.csdn.net/article/details/136549478 深入理解socket本质和bio底层实现 …

Spring Cloud Gateway自定义断言

问题:Spring Cloud Gateway自带的断言(Predicate)不满足业务怎么办?可以自定义断言! 先看Spring Cloud Gateway是如何实现断言的 Gateway中断言的整体架构如下: public abstract class AbstractRoutePred…

flink重温笔记(十二): flink 高级特性和新特性(1)——End-to-End Exactly-Once(端到端精确一致性语义)

Flink学习笔记 前言:今天是学习 flink 的第 12 天啦!学习了 flink 高级特性和新特性之 End-to-End Exactly-Once(端到端精确一致性语义),主要是解决大数据领域数据从数据源到数据落点的一致性,不会容易造成…

MySQL面试题-锁(答案版)

锁 1、MySQL 有哪些锁? (1)全局锁 加了全局锁之后,整个数据库就处于只读状态了,这时其他线程执行以下操作,都会被阻塞: 对数据的增删改操作,比如 insert、delete、update等语句&…

【OJ比赛日历】快周末了,不来一场比赛吗? #03.09-03.15 #13场

CompHub[1] 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号会推送最新的比赛消息,欢迎关注! 以下信息仅供参考,以比赛官网为准 目录 2024-03-09(周六) #6场比赛2024-03-10…

c# combox 行间距调整

初始化combox comboBox1.DropDownStyle ComboBoxStyle.DropDownList;comboBox1.ItemHeight 25; // 设置 combox 的行高comboBox1.DrawMode DrawMode.OwnerDrawVariable; 添加 DrawItem 事件 private void comboBox1_DrawItem(object sender, DrawItemEventArgs e){if (…

Web核心

JavaWeb技术栈 B/S架构:Browser/Server , 浏览器/服务器 架构模式,其特点为,客户端只需要浏览器,应用程序的逻辑和数据都存储在服务器端。浏览器只需要请求服务器,获取Web资源,服务器把Web资源…