Python 面试:可变类型和不可变类型作为函数参数,关键字参数

1. 可变类型作为参数

可变对象: list/set/dict

参数会指向可变对象的副本的地址,每次修改的是同一个对象。

def flist(l):l.append(0)print(l)ll = []
flist(ll)
flist(ll)

输出为:
[0]
[0, 0]

# 注意:l只是ll的一个副本,修改l不会改变ll的值
def clear_list(l):l = []ll = [1,2,3]
clear_list(ll)
print(ll)

输出为:
[1, 2, 3]

注意:参数每次指向同一个对象的地址。

def flist(l=[1]):l.append(1)print(l)flist()
flist()

输出为:
[1, 1]
[1, 1, 1]

2. 不可变类型作为参数

不可变对象:bool/int/float/tuple/str/frozenset

每次执行函数,会建立一个不可变对象的副本,因此参数每次指向一个新的不可变对象的地址。

def fstr(s):s += 'a'print(s)s = "hehe"
fstr(s)
fstr(s)

输出为:
hehea
hehea

3. 关键字参数

*args被打包成tuple
**kwargs被打包成dict

def print_multiple_args(*args):print(type(args), args)for idx, val in enumerate(args):print(idx, val)print_multiple_args('a', 'b', 'c')

另一种方式为:

def print_multiple_args(*args):print(type(args), args)for idx, val in enumerate(args):print(idx, val)print_multiple_args(*['a', 'b', 'c'])

输出为:
<class ‘tuple’> (‘a’, ‘b’, ‘c’)
0 a
1 b
2 c

def print_kwargs(**kwargs):print(type(kwargs), kwargs)for k, v in kwargs.items():print('{}: {}'.format(k, v))print_kwargs(a=1, b=2, c=3, d=4)

另一种方式为:

def print_kwargs(**kwargs):print(type(kwargs), kwargs)for k, v in kwargs.items():print('{}: {}'.format(k, v))print_kwargs(**dict(a=1, b=2, c=3, d=4))

输出为:
<class ‘dict’> {‘a’: 1, ‘b’: 2, ‘c’: 3, ‘d’: 4}
a: 1
b: 2
c: 3
d: 4

def print_all(a, *args, **kwargs):print(a)if args:print(args)if kwargs:print(kwargs)print_all('hello', 'world', name='Jack')

输出为:
hello
(‘world’,)
{‘name’: ‘Jack’}

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

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

相关文章

checkstyle检查Java编程样式:识别应该被定义为final的类

介绍 总体说明 checkstyle可以使用FinalClass检查应该被定为final的类。如果违反了&#xff0c;就会报违反项&#xff1a; https://checkstyle.sourceforge.io/checks/design/finalclass.html checkstyle规则集文件对FinalClass模块的配置&#xff1a; 哪些类可以被定义fi…

React笔记(二)JSX

一、JSX JSX是javascript XML的简写&#xff0c;实际上是javascript的扩展&#xff0c;既有javascript的语法结构&#xff0c;又有XML的结构 1、JSX的规则要求 jsx必须要有一个根节点 如果不想产生无用的根标签&#xff0c;但是还要遵守JSX的语法的要求&#xff0c;可以使用…

Docker harbor 私有仓库的部署和管理

目录 一、什么是Harbor 二、Harbor的特性 三、Harbor的构成 四、部署配置Docker Harbor 1. 首先需要安装 Docker-Compose 服务 2.部署 Harbor 服务 3.使用harbor仓库 &#xff08;1&#xff09;项目管理 &#xff08;2&#xff09;用户管理 一、什么是Harbor Harbor …

飞桨中的李宏毅课程中的第一个项目——PM2.5的预测

所谓的激活函数&#xff0c;就是李宏毅老师讲到的sigmoid函数 和 hard sigmoid函数 &#xff0c;ReLU函数那些 现在一点点慢慢探索&#xff0c;会成为日后想都做不到的经历&#xff0c;当你啥也不会的时候&#xff0c;才是慢慢享受探索的过程。 有一说一&#xff0c;用chatGP…

安卓版yolo-fastest

安卓版本yolofastest效果测试 安卓配置OPENCV4ANDROID&#xff0c;见我的博客一篇文章opencv4dandroid配置 这个不需要使用JNI&#xff0c;十分简单的配置 说真的&#xff0c;其实只调用OPENCV的函数&#xff0c;自己写的代码不多&#xff0c;使用OPENCV4ANDROID和JNI的时间差…

el-select码值枚举

当码值的数据是自己写的时候&#xff1a; 例如&#xff1a;isOrNo&#xff1a;[{label:是,value:1},{label:否&#xff0c;value&#xff1a;‘2’}]&#xff0c; 当传给后端值时下拉选择是&#xff0c;值为1&#xff0c;我们当前拿到的只是值为value&#xff1a;1&#xff0…

项目经理常用工具01

主要工具 表达工具—SCRTV方法 情境 Scene&#xff1a;明确问题&#xff1a;是什么&#xff1f;冲突 Confilict&#xff1a;提出疑问&#xff1a;怎么了?原因 Reason&#xff1a;分析原因&#xff1a;为什么&#xff1f;策略 Tactics&#xff1a;进行决策&#xff1a;怎么办…

数据建模在MES管理系统中的作用,以及合理设计

