学习笔记//20230402 edit

1.传参类型

  • 值传递
  • 引用传递

就像C++的参数传递:

  • 值传递时值把实参的值传递给function, function 内对形参的修改不会影响实参;
  • 引用传递时,实参实际上传入了其地址。function内对形参的修改直接影响实参;

但是Python 跟C++ 还不一样。python 一切皆对象(object).变量并不存储value,只会指向object(即一个指针);

# var a 指向 list object:[1,2,3]
a=[1,2,3]
# var a 指向 string object:"aksoam"
a="aksoam"

2. python 的两类对象

python 中的对象可以分成两类: 可变对象 and 不可变对象 。string 、nummber 、turple 这些就是不可变对象;dict 、 list 等为可变对象。

  • 传不可变对象进function 时,效果等效于值传递;
  • 传可变对象进function 时,效果等效于引用传递;

对象类型判断方法:

# Number object
>>> a=12
>>> id(a)
140717063361496
>>> a=a+12
>>> id(a)
140717063361880
# String object
a='12'
>>> id(a)
2290396292528
>>> a=a+'456'
>>> id(a)
2290396290416

可以看到,修改 var a 后,a的地址发生变化;即为不可变对象;

>>> a=[1,2,3]
>>> id(a)
2290398828160
>>> a.append(16)
>>> a
[1, 2, 3, 16]
>>> id(a)
2290398828160

修改 var a 后,a的地址没变,就是可变对象;

【Python】函数传参的方式的更多相关文章

  1. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  2. 悉数 Python 函数传参的语法糖

    TIOBE排行榜是程序开发语言的流行使用程度的有效指标,对世界范围内开发语言的走势具有重要参考意义.随着数据挖掘.机器学习和人工智能相关概念的风行,Python一举收获2018年年度语言,这也是Pyt ...

  3. python函数传参和返回值注意事项

    函数传参 空参数 定义函数时括号里面没有形参,调用时不用传参. def func(): print('null para.') # 调用 func() 位置传参 规定形参的数量,调用时必须传递相同数量 ...

  4. python函数传参是传值还是指针

    python中,往函数传参传的是指针,并非传值. 代码说话 如果改变函数参数的值,我们来看看改变: 但是如果是传的列表这种可变数据类型呢 传列表并没有发送改变,仍然指向的是原来的地址. 这是因为传的数 ...

  5. python函数 传参的多种方式 解读

    1.函数的参数在哪里定义 在python中定义函数的时候,函数名后面的括号里就是用来定义参数的,如果有多个参数的话,那么参数之间直接用逗号, 隔开 案列: 2.带参数的函数调用: 函数定义了参数,那么 ...

  6. python函数--传参

    一.位置参数 二.关键字参数 三.默认参数 四.任意数量的位置参数: 1. *x 2. 传入的多个参数,最终合并成一个元组 3. 之后的参数必须用关键字参数 五.任意数量的关键字参数 1. **x 2 ...

  7. 『Python × C++』函数传参机制学习以及对比

    一.Python函数传参 在python中,函数传参实际上传入的是变量的别名,由于python内在的变量机制(名称和变量值相互独立),只要传入的变量不可变(tuple中的元素也要是不可变的才行),那么 ...

  8. python中给函数传参是传值还是传引用

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

  9. 指针数组的初始化和遍历,并且通过for循环方式、函数传参方式进行指针数组的遍历

    /************************************************************************* > File Name: message.c ...

  10. C#篇(三)——函数传参之引用类型和值类型

    首先应该认清楚在C#中只有两种类型: 1.引用类型(任何称为"类"的类型) 2.值类型(结构或枚举) 先来认识一下引用类型和值类型的区别: 函数传参之引用类型: 1.先来一个简单的 ...

随机推荐

  1. CW信号的正交解调

    1.CW信号   CW可以叫做等幅电报,它通过电键控制发信机产生短信号"."(点)和长信号"--"(划),并利用其不同组合表示不同的字符,从而组成单词和句子. ...

  2. Qt音视频开发39-海康sdk回调拿到数据GPU绘制的实现

    一.前言 采用海康的sdk做开发,最简单最容易的方式就是传入句柄(windows和linux都支持/很多人以为只有windows才支持)即可,这种方式不用自己处理绘制,全部交给了sdk去处理,所以cp ...

  3. 哔哩哔哩从0到1自研智能客服IM系统的技术实践之路

    本文由B端技术中心分享,原题"从0到1:哔哩哔哩智能客服系统的设计与实现",本文有修订和改动. 1.引言 本文将要分享的是哔哩哔哩从0到1自研智能客服IM系统的技术实践过程,包括整 ...

  4. CDS标准视图:优先级描述数据 I_GenericPriorityTextData

    视图名称:优先级描述数据 I_GenericPriorityTextData 视图类型:基础视图 视图代码: 点击查看代码 @AbapCatalog.sqlViewName: 'IGENPRIOTEX ...

  5. Springboot 整合 xxl-job

    前言 很久很久以前写过好几篇关于定时任务的使用系列的文章: 这一篇是最简单的,就是单纯跑跑定时任务,那你看这篇就行,没必要用xxljob(因为xxljob要跑服务端,然后自己服务作为客户端接入): 文 ...

  6. 一致性hash和普通hash和hash槽

    普通hash Hash函数:一般翻译做散列.杂凑,或音译为哈希,是把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值.碰撞(冲突):如果两个关键字通过 ...

  7. 开源搜索引擎Lucene、Solr、Sphinx等优劣势比较

    以下重点介绍最常用的开源搜素引擎: 1.Lucene 2.Solr 3.Elasticsearch 4.Sphinx 5.各自的特点和优劣势选型比较 开源搜索引擎分类 主要分为两类:Java开发和C+ ...

  8. w3cschool-Lua编程入门

    https://www.w3cschool.cn/nhycto/ https://www.w3cschool.cn/cf_web/cf_web-dvxc32qu.html 1. Lua 基础知识 (1 ...

  9. 无网环境Docker Rpm离线安装

    总体思路:找一台可以联网的linux,下载docker的RPM依赖包而不进行安装(yum localinstall),将所有依赖的rpm环境打包好,再在无网环境中解压逐一安装(rpm: --force ...

  10. 数据结构 Trick 之:子树 k 距离内问题

    能够解决的题目类型 这个 Trick 能解决的题目形如: 给定 \(n\) 个节点的有根无边权有点权树. 有 \(m\) 个询问,每个询问形如点 \(x\) 的子树内与 \(x\) 深度差不超过 \( ...