精华内容
下载资源
问答
  • python-关键字传递参数

    千次阅读 2018-04-23 15:54:34
    1.必需按照关键字传递*之后的变量必需按照关键字传递eg:def kwonly(a,*b,c):#c必需按照关键字传递,b接收...3)错误def kwonly(a,*,b,c)#a可以按照位置窜地,亦可以按照参数传递,b,c必需参数传递,且不允许出现多...

    1.必需按照关键字传递

    *之后的变量必需按照关键字传递

    eg:

    def kwonly(a,*b,c):#c必需按照关键字传递,b接收剩余参数,a可以按照位置传递,也可以按照关键字传递

    kwonly(1,2.c = 3)正确

    kwonly(1,2,3,c = 4)正确

    kwonly(1,2,3)错误

    def kwonly(a,*,b,c)#a可以按照位置窜地,亦可以按照参数传递,b,c必需参数传递,且不允许出现多余的参数

    kwonly(1,b = 2,c = 3)正确

    kwonly(a = 1,b = 2,c = 3)正确

    kwonly(c= 1,a  = 2,b = 3)正确

    kwonly(1,2,3)错误

    2.关键字传递可以出现默认值。且有默认值的关键字传递的参数可以不传递参数

    3.不可以出现两个*

    展开全文
  • Python函数的参数传递-位置参数、关键字参数、默认参数、不定长参数 1. 函数的参数 参数列表:如果函数所实现的需求中涉及到未知项参与运算(这些未知项需要函数的调用者来决定),就可以将未知项设置为参数。 格式...

    Python函数的参数传递-位置参数、关键字参数、默认参数、不定长参数

    1. 函数的参数

    参数列表:如果函数所实现的需求中涉及到未知项参与运算(这些未知项需要函数的调用者来决定),就可以将未知项设置为参数。

    格式:参数1,参数2,参数3,…

    形式参数:在方法中(函数内)定义的,用于接收中间参数的值

    实际参数:在函数外面定义,实际参与运算的值,就是为了给形式参数赋值

    #函数的定义
    #name是形参
    def myPrint(name):
    	print("%s is a good man !"%name)
    
    #"lili" 是实参
    myPrint("lili")
    #结果
    lili is a good man !
    
    #形参 参数一:name  参数二:age
    def myPrint(name, age):
    	print("%s is %d year old"%(name, age))
    #函数调用,传递两个参数	
    myPrint("lili", 18)
    #结果
    lili is 18 year old
    
    1.2 函数的返回值

    函数的返回值表示一个函数执行完成之后得到的结果

    使用return返回函数的返回值,用于结束函数,得到最终运算的结果。

    两个作用:1、返回计算到的函数值;2、用于结束函数(return之后下一行的语句不执行)

    1.3 参数传递

    参数传递的本质:实参给形参赋值的过程

    1.3.1 位置参数

    位置参数又称必选参数

    传递参数的顺序与定义的顺序有关,必须按照定义的顺序来进行传递,传递参数的个数与参数的个数必须保持一致。

    def ins(name,age,address):
        print("大家好我是%s,我今年%d岁,我家乡在%s"%(name,age,address))
    ins("小明",29,"深圳")
    #结果
    大家好我是小明,我今年29,我家乡在深圳
    

    位置参数之值传递:指传递不可变类型,一般指string、tuple和number类型

    def func1(a):
    	print(a)
    	a = 10
    	print(a)
    temp = 20
    #将temp作为实参传递给func1函数,将赋值给形参a
    #相当于 a = temp
    func1(temp)
    #结果 
    #20
    #10
    

    打印地址,如下

    def func1(a):
    	print(id(a))
    	a = 10
    	print(id(a))
    	
    temp = 20
    #将temp作为实参传递给func1函数,将赋值给形参a
    #相当于 a = temp
    print(id(temp))
    func1(temp)
    print(temp)
    #结果两个id地址相同
    #140735888668080
    #140735888668080
    #140735888667760
    #20
    

    位置参数之引用传递:一般传递的是可变类型,一般指list,dict和set

    def func1(c):
    	c[0] = 100
    	
    d =[1, 2, 3, 4]
    #将引用传递过去
    func1(d)
    print(d[0])
    #结果
    100
    

    说明:引用传递的本质上还是值传递,只不过传递的是地址

    1.3.2 关键字参数

    概念:用于函数调用时,通过“键-值”的形式加以指定,可以让函数更加清晰、容易使用,同时也清除了参数的顺序需求(位置关系)

    def func(name, age):
    	print("I am %s, and I am %d year old"%(name, age))
    #一般调用(位置参数)
    func("lili", 18)
    #使用关键字参数
    func(age = 18, name = "lili")
    

    注意:当同时出现位置参数与关键字参数时,位置参数必须在关键字参数的前面(即只能是前若干个连续的参数为位置参数,后面再接关键字参数),但是关键字参数之间是不存在先后顺序的。

    1.3.4 默认参数

    概念:用于定义函数,为参数提供默认值,调用函数时可传递也可不传递该默认参数的值。调用函数时,如果没有传递参数则会使用默认参数,传递则覆盖默认函数。

    比如:在使用sort()排序的时候,不更改其参数的时候我们一般情况下默认会升序排列

    def func(name, age=18)
    	print("I am %s, and I am %d year old"%(name, age))
    
    #一般的函数调用
    func('lilei', 19)
    #关键字参数调用
    func(name = 'leilei')
    #使用默认参数调用
    func('lili')
    

    使用默认参数可以简化函数的调用。

    使用默认参数的时候需注意:

    1.若默认参数与位置参数同时存在的时候,必选参数在前,默认参数在后,否则python解释器会报错

    2.默认参数必须指向不可变对象(会影响下一次调用的结果)

    如何设置默认参数

    当函数有多个参数时,把变化大的参数放在前面,变化小的放在后面,变化小的可以作为默认参数。

    练习:

    我们写一个小学生入学注册信息,要求输入姓名,性别,年龄,城市等信息,设计一个函数。

    def student(name, sex, age = 6, city = '广州'):
    	print("name :", name)
    	print("sex :",sex)
    	print("age :",age)
    	print("city :",city)
    #函数调用
    student('lili', 'boy')
    student('lili', 'boy', 7)
    student('lili', 'boy', city='Beijing')
    

    注意:有多个默认参数的时候,可以按顺序提供默认参数,当不按顺序提供参数的时候需要使用关键字参数进行调用。

    1.3.5 不定长参数【可变参数】

    概念:定义函数时,有时候我们不确定调用的时候会传递多少个参数(可能传递1个也可能多个或者不传递),此时我们可以使用包裹位置参数或者包裹关键字参数来进行参数传递。

    特点:能处理比当初声明时更多的参数(传递多少参数,就处理多少参数,不传递则不处理)

    *1.包裹位置传递–args

    用法:**变量名 (一般用*args)

    功能:可以收集除了必选参数以外剩余的位置参数,会根据传进参数的位置合并成一个元组(tupe),args是元组类型,这就是包裹位置传递。

    #与之前形参不同的是在hoby的变量名之前添加了“*”
    #添加了星号(*)的变量名会存放所有未命名的变量参数
    #如果在函数调用时没有指定参数,它就是一个空的元组
    #一般情况下使用*args
    >>def func(name, *hoby):
    >>	print("I am ",name,"I like",hoby)
    	
    >>func('lili','flower','money')
    I am  lili I like ('flower', 'money')
    

    **2.包裹关键字参数–****kwargs

    用法:**变量名 一般用****kwargs

    功能:收集除定义的变量的关键字参数之外,其它剩余关键字参数。kwargs是一个字典(dict),收集所有的关键字参数。

    def ins2(name,age=18,*args,**kwargs):
        print(name)
        print(age)
        print(args)
        print(kwargs)
    
    ins2("lili",18,"打豆豆","吃手手",hobby1="吃饭",hobby2="睡觉")
    #结果
    lili
    18
    ('打豆豆', '吃手手')
    {'hobby1': '吃饭', 'hobby2': '睡觉'}
    

    注意:在python中定义函数,可以用必选参数、默认参数、可变参数和关键字参数,这4中参数可以一起使用,或者是只用其中的某些,但是注意,参数定义与调用的顺序必须是:

    必选参数【位置参数】、默认参数、可变参数【包裹位置】和关键字参数【包裹关键字】。(默认参数与包裹位置参数可以根据需求进行位置调换)

    展开全文
  • 1.python中的位置传递:先用形式参数定义,然后在调用时对应位置使用实参(具体的数值)调用 def sum(a, b):  return a + b sum(5, 6)

    1.位置与关键字传递

    (1)位置传递:先用形式参数定义,然后在调用时对应位置使用实参(具体的数值)调用 

    def sum(a, b): 
        return a + b 
    sum(5, 6)

    (2)关键字传递:先使用形式参数定义,然后调用时使用定义时的关键词并赋予其相应的值 
    def sub(a, b): 
        return a - b 
    s1 = sub(a=6, b=3) 
    s2 = sub(b=3, a=0) 
    s3 = sub(9, b=3) 
    以上程序都是关键字传递,返回值为s1 = 3, s2 = -3, s3 = 6 
    这里写图片描述

    注意:
    (1)关键字传递是根据每个参数的名字进行参数传递的,关键字可以不遵守位置的对应关系(如s2的调用);
    (2)关键字传递可以和位置传递混用,但位置参数要出现在关键字参数之前(如s3的调用)。

    2.参数默认值

    参数默认值是指函数在定义时,参数被预先赋予相应的默认值。这样在调用时,可以重新赋值,也可以(对默认参数)不用赋值而使用默认的值。

    def mul(a, b=3, c=2):
        print("a:{0}, b:{1}, c:{2}".format(a, b, c))
        return a *b*c


    3.包裹传递

    在定义函数时,我们有时候并不知道调用的时候会传递多少个参数。这时候,包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会非常有用。
    (1)包裹位置传递:
    def func(*name):
        print type(name), name
    func(1,6)
    func(5,6,8,3,2,7)


    ①name是包裹位置传递所用的参数名,在定义func时,要在name前加*代表使用包裹位置传递,调用时传递的参数可以有多个;
    ②两次调用,尽管参数个数不同,但都基于同一个func定义。在func的参数表中,所有的参数被name收集,根据位置合并成一个元组(tuple)。
     
    (2)包裹关键字传递的例子:
    def func(**dict):
        print type(dict), dict
    func(name="jim", age=23, num=123568 , count="china")
    func(m=2, n=1, c=11)


    这里,由于字典类型是无序的,所以输出时并不一定跟输入的顺序一致。

    ①参数dict是包裹关键字传递所用的参数名,在dict前加**表示使用的是包裹关键字传递;
    ②调用时,将所有的参数名和数值组合成字典key:value的形式,传递给dict,这里dict代表一个字典,收集所有的关键字,传递给函数func。

    包裹传递的关键在于定义函数时,在相应元组或字典前加*或**。

    4.解包裹

    *和**,也可以在调用的时候使用,即解包裹(unpacking), 下面为例:
    def func(a,b,c):
        print a,b,c
    args = (1,3,4)
    func(*args)
    在这个例子中,所谓的解包裹,就是在传递tuple元祖类型数据时,让tuple的每一个元素对应一个位置参数。在调用func时使用*,把args按照定义时参数的个数进行拆分成,分别传递给a,b,c。
     
    相应的,也存在对词典的解包裹,使用相同的func定义,然后:
    dict = {'a':1,'b':2,'c':3}
    func(**dict)
    在传递词典dict时,让词典的每个键值对作为一个关键字传递给func。
     
    注意:在关键字解包裹时,调用时字典中key的名字要与定义函数时的参数名相同(且需要引号括进来),数目需要一致,顺序可以不一样。

    解包裹的关键在于调用函数时,在相应元组或字典前加*或**。

    5.几种类型的混合


    在定义或者调用参数时,参数的几种传递方式可以混合。但在过程中要小心前后顺序。基本原则是,先位置,再关键字,接着包裹位置,最后包裹关键字的顺序,并且根据上面所说的规则细细分辨。
     
    注意:请注意定义时和调用时的区分。包裹和解包裹并不是相反操作,是两个相对独立的过程。

    展开全文
  • 代码如下:/给三个整数从小到大排序并求和及其平均//其中,三个待求整数及其排序的结果由引用参数传递;其和由输出参数传递;平均由返回值返回。//在Main()方法中实现三个待求整数的输入及结果的输出//目的:定义...
  • ######python中参数传递有多种方式:1、位置传递2、关键字传递3、参数默认值传递4、包裹传递5、解包裹 #####位置传递 def a(a,b,c): print(a,'我是位置传递参数a') print(b, '我是位置传递参数b') print(c, '我是...
    ######python中参数传递有多种方式:1、位置传递2、关键字传递3、参数默认值传递4、包裹传递5、解包裹
    #####位置传递
    def a(a,b,c):
        print(a,'我是位置传递参数a')
        print(b, '我是位置传递参数b')
        print(c, '我是位置传递参数c')
    a(1,2,3)
    
    #####关键字传递,不用区分参数顺序位置,通过参数名称来传递
    def b(d,e,f):
        print(d,'我是关键字传递参数d')
        print(e, '我是关键字传递参数d')
        print(f, '我是关键字传递参数d')
    b(e=5,f=6,d=4)
    
    #####关键字传递可以和位置传递混用,但位置参数要出现在关键字参数之前
    def b2(d2,e2,f2):
        print(d2,'我是混合传递之:关键字传递参数d,我需要在位置传递之前')
        print(e2, '我是混合传递之:位置传递混合参数d')
        print(f2, '我是混合传递之:、位置传递混合参数d')
    b2(5,e2=6,f2=4)
    
    #####参数默认值传递,可以先给参数赋默认值,如果参数没有传值,默认值就会被使用,如果有重新赋值,就会使用新值
    #####但是这样传递顺序很重要
    def c(i=7,g=1,h=2):
        print(i,'我有默认值')
        print(g,'我有重新赋值')
    c(g=8,h=9)
    
    #####包裹传递:用于不确定函数会传递多少个参数.参数需要确认是使用元祖接收,还是使用字典接收,
    #####如果是使用元祖接收 需要参数前面加上*,如果使用字典接收,参数前面加上**
    #####使用元祖接收
    def d(*sum):
        print(sum)
    d(1,2,3,4,5,6)
    #####使用字典接收
    def d2(**sum2):
        print(sum2)
    d2(a=1,b=2,c='c')
    
    #####解包裹,在调用时传递包裹,此时会将dic拆分成11,22,33分别通过位置传递分发给方法e
    def e(k,l,s):
        print(k,'我是通过解包裹传递进来的')
    dic=(11,22,33)
    e(*dic)
    
    #####混合传递参数:在定义或者调用参数时,参数的几种传递方式可以混合。
    ##### 但在过程中要小心前后顺序。基本原则是,先位置,再关键字,再包裹位置,再包裹关键字。
    
    
    展开全文
  • 【Python学习】函数参数传递方法四种(位置,关键字,默认值,包裹位置,包裹关键字传递)
  • Python函数的参数多达5种,不像Java那样参数(必选参数)只有一种,而是像C++那样提供默认参数,除此之外,还提供可变参数关键字参数、命名关键字参数,这样就使得Python函数的参数变得十分复杂。但复杂意味着灵活...
  • 今天我们来总结一下参数传递中的ref、out、in关键字,话不多说直接开始。 在方法进行参数传递时,我们可以使用ref、out、in关键字对参数进行修饰。当参数使用ref、out、in修饰后,参数则会引用传递,而非按值传递...
  • 申明方法参数时可以使用的关键字: params:指定该参数采用可变数量的参数。 in:指定此参数由引用调用,但是只由调用方法读取。 ref:指定该参数为引用传递,可能由调用方法读取或写入。 out:指定此参数为引用传递...
  • C# 函数参数传递(按值和引用)

    千次阅读 2017-12-27 09:30:16
     类型:直接存储数据的,保存在内存中的stack(堆栈)中  引用类型:存储对的引用,实际上存储的就是一个内存的地址.引用类型的保存分成两块,实际保存在托管堆(heap)中.实际的内存地址保存在stack中  ...
  • 参考文章:... def printThreeChar(firstNum = 'a', secondNum = 'b', thirdNum = 'c'): #三个关键字参数,也称为默认参数 print firstNum print secondNum print thirdNum ...
  • 关键字参数定义:指用形式参数的名字来确定输入的参数值,即通过定义函数时定义的变量来输入参数值。通过该方式传递参数,无需与形参位置一致。使得调用函数更加灵活。 举例说明: 定义一个函数,传递两个参数,...
  • RobotFramework中return value(见下图中的${query_custid})设置后,此关键字(如A)在其他关键字(如B)可以直接被...可以在如下关键字中直接引用上一关键字,实现某一数据库中查询到的做为参数关键字中进行传递。...
  • 传递值是子程序传递参数的默认机制。这种传递机制将每个参数拷贝到子程序区域,如果子程序是 automatic 类型,那么子程序会在其本身的堆栈中保留一个局部的参数副本。参数在子程序内部的修改对外部不可见。 参数...
  • 1.关键字参数和默认值 请看下面两个函数: def hello_1(greeting, name):   print('{}, {}!'.format(greeting, name))  def hello_2(name, greeting):   print('{}, {}!'.format(name, greeting))  这两个...
  • 文章目录一、位置参数二、关键字参数三、 位置参数关键字参数混用四、给形参指定默认值 一、位置参数 函数调用时,根据函数定义的参数(形参)的 位置 来传递参数。第1个实参赋值给第1个形参,第1个实参赋值给第2...
  • RF即robot framework,可以实现上一关键字中返回值作为下一关键字中的入参来实现参数传递。该处把设置的得到的随机字符串,作为该关键字的return value(这里是random),下一关键字可直接引用变量名。 ① 将获取的...
  • python中参数传递的方法

    千次阅读 2020-08-13 14:21:15
    Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递,不定参数传递(包裹传递)和解包裹传递。 1.位置传递实例: def fun(a,b,c)  return a+b+c print(f(1,2,3)) 2.关键字...
  • Python给函数传递不定关键字参数

    千次阅读 2016-08-19 13:49:09
    在上一篇文章『[Python]给函数传递不定个数的参数』中,我们主要讲解了*在函数定义和函数调用阶段的不同作用,并留了一个小问题: 我们用*定义了add_int(*a)函数,现在有a_list=[1,2,3],那么我们调用add_int(*a...
  • python 文档字符串 默认参数 关键字参数 传递函数 lambda函数
  • 2、在传递词典字典时,让词典的每个键值对作为一个关键字参数传递给函数 复杂混合参数混用记: 小结: 你现在所遭遇的每一个不幸,都来自一个不肯努力的曾经 一、位置参数 调用函数时根据函数定义的参数...
  • python——关键字参数

    千次阅读 2018-11-30 22:13:49
     调用使用关键字参数的函数时,以param = value的方式传递数据。例如:  关键字参数有两大好处。首先,它们清晰地指出了参数值,有助于提高程序的可读性;其次,关键字参数的顺序无关紧要。对于包含大量参数的...
  • C# 按值传递引用传递

    千次阅读 2018-08-03 16:02:31
    值按传递,引用类型按值传递的实质的是传递值,参数为值类型时,“值”为实例本身,因此传递的是实例拷贝,不会对原来的实例产生影响;参数为引用类型时,“值”为对象引用,因此传递的是引用地址拷贝,会改变原来...
  • **传递或者键值对传递 foo(1,**{“y”:2,“z”:3}) 1 {‘y’: 2, ‘z’: 3} foo(1,y=2,z=3) 1 {‘y’: 2, ‘z’: 3} *args def foo(x,*args): print(x) print...
  • 近段时间,有几个刚刚开始学习C#语言的爱好者问我:C#中的函数,其参数传递按值传递引用传递有什么区别。针对这一问题,我简单写了个示例程序,用以讲解,希望我没有把他们绕晕。因为,常听别人说起:“你不...
  • C++中函数调用时的三种参数传递方式详解

    万次阅读 多人点赞 2017-08-31 20:44:51
    原文地址:http://blog.csdn.net/cocohufei/article/details/6143476;  ...   在C++中,参数传递的方式是“实虚结合”。 按值传递(pass by value) 地址传递(pass by pointer) 引用传递(pass b...
  • 参数传递 关键字参数 默认参数 不定长参数 匿名函数 迭代器 可迭代对象:可以直接作用在for循环的对象都可以称为可迭代对象 (Iterable) : 可以使用isinstance()去判断一个对象是否为Iterable对象 可以直接...
  • 参数传递

    千次阅读 2018-12-01 07:30:18
    在Java中参数传递主要分为两种,一是传递,二是引用传递。 一、首先我们要知道有哪些数据类型。  一种是基本数据类型。就是我们熟悉的 byte 、short、int、long、float、double、char、boolean 共八种。  另...
  • Python函数的关键字参数

    千次阅读 多人点赞 2019-07-02 18:27:04
    关键字参数使用可以不形参的顺序传递实参,系统形参的名字确认实参传递给哪个参数。 具体内容可参考《第5章函数进阶 第5.1节 Python函数的位置参数关键字参数精讲》 老猿Python,跟老猿学Python! 博客地址:...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 352,116
精华内容 140,846
关键字:

参数传递按值传递关键字