精华内容
下载资源
问答
  • 函数传参

    2018-09-18 08:10:00
    函数传参 传递可变数据类型参数 传递不可变类型参数 函数传参 传递可变数据类型参数 a=[1,2,3] #内存中会根据给定的值动态创建一块内存对象给数据类型为列表的值[1,2,3]的对象,并创建一个指向该对象的...

    函数传参

    传递可变数据类型参数

    a=[1,2,3]           #内存中会根据给定的值动态创建一块内存对象给数据类型为列表的值[1,2,3]的对象,并创建一个指向该对象的内存地址(变量a)
    def func(a):        #将变量a作为函数的参数
        print(id(a))     #打印变量a的内存地址
        a[1]=4          #修改变量a的内存地址对应的内存空间中存放的对象(列表的下标为1的元素)
        print(id(a))     #重新打印对象a的内存地址
        return a        #返回变量a的值
    result=func(a)      #将函数的执行结果赋值给result
    print(result)       #打印函数的返回值


    传递不可变类型参数

    a=1                 #内存中会根据给定的值动态创建一块内存对象给数据类型为整数的数值1的对象,同时创建一个指向该内存对象的内存地址(变量a)
    def func(a):         #定义函数func,把变量a作为函数的参数,这里的a是已经赋值过的数值1的内存地址引用
        id(a)           #查看变量a的内存地址(这里显示的肯定是数值为1的地址值)
        a=2             #由于数值是不可变的类型参数,无法从内存空间中对对象为1的数值进行修改,所以会另外创建一块内存空间给数据类型为整数2的内存对象,此时a的内存地址变量数值为2的内存地址了
        id(a)           #这里显示的为内存对象2的内存地址了
        return a        #返回变量a的值
    result=func(a)      #将函数的返回值(这里为重新创建的a变量的指向数值2的内存地址)赋值给变量result
    print(a)            #打印变量a的值(这里是函数内给a重新赋值2前的a变量的指向数值1的内存地址
    
    #这个是函数传参的机制,会通过区分数据类型是否为可变的前提下判断参数的值是可以修改还是重新创建,函数内部继续创建a变量,和外部的a的值不一样也说明了函数的封装性,把内部的a和外部的a隔离了,这两个a已经不是同一个了

    转载于:https://www.cnblogs.com/endmoon/p/9666920.html

    展开全文
  • 近日在使用golang的过程中发现golang的函数传参和python的稍有区别,现总结记录如下: golang函数传参 1. 当传数组时 会将整个数组全都复制后进行值传递(函数修改数组后并不会影响数组的值),当数组比较大时,每次...

    近日在使用golang的过程中发现golang的函数传参和python的稍有区别,现总结记录如下:

    golang函数传参

    1. 当传数组时

    会将整个数组全都复制后进行值传递(函数修改数组后并不会影响数组的值),当数组比较大时,每次传递数组都很占用资源,所以一般不用数组传参

    2. 当传切片时

    此时是引用传递(函数修改切片后,外面的切片也相应被改变),但由于函数只是进行引用传递,并不会复制一遍值,所以一般都使用切片传值

    python函数传参

    1. python函数传参时,传递的是这个对象,变量就是关于对象的引用;
    2. 所以当参数为可变对象时,此时是引用传递,函数改变参数值时外面的值也会相应改变;
    3. 当参数为不可变对象时,此时是值传递,函数改变参数值时外面的值不会相应改变;

    最后:
    以上均为个人学习中总结,转载请注明出处;如有什么不对欠缺的地方,欢迎各位评论交流,共同学习

    展开全文
  • 函数 传参

    2018-02-02 13:49:42
    (实参交给形参的方式)传递方式: 位置传参, 序列传参, 关键字传参,字典关键字传参位置传参 实参和形参通过位置 关系进行传递和匹配, 实参的个数必须与形参的个数相同 序列传参: 序列传参是指在函数调用过程中...

    函数的参数传递:
    参数传递 (实参交给形参的方式)
    传递方式:
       位置传参, 序列传参, 关键字传参,字典关键字传参
    位置传参
      
       实参和形参通过位置 关系进行传递和匹配, 实参的个数必须与形参的个数相同 

    序列传参:
      序列传参是指在函数调用过程中,用*将序列拆解后依位置顺序进行传递的传参方式



    关键字传参:

    实参和形参按名称进行匹配,可以不按位置进行匹配
     

    字典关键字传参:
      是指实参为字典,将字典有**拆解后进行关键字传参



      
    传参说明:
      1. 字典的键名必须为字符串
      2. 字典的键名要在形参中存在
      3. 字典的键名和形参名要一致


    函数的组合传参
      以上传参方式在能确定形参能唯一匹配到相应实参的情况下可以任意组合





    可变/不可变类型的实参的参数传递的区别
      可变类型的实参,可以传递和返回函数的结果


    示例:
      L = []


      def fn(x):
          x.append(10)
      
      fn(L)
      print(L)  # [10]


    传参说明:
      不可变数据作为函数参数传入时,函数内部不会改变变量原数据,是安全的
      可变类型的数据作为参数传入函数时,函数内部可以改变原数据,通常用来返回更多函数的执行结果


    ------------- 以下讲函数的形参------------
    函数的缺省参数:
    语法:
      def 函数名(形参名1=默认参数1, 形参名2=默认参数2,...):
          语句


    说明:
      缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数都必须有缺省参数
         例:  def test_fn(a, b=10, c): ... 是错的
      缺省参数可以有0个,1个或多个,甚至全部都有缺省参数







    函数形式参数的定义方式(四种):
      位置形参
      星号元组形参
      命名关键字形参
      双星号字典形参


    位置形参
      语法:
        def 函数名(形参名1, 形参名2, ....):
            语句
      def mymax(a, b, c): pass


    星号元组形参:
      语法:
        def 函数名(*元组形参名):
            语句
      作用:
        收集多余的位置传参
     






    命名关键字形参
    语法:
      def 函数名(*, 命名关键字形参):
          语句
      或
      def 函数名(*args, 命名关键字形参):
          语句


    作用:
      所有的命名关键字形参必须用关键字传参或字典关键字传参


    双星号字典形参:
    语法:
      def 函数名(**字典形参名):
          语句


    作用:
      收集多余的关键字传参

    函数的形参说明:
      位置形参,*号元组形参,命名关键字形参,**字典形参,缺省参数可以混合使用


    函数形参自左至右的顺序为:
       1. 位置形参
       2. 星号元组形参
       3. 命名关键字形参
       4. 双星号字典形参
    示例:
      def fn(a, b, *args, c, **kwargs):
          pass
      fn(100, 200, 300, 400, c="C", d="D", e="E")


    函数的不定长参数:
      有两种:
         星号元组形参
         双星号字典形参
    示例:
      # 可以接收任意的位置传参和关键字传参的函数
      def fn(*args, **kwargs):
          pass



    展开全文
  • 在进入Python函数传参是传值还是传引用的问题前,先介绍一下下面的4个基本概念:1、形参;2、实参;3、传值;4、传引用。形参和实参形参:在函数定义中的参数的名字被叫做形式参数(形参) 实参:调用函数时所赋值给...

    在进入Python函数传参是传值还是传引用的问题前,先介绍一下下面的4个基本概念: 
    1、形参; 
    2、实参; 
    3、传值; 
    4、传引用。

    形参和实参

    形参在函数定义中的参数的名字被叫做形式参数(形参)  实参调用函数时所赋值给形式参数(形参)的变量是实际参数(实参)

    pen_name = 'RidingRoad'


    def my_name(name):
        # name 是形参
        print("My name is {}".format(name))

    # pen_name是实参
    my_name(pen_name) 

    传值

    传值: 
    实际参数的值赋值给形式参数后,在函数内对形式参数做任何修改都不会影响到实际参数。 
    简言之就是值拷贝,就是你在我这沾了”敬业福“,你沾到”敬业福“后,你对你拥有的“敬业福”是送给别人还是合成,都不会影响到我的“敬业福”的状态。

    传引用

    传引用: 
    传引用的意思就是形式参数和实际参数都指向同一块内存, 你即是我,我即是你,在函数内对形式参数的操作就是对实际参数的操作。

    Python函数传参

    很多人对Python函数传参是传值还是传引用这个问题的理解,会认为可变对象传引用,不可变对象传值。但实际情况真的是这样吗? 
    常见的可变对象:列表;字典;集合  
    常见的不可变对象:数值型;字符串;元组

    outer_list = [123]


    def pass_parameter(inner_list=None):
        if not isinstance(inner_list, list):
            raise Exception('{} is not list.'.format(inner_list))
        print('inner_list id is {}'.format(id(inner_list)))
        # (1)按照传可变对象传引用的说法,修改inner_list即等同修改outer_list
        inner_list.append(4)
        print('inner_list.append(4)后值为{}, id为{}'.format(inner_list, id(inner_list)))
        # (2)按照传可变对象传引用的说法,修改inner_list即等同修改outer_list
        inner_list = [567]
        print('inner_list = [5, 6, 7]后的id为{}'.format(id(inner_list)))


    print('outer_list id is {}'.format(id(outer_list)))
    pass_parameter(inner_list=outer_list)
    print("修改后outer_list的值是{}, id是{}".format(outer_list, id(outer_list)))

    在(1)处修改列表的值,内部和外部的列表都同时被修改成功; 
    但在(2)处修改内部列表的值却没有成功修改外部列表的值;

    上面的例子说明了,可变对象传引用,不可变对象传值的说法是不正确的。 
    在这里需要指出的是, 在Python中万物皆对象, Python函数传参是传递整个对象

    505d4057252ac27440ffe3314becfe52.png
    Python函数传参是传对象

    例子中的变量outer_list 的值[1, 2, 3]是一个对象,变量outer_list只是贴在[1, 2, 3]这个对象上一个标签而已。

    当执行pass_parameter(inner_list=outer_list)时,相当于执行pass_parameter(inner_list=[1, 2, 3]),此时对象[1, 2, 3]已经贴有了两个标签(outer_list, inner_list)。

    当执行inner_list.append(4)时,由于inner_list所指向的对象[1, 2, 3]是可变对象,Python会在其后添加4后返回原来的id,即返回原来的对象, 由于inner_list和outer_list都是指向[1, 2, 3],所以对对象[1, 2, 3]的修改,会同时在inner_list和outer_list上得到体现。

    当执行inner_list = [5, 6, 7]时, Python会新生成对象[5, 6, 7], 并把原来贴在[1, 2, 3, 4]的标签inner_list贴在了对象[5, 6, 7], 但outer_list仍贴在对象[1, 2, 3, 4]。

    想了解更多关于Python的知识,看下面  

    f55dce9effe954da3e30889d47bd8fb6.png

    展开全文
  • 一、指针与函数传参:1、普通变量作为函数形参: (1)函数传参时,普通变量作为参数时,形参和实参名字可以相同也可以不 同,实际上都是用实参来替代相对应的形参的。 (2)在子函数内部,形参的值等于实参。原因是函数...
  • 函数和函数传参;常用内置函数;函数;函数;函数;函数;函数;函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数...
  • 1. 函数传参1.1 参数的作用1.2 形参和实参形参:在函数定义阶段括号内定义的参数,称之为形式参数,简称形参,本质就是变量名。实参:在函数调用阶段括号内传入的参数,称之为实际参数,简称实参,本质就是变量的值...
  • python中函数传参详解

    2020-09-21 14:30:07
    本文给大家介绍的是Python中函数传参的使用方法及示例,非常的简单实用,有需要的小伙伴可以参考下
  • main函数传参

    2021-02-05 09:44:27
    文章目录1.main函数传参2.示例:3.扩展4.运行结果: 1.main函数传参 main 函数作为应用程序的入口,在头文件“#include<stdio.h>”中 main 函数需要传参数的时候完整的定义为 int main(int argc,char **argv)...
  • 关于函数传参

    2020-02-28 16:45:19
    关于函数传参 以交换俩个数字的swap函数为例 在C语言中,函数传参有俩种方式:传值和传地址。 传值:形参是实参的一份临时拷贝,如果在函数中对形参进行修改,是不会改变外部的实参的。 #define _CRT_SECURE_NO_...
  • js函数传参

    2017-08-19 17:28:48
    js函数传参
  • 函数和函数传参;常用内置函数;函数;函数;函数;函数;函数;函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数;常用内置函数...
  • Java 函数传参仅作为个人看法首先声明一下, 在java中函数传参是值传递, 不是引用传递. 要弄清楚这个问题之前要先弄清楚什么是值传递,什么是引用传递.函数传参有两种方式值传递 (pass by value): 是指在调用函数时将...
  • python 基本有4种函数传参方式:1. 直接传参 fun(arg1,arg2,...)2. 默认传参 fun(arg1,arg2='x')3. 集合传参 fun(*arg)4. 字典传参 fun(**arg)下面从一些简单实例来说明:1. 直接传参方式,参数变量需要对应,比如传...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 13,915
精华内容 5,566
关键字:

函数传参