以上代码中,[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() 调用时使用参数名:

以上实例输出结果:

下例能将关键字参数顺序不重要展示得更清楚:

以上实例输出结果:

最新文章

  1. 让游戏以高性能GPU(独立显卡)运行
  2. 事务操作(BEGIN/COMMIT/ROLLBACK/SAVE TRANSACTION)
  3. Entity Framework with NOLOCK
  4. Matlab绘图高级部分
  5. tcpdump tutorial
  6. .htaccess 设置
  7. devenv.exe - Assert Failure visual studio 2010
  8. 数学计数原理(Pólya):POJ 1286 Necklace of Beads
  9. Android Studio中常用设置与快捷键
  10. 《Effective C++ 》学习笔记——条款02
  11. 用js动态的改变img标签里面的src属性实现图片的循环切换
  12. Android Material Design--TextInputLayout
  13. 1 Spring Cloud Eureka服务治理(下)
  14. css3 绘制图形
  15. 带你了解SDL
  16. python 循环 while
  17. 10.8Xadmin url注册
  18. svn加锁设置
  19. 自动添加菜品,加入运行中遇到的异常,生成日志文件...<工作中场景...>
  20. [UE4]显示队友

热门文章

  1. Matlab学习笔记1—MATLAB基础知识
  2. redis学习(三)
  3. 交换机安全学习笔记 第九~十章 HSRP VRRP
  4. poj1284(欧拉函数+原根)
  5. 使用注解@CrossOrigin解决跨域问题
  6. [转帖]达梦数据库(DM6)和ORACLE 10g的异同点
  7. easyUI关键(常见)组件详解
  8. Python time strptime()方法 时间操作
  9. MySQL 主从同步架构中你不知道的“坑”
  10. 阿里云云效平台使用——Windows上使用阿里云云效(RDC)Git拉取代码