Python 函数Ⅱ
以上代码中,[1,2,3] 是 List 类型,"Runoob" 是 String 类型,而变量 a 是没有类型,她仅仅是一个对象的引用(一个指针),可以是 List 类型对象,也可以指向 String 类型对象。
可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新https://www.xuanhe.net/生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
python 传不可变对象实例
实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。
传可变对象实例
实例中传入函数的和在末尾添加新内容的对象用的是同一个引用,故输出结果如下:
参数
以下是调用函数时可使用的正式参数类型:
- 必备参数
- 关键字参数
- 默认参数
- 不定长参数
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
调用printme()函数,你必须传入一个参数,不然会出现语法错误:
以上实例输出结果:
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。
以下实例在函数 printme() 调用时使用参数名:
以上实例输出结果:
下例能将关键字参数顺序不重要展示得更清楚:
以上实例输出结果:
最新文章
- 让游戏以高性能GPU(独立显卡)运行
- 事务操作(BEGIN/COMMIT/ROLLBACK/SAVE TRANSACTION)
- Entity Framework with NOLOCK
- Matlab绘图高级部分
- tcpdump tutorial
- .htaccess 设置
- devenv.exe - Assert Failure visual studio 2010
- 数学计数原理(Pólya):POJ 1286 Necklace of Beads
- Android Studio中常用设置与快捷键
- 《Effective C++ 》学习笔记——条款02
- 用js动态的改变img标签里面的src属性实现图片的循环切换
- Android Material Design--TextInputLayout
- 1 Spring Cloud Eureka服务治理(下)
- css3 绘制图形
- 带你了解SDL
- python 循环 while
- 10.8Xadmin url注册
- svn加锁设置
- 自动添加菜品,加入运行中遇到的异常,生成日志文件...<;工作中场景...>;
- [UE4]显示队友
热门文章
- Matlab学习笔记1—MATLAB基础知识
- redis学习(三)
- 交换机安全学习笔记 第九~十章 HSRP VRRP
- poj1284(欧拉函数+原根)
- 使用注解@CrossOrigin解决跨域问题
- [转帖]达梦数据库(DM6)和ORACLE 10g的异同点
- easyUI关键(常见)组件详解
- Python time strptime()方法 时间操作
- MySQL 主从同步架构中你不知道的“坑”
- 阿里云云效平台使用——Windows上使用阿里云云效(RDC)Git拉取代码