Python按值传递参数和按引用传递参数:

按值传递参数:

使用一个变量的值(数字,字符串),放到实参的位置上

注:传递过去的是变量的副本,无论副本在函数中怎么变,变量的值都不变

传递常量:

  1. # 传递常量
  2. # 定义一个函数,输出 欢迎,接收到的参数 name
  3. def huanying(name):
  4. print("欢迎",name)
  5. huanying("小明")
  6. # 欢迎 小明
  7. # 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width
  8. def area(height,width):
  9. return height * width
  10. mianji = area(5,4)
  11. print(mianji)
  12. #

传递变量:

  1. # 传递变量
  2. # 定义一个函数,输出 欢迎,接收到的参数 name
  3. def huanying(name):
  4. print("欢迎",name)
  5. strs_name = "小明"
  6. huanying(strs_name)
  7. # 欢迎 小明
  8. # 定义一个求长方形面积的函数,要求具有返回值且参数为 height 和 width
  9. def area(height,width):
  10. return height * width
  11. height = 5
  12. width = 4
  13. mianji = area(height,width)
  14. print(mianji)
  15. #

按引用传递:

输出 列表、元组 和 集合所有元素的总和

  1. # 按引用传递
  2. lst = [1,2,3,4]
  3. tuple_1 = (4,5,7)
  4. se = {9,6,5,8}
  5. def add(args):
  6. '''将 args 中的元素总和输出'''
  7. print(sum(args))
  8. add(lst)
  9. #
  10. add(tuple_1)
  11. #
  12. add(se)
  13. #
  14. # 输出程序的注释
  15. print(add.__doc__)
  16. # 将 args 中的元素总和输出

使用函数,将参数引用传递输出参数中的奇数

  1. # 按引用传递
  2. lst = [1,2,3,4]
  3. tuple_1 = (4,5,7)
  4. def jishu(args):
  5. '''将 args 中的奇数输出'''
  6. for i in range(len(args)):
  7. if args[i] % 2 == 1:
  8. print(args[i], end = " ")
  9. print()
  10. jishu(lst)
  11. # 1 3
  12. jishu(tuple_1)
  13. # 5 7
  14. # 输出程序的注释
  15. print(jishu.__doc__)
  16. # 将 args 中的奇数输出

 如果参数发生修改

  1.原参数如果为可变类型(列表、集合、字典)则也跟着修改

  2.原参数如果为不可变类型(数字、字符串、元组)则不发生改变

示例:

列表在函数中调用方法,列表本身发生改变

  1. def add_elem(args,string):
  2. '''将 lst_num 添加到 args 中'''
  3. args.append(string)
  4. # args += string
  5. # args.extend(string)
  6. # args.insert(len(args),string)
  7. return args
  8. lst = [1,2,3,4]
  9. string = "ABC"
  10. print(add_elem(lst,string))
  11. # [1, 2, 3, 4, 'A', 'B', 'C']
  12. print(lst)
  13. # [1, 2, 3, 4, 'ABC']

在函数中,如果列表作为实参,形参发生修改时,列表值发生改变

  1. def add_elem(args,string):
  2. '''将 lst_num 添加到 args 中'''
  3. args[len(args)-1] = string
  4. return args
  5. lst = [1,2,3,4]
  6. string = "ABC"
  7. print(add_elem(lst,string))
  8. # [1, 2, 3, 'ABC']
  9. print(lst)
  10. # [1, 2, 3, 'ABC']

2020-02-11