随着信息化的快速发展&#xff0c;MES系统解决方案在企业中的应用越来越广泛。作为实现生产过程数字化的重要组成部分&#xff0c;MES系统扮演着监控、控制和优化生产运营的关键角色。而在MES系统中&#xff0c;数据建模是实现高效生产管理的重要环节之一。本文将探讨数据建模在…

自定义node-red节点中,如何编写节点的配置信息弹窗

前言 最近有读者通过博客向我咨询,在自定义node-red节点时,如何编写该节点的配置页面,就是我们通常见到的,双节节点打开的信息弹窗。如下图: 上面两张图,展示了inject节点与mqtt in 节点的配置弹窗。 在弹窗中,除了上面的删除,取消,完成,和下面的失效按钮。 中间…

Docker容器中的Postgresql备份脚本异常解决办法

本文基于K8S中Docker容器对postgres数据库进行备份的操作&#xff0c;编写好脚本后&#xff0c;手动执行脚本是正常的&#xff0c;但是crontab定时实行却报错&#xff0c;报错信息为kubectl command not found&#xff0c;提示没有找到kubectl指令。 本文主要介绍对该报错信息…

二级MySQL(二)——编程语言,函数

SQL语言又称为【结构化查询语言】 请使用FLOOR&#xff08;x&#xff09;函数求小于或等于5.6的最大整数 请使用TRUNCATE&#xff08;x&#xff0c;y&#xff09;函数将数字1.98752895保留到小数点后4位 请使用UPPER&#xff08;&#xff09;函数将字符串‘welcome’转化为大写…

C语言的发展及特点

1. C语言的发展历程 C语言作为计算机编程领域的重要里程碑&#xff0c;其发展历程承载着无数开发者的智慧和创新。C语言诞生于20世纪70年代初&#xff0c;由计算机科学家Dennis Ritchie在贝尔实验室首次推出。当时&#xff0c;Ritchie的目标是为Unix操作系统开发一门能够更方便…

Sass基础

Sass基础 简介 Sass是一种stylesheet语言&#xff0c;可以被编译成CSS。Sass允许你使用诸如variabels&#xff0c;nested rules&#xff0c;mixins&#xff0c;functions等等语法&#xff0c;这些都将在本篇的接下来进行讲解。 因为之前一直学的后端&#xff0c;前端只是因为…

echarts,highcharts图表双Y轴0刻度对齐的方案

Y轴的零刻度对齐的方案&#xff1a; 方案一&#xff1a; tickPositioner: function(){var maxDeviation Math.ceil(Math. max(Math.abs(this.dataMax),Math.abs(this.dataMin))); var halfMaxDeviation Math.ceil(maxDeviation / 2); return [-maxDeviation,-halfMaxDeviati…

javaweb、spring、springmvc和springboot有什么区别,都是做什么用的?

JavaWeb是一种基于Java技术的Web开发模式&#xff0c;用于构建动态的、可交互的Web应用程序。它是一种使用Java语言开发Web应用的技术堆栈&#xff0c;包括Java Servlet、JavaServer Pages&#xff08;JSP&#xff09;、JavaServer Faces&#xff08;JSF&#xff09;等。JavaWe…

Kubernetes最新版v1.27.4安装和集群搭建保姆级教程

1. Kubernetes 1.27.4 发布 一&#xff1a;k8s1.27.x 的概述 太平洋时间 2023 年 4 月 11 日&#xff0c;Kubernetes 1.27 正式发布。此版本距离上版本发布时隔 4 个月&#xff0c;是 2023 年的第一个版本。 新版本中 release 团队跟踪了 60 个 enhancements&#xff0c;比之前…

大数据平台安全主要是指什么安全?如何保障?

大数据时代已经来临&#xff0c;各种数据充斥着我们的生活与工作。随着数据的多样性以及复杂性以及大量性&#xff0c;大数据平台诞生了。但对于大数据平台大家都不是很了解&#xff0c;有人问大数据平台安全主要是指什么安全&#xff1f;如何保障&#xff1f; 大数据平台安全…

linux安装jmeter

linux安装jmeter 部署java1.8 下载jmeter安装包&#xff1a;官网、网盘5.6.2版本 # 解压 rootiZbp1at7nu2rpq4xn4zaf1Z:/opt/jmeter# sudo tar -xzf apache-jmeter-5.6.2.tgz # 加入环境变量 rootiZbp1at7nu2rpq4xn4zaf1Z:/opt/jmeter/apache-jmeter-5.6.2# export JMETER/op…

睿趣科技:抖音开网店卖玩具怎么样

近年来&#xff0c;随着社交媒体平台的飞速发展&#xff0c;抖音作为一款短视频分享应用也迅速崭露头角。而在这个充满创业机遇的时代背景下&#xff0c;许多人开始探索在抖音平台上开设网店&#xff0c;尤其是卖玩具类商品&#xff0c;那么抖音开网店卖玩具究竟怎么样呢? 首先…

如何清空小程序会员卡的电子票

​电子票不仅方便了用户的购票和消费&#xff0c;还提升了用户的购物体验和忠诚度。然而&#xff0c;在一些特殊情况下&#xff0c;可能需要手动清空会员的电子票。那么&#xff0c;下面我们就来探讨一下在小程序中如何手动清空会员的电子票。 1. 找到指定的会员卡。在管理员后…