Python参数种类介绍
Python参数种类介绍
相比于一些其他编程语言,Python提供了更多的参数种类选项。这是Python的一大特点,使用不同的参数类型,可以提高函数的可读性和可维护性。例如,使用关键字参数可以使函数调用更加清晰,不需要记住参数的顺序。
从函数定义和函数调用的角度分类,Python参数种类有:
1、位置参数(Positional argument):在调用函数时,按照函数定义中参数的顺序传递的参数。例如:
def add(a, b):
return a + b
result = add(1, 2) # 这里传递的就是位置参数
print(result) # 输出:3
2、关键字参数(Keyword argument):在调用函数时,使用参数的名字来传递的参数。关键字参数可以直接指定参数的值,不依赖于参数的位置。例如:
def add(a, b):
return a + b
result = add(b=2, a=1) # 这里传递的就是关键字参数
print(result) # 输出:3
3、默认[值]参数(Default argument):
在函数定义中,可以为参数设置默认值。当调用函数时,如果没有为该参数提供值,则使用默认值。例如:
def greet(name, age=20):
print(f"Hello, {name}. You are {age} years old.")
greet("John") # 输出:Hello, John. You are 20 years old.
greet("Alice", 18) # 输出:Hello, Alice. You are 18 years old.
4、可变数量参数(Variable argument):在定义函数时,使用*号表示可变参数,将传入的参数打包成一个元组。可变参数使函数更加灵活,可以处理不确定数量的位置参数(positional arguments)。例如:
def sum_numbers(*args):
return sum(args)
result = sum_numbers(1, 2, 3, 4, 5) # 这里传递的就是可变数量位置参数
print(result) # 输出:15
5、关键字可变参数(Keyword Variable Arguments):关键字可变参数允许函数接受任意数量的关键字参数。在函数定义时,可以使用**号来表示关键字可变参数。关键字可变参数使函数能够处理不确定数量和名称的关键字参数。例如:
def greet(**kwargs):
for key, value in kwargs.items():
print(f'{key}: {value}')
greet(name='Alice', age=25) # 这里传递的就是可变数量关键字参数
输出:
name: Alice
age: 25
特别提示:*args 和 **kwargs 只是通用的约定俗成的名称,实际上你可以使用其他名称来代替它们。但 * 和 ** 不能去掉。
还可以组合使用不同类型的参数。例如:
def greet(name, age=25, **kwargs):
print(f"Hello, my name is {name}, I'm {age} years old.")
for key, value in kwargs.items():
print(f"{key} = {value}")
greet("Alice", age=30, city="New York", job="Software Engineer")
输出:
Hello, my name is Alice, I'm 30 years old.
city = New York
job = Software Engineer
解包参数(Unpacking argument)
Python中,解包参数是一种将可迭代对象(如列表、元组、字典等)拆分为单独的参数的方法。解包参数可以用于函数调用或者在赋值语句中。
1)函数调用中的解包参数:
def add(a, b):
return a + b
numbers = [1, 2]
result = add(*numbers)
print(result) # 输出:3
在上面的例子中,我们将列表numbers解包为两个参数a和b,然后将它们传递给函数add进行计算。
2)赋值语句中的解包参数:
numbers = [1, 2]
a, b = numbers
print(a) # 输出:1
print(b) # 输出:2
在这个例子中,我们将列表numbers解包为两个变量a和b,并分别赋值为列表中的第一个和第二个元素。
3)字典的解包参数:
person = {'name': 'Alice', 'age': 25}
print("My name is {name} and I am {age} years old.".format(**person))
# 输出:My name is Alice and I am 25 years old.
在这个例子中,我们使用**操作符将字典person解包为关键字参数,然后将它们传递给format方法进行字符串格式化。
更多情况,可参见 Python函数的参数详解 https://blog.csdn.net/cnds123/article/details/123264378
相关文章:
Python参数种类介绍
Python参数种类介绍 相比于一些其他编程语言,Python提供了更多的参数种类选项。这是Python的一大特点,使用不同的参数类型,可以提高函数的可读性和可维护性。例如,使用关键字参数可以使函数调用更加清晰,不需要记住参数…...
react事件机制
React 事件机制 React的事件机制是React框架中非常重要的一部分,用于处理用户交互和用户界面上的事件。React的事件机制在底层使用了虚拟DOM以及合成事件来提高性能和跨浏览器兼容性。以下是关于React事件机制的详细信息: 合成事件(Syntheti…...
JAVA删除excel指定列
首先POI没有提供删除列的API,所以就需要用其他的方式实现。 在 java - Apache POI xls column Remove - Stack Overflow 这里找到了实现方式: 先将该列所有值都清空,然后将该列之后的所有列往前移动。 下面的工具类中 deleteColumns(Inpu…...
Netty编码器和解码器
文章目录 一、Decoder原理与实践1、ByteToMessageDecoder解码器2、自定义整数解码器1)常规方式2)ReplayingDecoder解码器 3、分包解码器3、MessageToMessageDecoder解码器 二、Netty内置的Decoder1、LineBasedFrameDecoder解码器2、DelimiterBasedFrameD…...
大语言模型(LLM)综述(三):大语言模型预训练的进展
A Survey of Large Language Models 前言4. PRE-TRAINING4.1数据收集4.1.1 数据源4.1.2 数据预处理4.1.3 预训练数据对LLM的影响 4.2 模型架构4.2.1 典型架构4.2.2 详细配置4.2.3 预训练任务4.2.4 解码策略4.2.5 总结和讨论 4.3 模型训练4.3.1 优化设置4.3.2 可扩展的训练技术 …...
如何在Node.js中使用环境变量或命令行参数来设置HTTP爬虫ip?
首先,定义问题:在 Node.js 应用程序中,我们可以通过环境变量或命令行参数来设置HTTP爬虫ip,以便在发送请求时使用这些HTTP爬虫ip。 亲身经验:我曾经需要为一个项目设置HTTP爬虫ip,以便在发送请求时使用这些…...
VMware打开共享虚拟机后找不到/mnt/hgfs/文件夹,以及不能拖拽/复制粘贴等操作,ubuntu不能安装VMware tools
问题原因 我的问题出现原因是,安装ubuntn虚拟机的时候VMware tools没有安装好,需要重新安装,但安装选项是暗的,不能操作。 类似这种情况,虚拟机开启时也是,因为我虚拟机已经装好了,开启时是亮…...
pytorch 入门 (五)案例三:乳腺癌识别识别-VGG16实现
本文为🔗小白入门Pytorch内部限免文章 🍨 本文为🔗小白入门Pytorch中的学习记录博客🍦 参考文章:【小白入门Pytorch】乳腺癌识别🍖 原作者:K同学啊 在本案例中,我将带大家探索一下深…...
【QT开发(14)】QT P2P chat 聊天
在【P2P学习(2)】P2P 通信,主要存在四种不同的网络模型的第一阶段:集中式P2P 模式 最简单的路由方式就是集中式,即存在一个中心节点保存了其他所有节点的索引信息,索引信息一般包括节点 IP 地址、端口、节…...
解决adb root命令时错误 adbd cannot run as root in production builds
我测试的手机是小米8,root权限已经刷过了,但是在pc端使用adb root命令的时候,会报错"adbd cannot run as root in production builds" 后来查资料发现是因为Magisk和安卓9版本的问题 https://www.cnblogs.com/jeason1997/p/124105…...
操作系统中套接字和设备独立性软件的关系
网络编程就是编写程序让两台联网的计算机相互交换数据。在我们不需要考虑物理连接的情况下,我们只需要考虑如何编写传输软件。操作系统提供了名为“套接字”,套接字是网络传输传输用的软件设备。 这是对软件设备的解释: 在操作系统中&#…...
C++ Qt/VTK装配体组成联动连接杆
效果 关键代码 #include "View3D.h" #include "Axis.h"#include <vtkActor.h> #include <vtkAppendPolyData.h > #include <vtkAreaPicker.h> #include <vtkAxesActor.h> #include <vtkBox.h> #include <vtkCamera.h>…...
File文件查找
用的是递归调用, (递归死循环的结果是导致栈内存溢出错误) 一.代码 package org.example;import java.io.File;public class day03 {public static void main(String[] args) {//文件查找,在d:temp下查找改名.mp4sea…...
小程序 wxml2canvas开发文档
wxml: <view class"share__canvas share__canvas1"><view class"share__canvas1-text draw_canvas" data-type"text" data-text"这是一段无边距文字">这是一段无边距文字</view> </view> <canvas canvas-…...
SpringCloud微服务 【实用篇】| 认识微服务
目录 一:认识微服务 1. 微服务框架介绍 2. 服务架构演变 3. 微服务技术对比 4. SpringCloud 图书推荐:《巧用ChatGPT快速提高职场晋升力》 一:认识微服务 本课程学习于黑马,会通过分层次学习,分为三部分去讲解微…...
Csdn文章编写参考案例
这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…...
Jmeter性能测试:高并发分布式性能测试
一、为什么要进行分布式性能测试 当进行高并发性能测试的时候,受限于Jmeter工具本身和电脑硬件的原因,无法满足我们对大并发性能测试的要求。 基于这种场景下,我们就需要采用分布式的方式来实现我们高并发的性能测试要求。 二、分布式性能…...
2015年亚太杯APMCM数学建模大赛B题城市公共交通服务水平动态评价模型求解全过程文档及程序
2015年亚太杯APMCM数学建模大赛 B题 城市公共交通服务水平动态评价模型 原题再现 城市公共交通服务评价是城市公共交通系统建设和提高公共交通运营效率的重要组成部分。对于公交企业,管理和规划部门,传统公交车站、线路和换乘枢纽的规划数据只是基于主…...
CCF CSP认证历年题目自练 Day40
题目 试题编号: 201412-3 试题名称: 集合竞价 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 某股票交易所请你编写一个程序,根据开盘前客户提交的订单来确定某特定股票的开盘价和开盘成交量…...
闲聊一下写技术博客的一些感想
大家好,我是阿赵。 在我的163博客关闭之后,我就把一部分的博文移到了CSDN这边。不过实际上我有好几年都没有写过博客,所以这个博客的浏览量和粉丝数一直都不高。直到今年2023年的2月底开始,打算总结一下3DsMax的MaxScript的用…...
Qwen3.5-4B模型网络协议分析与故障模拟实践
Qwen3.5-4B模型网络协议分析与故障模拟实践 1. 网络工程师的新助手 最近遇到一个典型的运维场景:某电商平台大促期间,支付接口频繁出现连接超时。运维团队抓包分析后发现TCP重传率异常,但传统方法定位具体原因耗时长达3小时。这正是Qwen3.5…...
JS手撕:DOM操作 浏览器API高频场景详解
在前端开发中,我们经常会遇到一些重复且基础的需求——比如解析URL参数、给大量元素绑定点击事件、实现图片懒加载等。这些功能看似简单,但写得不够严谨就容易出现bug(比如中文参数乱码、事件绑定冗余、滚动加载卡顿)。 今天就整理…...
别再只会‘永不在此停止’了!实战绕过网站JS混淆与内存爆破的三种硬核方法
实战突破:三种硬核方法破解JS混淆与内存爆破 打开开发者工具的那一刻,页面突然卡死,控制台不断弹出debugger断点——这可能是每个爬虫工程师都经历过的噩梦。当简单的"永不在此停止"失效时,我们需要更高级的技术手段来应…...
【算法精解】CEC2021竞赛亚军算法-MadDE框架及代码实现(Matlab)
本文核心内容: MadDE算法主要框架及该算法创新点 Matlab代码实现(可免费获取,包括代码及原文献) 不少同学改进算法有时缺乏可落地思路,或从文献获得灵感却苦于写不出代码。为此,KAU 推出【算法精解】…...
Qwen3.5-2B辅助Python科学计算环境搭建:NumPy、Pandas与模型集成
Qwen3.5-2B辅助Python科学计算环境搭建:NumPy、Pandas与模型集成 1. 为什么需要Qwen3.5-2B与科学计算环境结合 在数据分析和机器学习工作中,我们经常面临一个痛点:数据处理和报告撰写是两个割裂的环节。传统的工作流是先使用NumPy、Pandas等…...
阿里达摩院神器实测:RexUniNLU开箱即用,智能客服理解力飙升
阿里达摩院神器实测:RexUniNLU开箱即用,智能客服理解力飙升 1. 开箱体验:零样本理解模型初探 1.1 一键部署的便捷性 RexUniNLU镜像的部署过程简单到令人惊讶。启动后访问7860端口,一个清爽的Web界面立即呈现在眼前。界面分为三…...
小白友好:Python3.8镜像5分钟部署教程,轻松管理多个项目环境
小白友好:Python3.8镜像5分钟部署教程,轻松管理多个项目环境 1. 为什么需要Python3.8镜像 Python作为当下最流行的编程语言之一,被广泛应用于Web开发、数据分析、人工智能等各个领域。但在实际开发中,我们经常会遇到这样的困扰&…...
OpenClaw移动办公:Qwen3-4B模型通过钉钉审批报销单
OpenClaw移动办公:Qwen3-4B模型通过钉钉审批报销单 1. 为什么选择OpenClaw处理报销流程? 去年夏天,我因为频繁出差积累了大量纸质发票,每次手工录入报销系统都要耗费整个下午。直到发现OpenClaw这个开源自动化框架,才…...
CentOS7下CDP7.1.1集群部署全攻略:从系统调优到MySQL配置避坑指南
CentOS7企业级CDP7.1.1集群深度部署指南:系统调优与MySQL高可用实战 开篇:企业级大数据平台的基石构建 当数据量突破TB级门槛时,一个经过深度优化的集群环境直接决定了数据分析的效率和稳定性。我曾亲历过某金融客户由于透明大页未关闭导致集…...
ADXL345嵌入式驱动开发:I²C/SPI寄存器配置与FreeRTOS中断集成
1. ADXL345加速度传感器库深度解析:面向嵌入式工程师的底层驱动开发指南ADXL345是Analog Devices公司推出的超低功耗、高分辨率(13位)、数字输出三轴加速度传感器,广泛应用于姿态检测、振动监测、跌倒报警、工业预测性维护及可穿戴…...