Python按值传递参数和按引用传递参数的更多相关文章

  1. Java中只有按值传递,没有按引用传递!(两种参数情况下都是值传递)

    今天,我在一本面试书上看到了关于java的一个参数传递的问题: 写道 java中对象作为参数传递给一个方法,到底是值传递,还是引用传递? 我毫无疑问的回答:“引用传递!”,并且还觉得自己对java的这 ...

  2. Python解析命令行读取参数 -- argparse模块

    在多个文件或者不同语言协同的项目中,python脚本经常需要从命令行直接读取参数.万能的python就自带了argprase包使得这一工作变得简单而规范.PS:optparse包是类似的功能,只不过写 ...

  3. Python——函数的命名关键字参数

    命名关键字参数 对于关键字参数,函数的调用者可以传入任意不受限制的关键字参数.至于到底传入了哪些,就需要在函数内部通过kw检查. 仍以person()函数为例,我们希望检查是否有city和job参数: ...

  4. Java可变参数 & Python可变参数 & Scala可变参数

    Java 可变参数的特点: (1).只能出现在参数列表的最后: (2)....位于变量类型和变量名之间,前后有无空格都可以: (3).调用可变参数的方法时,编译器为该可变参数隐含创建一个数组,在方法体 ...

  5. Python进阶04 函数的参数对应

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我们已经接触过函数(function)的参数(arguments)传递.当时我们根 ...

  6. python函数 位置参数,关键字参数,可变参数优先级

    def fun(arg,args=1,*arg,**keywords): python 一共有这四类参数,第一类最常见,不用多说,第二类,关键字参数,python能通过关键字找到参数,python函数 ...

  7. python函数基础以及函数参数简解

    python中函数分为函数.内置函数Python所有的内置函数 自定义函数要使用def语句,依次写出函数名.括号.括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回. ...

  8. python中的函数的参数和可变参数

    最近在搞python的过程中需要用到给函数传可变参数..所以去网上找前人的帖子学习了一下 为了尊重原作者,这里附上链接:http://www.cnblogs.com/tqsummer/archive/ ...

  9. Python学习6.1_函数参数及参数传递

    大多数编程语言都绕不开一个名词,那就是--函数(function).而函数很重要的部分则是参数(arguments)的使用.Python的参数传递总体来说是根据位置,传递对应的参数.阐述如下: 1.位 ...

随机推荐

  1. Python数据结构-树与树的遍历

    树:是一种抽象的数据类型 树的作用:用来模拟树状结构性质的数据集合 树的特点: 每个节点有零个或者多个节点 没有父节点的节点,叫做根节点 每一个根节点有且只有一个父节点 除了根节点外,每个节点可以分成 ...

  2. Python3笔记006 - 2.3 变量

    第2章 python语言基础 python语法特点 保留字与标识符 变量 数据类型 运算符 输入和输出 2.3 变量 在python中,不需要先声明变量类型,直接赋值即可创建各种类型的变量. 1.定义 ...

  3. Windows系统VSCode、VBox搭建C/C++开发环境

    好几年没有写过C/C++代码,基本上都忘光了,之前是使用VC++6.0写代码的,最近用VSCode成功搭建了C/C++开发环境,这里记录一下搭建过程. 1. 安装VSCode 在官网https://c ...

  4. css/html 空格,html空格符的显示、标示方式【html空格代码】

    在html里面空格的话,你直接敲打出来的空格是不可以的,下面将通过html和css中设置显示空格的实现总结: Html中空格 符号 编号 描述      不断行的空白(1个字符宽度), 不换行空格 全 ...

  5. Java贪吃蛇小游戏

    贪吃蛇 思路 首先构思游戏布局,计算合理的坐标系. 绘制静态数据(广告.初始小蛇.提示信息.棋盘) 添加键盘监听事件,改变游戏状态以及小蛇运动方向 添加定时器,让小蛇在一段时间内移动一定的距离 随机产 ...

  6. HDU 4143 A Simple Problem 题解

    题目 For a given positive integer n, please find the saallest positive integer x that we can find an i ...

  7. Kail安装VMtools

    0x00 前言 之前用吾爱的xp虚拟机,总是装不上vmtools,真是难受.每次跨机器粘贴复制都一件极其痛苦的事,而且虚拟机还不能直接浏览硬盘上的文件.虽说安全性保证了,但是这是真的痛苦.这两天开始用 ...

  8. 【Nginx】如何获取客户端真实IP、域名、协议、端口?看这一篇就够了!

    写在前面 Nginx最为最受欢迎的反向代理和负载均衡服务器,被广泛的应用于互联网项目中.这不仅仅是因为Nginx本身比较轻量,更多的是得益于Nginx的高性能特性,以及支持插件化开发,为此,很多开发者 ...

  9. 重学c#系列——c#运行原理(二)

    前言 c# 是怎么运行的呢?是否和java一样运行在像jvm的虚拟机上呢?其实差不多,但是更广泛. c# 运行环境不仅c#可以运行,符合.net framework 开发规范的都可以运行. c# 程序 ...

  10. 快速突击 Spring Cloud Gateway

    认识 Spring Cloud Gateway Spring Cloud Gateway 是一款基于 Spring 5,Project Reactor 以及 Spring Boot 2 构建的 API ...