Python__26--函数调用的参数传递

简介: 函数调用的参数传递

1 函数调用的参数传递

形参(形式参数): 在函数定义的时候用到的参数没有具体值,只是一个占位的符号,成为形参; 实参(实际参数): 在调用函数的时候输入的值。

实际参数和形式参数的参数名可以不同

1.1 参数传递的内存分析

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/6c373c37b7bf4a5486f863e795fd6987~tplv-k3u1fbpfcp-zoom-1.image

  1. 不可变对象,在函数体内的修改不会影响实参的值
  2. 可变对象,在函数体内的修改会影响实参的值

1.2 函数的返回值

  • 如果函数没有返回值,return可以省略
  • 如果函数返回值是1个,直接返回类型
  • 如果返回值是多个,返回结果为元组

    def fun():
        return'[1,2,3]','hello','world'
    print(fun())
    # 输出:([1,2,3]','hello','world')

1.3 函数的参数定义

https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4f47e82c32ed4ab5af69a766ea3f926a~tplv-k3u1fbpfcp-zoom-1.image

1.3.1 形式参数、定义

  1. 默认值参数

    只有默认值不同的时候才需要将实参传递给形参

    # 只有默认值不同的时候才需要将实参传递给形参
    def fun(a,b=10):    # b称为默认值参数
        print(a,b)
    fun(100)
    fun(20,30)
    # 输出:
    # 100 20
    # 10 30
  2. 个数可变的位置参数,结果为一个元组,使用*

    def fun(*args): 
        print(args)
    fun(10)
    fun(10,20,30)
    # 输出:(10,)
    # 输出:(10,20,30)
  3. 个数可变的关键字参数,结果为一个字典,使用**

    def fun(**a):
        print(a)
    fun(a=10)
    fun(a=10,b=20,c=30)
    # 输出:{'a':10}
    # 输出:{'a':10,'b':20,'c':30}
  4. 关键字形参,使用*

    def fun(a,b,*,c,d):    # 从*之后的参数,在函数调用时,只能采用关键字参数传递
        print('a=',a)
        print('b=',b)
        print('c=',c)
    fun(10,20,c=30,d=40)
    # 输出:
    # a= 10
    # b= 20
    # c= 30
  5. 个数可变的位置参数与个数可变的关键字参数同时存在

    def fun1(*args1,**args2):
    def fun2(a,b,*,c,d,**args2):
    def fun3(a,b=20,*args1,**args2):

1.3.2 实际参数、调用

  1. 位置实参

    根据位置将实际参数传递给形式参数

    calc(10,20)

  2. 将序列中的每个元素都转换为位置实参

    def fun(a,b,c):      
        print('a=',a)
        print('b=',b)
        print('c=',c)
    fun(10,20,30)
    lst=[11,22,33]
    fun(*lst)
    # 输出:
    # a=10
    # b=20
    # c=30
    # a=11
    # b=22
    # c=33
  3. 关键字实参

    根据形参名称将实际参数传递给形式参数

    calc(b=10,a=20)

  4. 将字典中的每个键值对都转换成关键字实参

    def fun(a,b,c):
        print('a=',a)
        print('b=',b)
        print('c=',c)
    fun(10,20,30)
    dic={'a':111,'b':222,'c':333}
    fun(**dic)
    calc(b=10,a=20)
    # a=10
    # b=20
    # c=30
    # a=111
    # b=222
    # c=333

1.4 变量的作用域

一般来说,在函数体外定义的变量叫全局变量,而在函数体内定义的变量叫做局部变量,C语言中也称为内部变量,而局部变量只能在这个函数内部使用,全局变量则是可以作用到整个文件(模块)的范围。

1.4.1 局部变量

函数体内进行定义的变量,无法在函数体外使用

def fun():
    global age
    age=20    
    print(age)
fun()
print(age)
# 使用global定义全局变量,必须先调用函数,该变量才能全局使用
# 输出:
# 20
# 20

1.4.2 全局变量

函数内外均可使用的变量

相关文章
|
3月前
|
存储 Python
解释Python中的函数参数传递机制是什么样的?
解释Python中的函数参数传递机制是什么样的?
|
8月前
|
C++ Python
Python函数参数传递:传值还是传引用
Python函数参数传递:传值还是传引用
40 0
|
10月前
|
前端开发 数据可视化 JavaScript
Python Flask Echarts数据可视化图表实战晋级笔记(4)ajax参数传递互动
Python Flask Echarts数据可视化图表实战晋级笔记(4)ajax参数传递互动
76 0
|
5月前
|
存储 Python
PYTHON知识点学习-函数调用中return&print
PYTHON知识点学习-函数调用中return&print
43 0
|
7月前
|
Python
python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法
python之函数的参数传递(引用传递和值传递),查看变量的内存地址的方法
|
9月前
|
Python
【100天精通python】Day10:python 基础_函数的创建和调用,参数传递,返回值,变量作用域以及匿名函数
【100天精通python】Day10:python 基础_函数的创建和调用,参数传递,返回值,变量作用域以及匿名函数
87 0
|
10月前
|
开发框架 JSON 数据可视化
Python Flask Echarts数据可视化图表实战晋级笔记(1)HTML页面渲染与参数传递
Python Flask Echarts数据可视化图表实战晋级笔记(1)HTML页面渲染与参数传递
152 1
|
10月前
|
Python
深入理解 Python 中的函数参数传递机制
在 Python 中,对于函数的参数传递,有两种主要的方式:传值和传引用。事实上,Python 的参数传递是一种“传对象引用”的方式。接下来的文章我们将详细介绍 Python 的函数参数传递机制,这对理解 Python 编程语言的底层实现以及优化你的代码都非常有帮助。
|
11月前
|
Python
19.从入门到精通:Python函数 定义一个函数 函数调用 参数传递
19.从入门到精通:Python函数 定义一个函数 函数调用 参数传递
|
11月前
|
Python
Python如何通过主函数调用类
Python如何通过主函数调用类
77 0