精华内容
下载资源
问答
  • python中的参数传递顺序

    千次阅读 2013-11-11 23:17:51
    1:def func(name) 在调用是,可以通过位置传递给name,也可以通过关键字传递给name...默认值参数,假设在调用函数时,没有传递给name值,那么name经使用默认值,这里name仍然可以通过位置和关键字传递值   3: d

    1:def func(name)

    在调用是,可以通过位置传递给name,也可以通过关键字传递给name值,

    Func(“xiaoming”)   或者  func(name=“xiaoming”)

     

    2: def func(name=value)

    默认值参数,假设在调用函数时,没有传递给name值,那么name经使用默认值,这里的name仍然可以通过位置和关键字传递值

     

    3: def func(*name)

    在函数调用时,那么收集任何,没有被显式匹配的非关键字参数

    (注,只能匹配没有被显式匹配的参数,如果非关键字参数在传入时,已经匹配给了某个参数,则此参数就不在那么集合中)

    deffunc(a,*name):print a,name

    func(a=1,2,3,4)或者,func(1,2,3,4),  name只能匹配 2,3,4

     

    4 def func(**name)

    在函数调用时,name收集任何没有被匹配的关键参数

     

    5   def func(*args,name)  或者 def func(*,name=value)  # 3.0

    在参数传递时,必须以关键参数的形式将参数传递给name,即kword-only

     

    6

    顺序:

    函数定义:

    1,  位置参数  2,默认参数  3*name参数  4kwork-only参数  5**name参数

     

    参数传递顺序,即调用者将参数传递给函数的顺序:

    1,  非关键字位置参数,2,关键字参数

     

    匹配顺序:

    1,  首先匹配位置参数,将非关键参数按照位置匹配给位置参数,将前几个参数对号入座,

    2,  关键字参数,按照后面的关键字的定义,一个个的对号入座

    优先级问题:假设非关键字参数传递给函数后,函数能够接受非关键字参数的参数有:

    1,  位置参数  2,默认参数  3*name参数

    那么非关键字参数首先匹配位置参数,其次匹配默认参数,剩余的匹配*name

     

    func(a,b,c=valume1,d=value2,*args,kwonly,**kwargs):

    printa,b,c,d,name,args,kwonly,kwargs

     

     

     

     

     

     

    展开全文
  • #示例一: def xie(a,b,c,d): #形参 print('我叫',a,'年龄',b,'性别',c,'爱好',d) ...xie(b=18,a='张三',d='打球',c='男') #关键词传参、传参可以不按顺序来传、当然结果是按打印里参数顺序一致 #示例二: d...

    #示例一:
    def xie(a,b,c,d):                                   #形参
        print('我叫',a,'年龄',b,'性别',c,'爱好',d)
    
    xie('张三','18','男','打球')                         #实参,顺序传参
    xie(b=18,a='张三',d='打球',c='男')                   #关键词传参、传参可以不按顺序来传、当然结果是按打印里参数顺序一致的
    
    
    
    
    
    
    
    #示例二:
    def xie(a,b,c=55,d=66):                                   #形参、这是默认传参、默认传参是定义函数的时候直接传入参数
        print('我叫',a,'年龄',b,'性别',c,'爱好',d)
    
    xie('张三','18')                                          #默认传参的那2个参数可以不用在调用函数的时候传入
    xie('张三','18','男','打球')                               #当然默认传参也可以手动传参、而结果是手动优先于默认、如果没有手动传参就会取默认的参数
    
    
    
    
    
    
    
    
    
    #示例三:
    def xie(*a):              #定义一个‘不定长参数’,*号表示所有、跟SQL里select * from差不多、*号后面一定要给参数、但是只允许一个不能像(*a,b,c)
        return a              #然后返回参数
    
    b=xie(54564,4,9874,654,56,45,4)
    print(b)                  #调用函数、传入参数值、然后赋给变量、最后打印出来就是传入参数的值
    
    
    
    
    
    
    #示例四:
    def xie(*a):
        b=0
        for i in a:                       #用循环结构来求参数的总和、
            b=b+i
        return b
    
    c=xie(1,2,3,4,5,6)                    #这个传入的参数总和是不是21、用循环结构就是为了在不确定定义多少个参数的时候、又想知道参数的总和值、才会用到
    print(c)                              #要是知道多少个参数、那就一个一个参数相加就好了
    
    

     

    展开全文
  • Python 函数参数传递

    2018-08-13 12:51:38
    Python 函数参数传递相对于 C++来说更加灵活,并且使用也很方便,这里做下简单总结。 正文 实参和形参 实参:在调用函数时提供函数参数称为实参。 形参:定义函数时,函数中的变量成为形参。 传递实参 ...

    前言

    Python 的函数参数传递相对于 C++来说更加灵活,并且使用也很方便,这里做下简单的总结。

    正文

    实参和形参

    实参:在调用函数时提供的函数参数称为实参。
    形参:定义函数时,函数中的变量成为形参。

    传递实参

    位置实参

    这个没什么好说,和其他编程语言用法一样,直接按照位置顺序传递即可。示例如下:实参和形参的位置一一对应,所以参数的顺序很重要。

    def fun(name,age):
        print("name = ",name,"age = ",age)
    
    fun("Jack",28)

    关键字实参

    这种用法就和其他编程语言有点区别了,所谓的关键实参是传递给函数的名字-值对。直接在实参中将名称和值对应起来,因此在向函数传递实参时不会混淆,这种用法无需考虑顺序,还清楚的指出了函数调用中各个值的用途,示例如下:

    def fun(name,age):
        print("name = ",name,"age = ",age)
    
    fun(name="Jack",age=28)

    也可以写成

    fun(age=28,name="Jack")

    其结果都是一样的。

    默认参数

    这种用法也似曾相识,编写函数时,可给每个形参指定默认值。而在调用函数时 如果如果没有传入实参,那么函数就会默认使用形参值。使用默认值可简化函数调用,还清楚地指出函数的典型用法。
    示例如下:

    def fun(name,age=20):
        print("name = ",name,"age = ",age)
    
    fun("Jack")

    这里的函数调用也可以写成:

    fun("Jack",28)

    当然,还可以按照关键字实参的方式来调用:

    fun(name="Jack")

    需要注意的是:使用默认参数时,在形参列表中必须先列出没有默认值的参数,再列出有默认值的形参,这让 Python 依然能够正确地解读位置实参。
    打个比方, 上面的函数定义不能写成如下形式:

    def fun(name="mark",age):
        print("name = ",name,"age = ",age)

    写成这样会报错:

    SyntaxError: non-default argument follows default argument

    这和 C++的函数默认参数用法也是一样的。

    传递列表

    可以直接向函数传递列表,这种列表包含的可能是名字,数字或更复杂的对象(如字典),将列表传递给函数后,函数就能直接访问其内容。

    def fun(names):
        for name in names:
            print("name = ",name)
    
    names=["Jack","Eric","John"]
    fun(names)

    输出:

    name =  Jack
    name =  Eric
    name =  John

    函数中修改列表

    当向函数中传递列表时,可以直接在函数中对列表进行修改,示例如下:

    def fun(names):
        for name in names:
            print("name = ",name)
        names[0]="Sanny"
    
    names=["Jack","Eric","John"]
    print("before names = ",names)
    fun(names)
    print("after names = ",names)

    输出:

    before names =  ['Jack', 'Eric', 'John']
    name =  Jack
    name =  Eric
    name =  John
    after names =  ['Sanny', 'Eric', 'John']

    可以看到,这里的列表已经发生了变化。

    禁止函数修改列表

    如果要不想要函数中修改列表内容怎么办呢?可以在传递的时候将列表的副本传递给函数,其实相当于另外开辟了空间,将列表值赋值给新地址后再传递。示例如下:

    def fun(names):
        for name in names:
            print("name = ",name)
        names[0]="Sanny"
    
    names=["Jack","Eric","John"]
    print("before names = ",names)
    fun(names[:])
    print("after names = ",names)

    这里只是将函数调用方式写成:fun(names[:])
    输出如下:

    before names =  ['Jack', 'Eric', 'John']
    name =  Jack
    name =  Eric
    name =  John
    after names =  ['Jack', 'Eric', 'John']

    可以看到列表内容并没有发生变化。

    注意:虽然想函数传递列表的副本可保留原始列表的内容,但除非有充分的理由需要传递副本,否则还是应该讲原始列表传递给函数,因为让函数使用现成列表可避免花时间和内存创建副本,从而提高效率在处理大型列表时尤其如此。

    传递任意参数的实参

    有时候,你预先不知道函数需要接受多少个实参,好在Python 允许函数从调用语句中手机任意数量的实参。
    示例如下:

    def fun(*names):
        print("names = ",names)
    
    fun("Jack")
    fun("Jack","Eric","John")

    输出如下:

    names =  ('Jack',)
    names =  ('Jack', 'Eric', 'John')

    可以看到这里函数可以传递任意多的实参。
    形参名*names 中的星号让 Python 创建一个名为 names 的空元组,并将收到的所有值都封装到这个元组中,即便函数只传递了一个值也是如此。

    然而,还可以给函数传递任意多的列表参数,并且可以直接在函数中对列表参数进行修改。示例如下:

    def fun(*names):
        print("names = ",names)
        names[0][0] = "aaa"
    
    
    names=["Jack","Eric","John"]
    names_2=["mark","kiko"]
    
    fun(names,names_2)
    print(" after names = ",names)

    输出如下:

    names =  (['Jack', 'Eric', 'John'], ['mark', 'kiko'])
    after names =  ['aaa', 'Eric', 'John']

    这里的第一个列表数据已经在函数中被修改了。

    结合使用位置实参和任意数量实参

    如果要让函数接收不同类型的实参,那么必须在函数定义中将接纳任意数量实参的形参放在最后。Python 先匹配位置实参和关键字实参,再将剩下的实参都收集到最后一个形参中。
    示例如下:

    def fun(num,*names):
        print("num = ",num,"names = ",names)
    
    names=["Jack","Eric","John"]
    names_2=["mark","kiko"]
    
    fun(5,names,names_2)

    输出:

    num =  5 names =  (['Jack', 'Eric', 'John'], ['mark', 'kiko'])

    使用任意数量的关键字实参

    除了位置实参和任意数实参结合使用,关键字实参也可以和任意数实参集合使用。
    有时候,需要接受任意数量的实参,但预先不知道传递给函数的会是什么样的信息,这种情况下,可将函数编写成能够接受任意数量的键值对—调用语句提供了多少就接受多少。

    def fun(first,last,**user_info):
        profile={}
        profile["first"]=first
        profile["last"]=last
        for key,value in user_info.items():
            profile[key] = value
        print("profile = ",profile)
    
    fun("aaa","bbb",name="hello",field = "world")

    输出:

    profile =  {'first': 'aaa', 'last': 'bbb', 'name': 'hello', 'field': 'world'}

    这里的形参**user_info中的两个星号让 Python 创建一个名为user_info的空字典,并将收到的所有键值对都封装到这个字典中。在这个字典中,可以像访问其它字典那样访问user_info中的键值对。

    最后

    可以看到,Python 的这种函数调用非常灵活,尝试不同的调用会发现可以扩展很多其他的用法,对实际项目中有很大的帮助。

    展开全文
  • python中的参数传递

    2015-07-25 23:14:00
    一般的参数顺序是先位置,再关键字,然后是包裹位置传递,包裹关键字传递。 转载于:https://www.cnblogs.com/chybot/p/4676800.html

    一般的参数顺序是先位置,再关键字,然后是包裹位置传递,包裹关键字传递。

    转载于:https://www.cnblogs.com/chybot/p/4676800.html

    展开全文
  • Python函数参数的传递

    2021-03-11 17:47:40
    Python中函数参数的传递是通过赋值来传递的。函数参数的使用又有两个个方面值得注意: 1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析 先看第一个问题,在Python中函数参数的定义主要有四种方式: 1....
  • 根据inspect模块官文文档关于函数参数类型相关说明,python函数参数共有五种类型,按顺序分别为:POSITIONAL_ONLY、POSITIONAL_OR_KEYWORD、VAR_POSITIONAL、KEYWORD_ONLY、VAR_KEYWORD。如图: POSITIONAL_...
  • 实际参数按照前后顺序依次赋值给形式参数。 def party(area, person): print("晚上聚会") print("地点:", area) print("参与人员:", person) print("有了酒,就有了故事...
  • 文章目录位置实参传递,即一对一传递传递顺序不能乱关键字实参传递,f(arg1=...,arg2=...,...)默认值,传递传递任意数量实参使用任意数量关键字实参返回值 返回字典传递列表,可以在函数修改列表,以及如何...
  • python 参数传递总结

    2018-12-25 16:36:17
    下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。 def foo(p1,p2,p3,...) 这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。在调用函数的时候,按照顺序以此对参数进行赋值,特备...
  • python 参数传递总结

    2018-12-25 16:36:17
    下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。 def foo(p1,p2,p3,...) 这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。在调用函数的时候,按照顺序以此对参数进行赋值,特备...
  • 当args与位置参数和默认参数混用的情况下,请注意三者的顺序 顺序为:位置参数,*args,默认参数 def foo(x,*args,y=1): pass Foo(1,2,3,4,5) 其中的x为1,2,4,5都给args,即args=(2,3,4,5),y始终为1 注意:...
  • python函数的参数传递 传递方式: 位置传参 序列传参 关键字传参 位置传参:  实际调用参数(实参)的对应... 序列传参是指在函数调用的过程,用*将序列拆解后按顺序位置进行传递的传参方式  实参和形式通过序列...
  • 下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。 def foo(p1,p2,p3,…) 这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。在调用函数的时候,按照顺序以此对参数进行赋值,特备注意...
  • python中函数参数的传递是通过赋值来传递的。函数参数的使用又有俩个方面值得注意:1.函数参数是如何定义的 2.在调用函数的过程中参数是如何被解析先看第一个问题,在python中函数参数的定义主要有四种方式:1.F(arg...
  • 在调用函数过程中参数是如何被解析先看第一个问题,在python中函数参数定义主要有四种方式: 1.F(arg1,arg2,…) 这 是最常见定义方式,一个函数可以定义任意个参数,每个参数间用逗号分割,用这种方式定义...
  • python 参数传递及分类

    千次阅读 2013-10-08 15:32:52
    这些参数包括了所有必要参数(以正确定位顺序来传入函数),关键字参数(以顺序或者不按顺序传入,但是带有参数列表曾定义过关键字) ,以及所有含有默认值,函数调用时不必要指定的参数。(声明函数时创建)局部...
  • ######python中参数传递有多种方式:1、位置传递2、关键字传递3、参数默认值传递4、包裹传递5、解包裹 #####位置传递 def a(a,b,c): print(a,'我是位置传递参数a') print(b, '我是位置传递参数b') print(c, '我是...
  • python中参数值的传递时按照函数声明是参数的位置顺序进行传递的,即位置参数。 Python还提供一种传递参数的方法,按照参数名传递值的方法,即提供关键字参数——类似定义函数是设置默认参数时的默认值,要在调用...
  • 按位置传递的参数,称为:“位置参数”。 def f1(a,b,c): print(a,b,c) f1(2,3,4) f1(2,3) 执行结果 2 3 4 f1(2,3) TypeError: f1() missing 1 required positional argument: 'c' 默认值参数 我们可以为某些...
  • python中函数的参数

    2020-12-16 23:16:53
    位置参数是指函数调用时传递实参的顺序与定义函数的形参顺序一致,如例所示。 在例,第1、2行定义printInfo()函数。第3行调用该函数,其数据传递如图所示。第4行将两个实参的位置调换,则发生错误。 在图,当...
  • 下面总结通过总结常见的函数参数定义方式,来理解参数传递的流程。 def foo(p1,p2,p3,...) 这种方式最常见了,列出有限个数的参数,并且彼此之间用逗号隔开。在调用函数的时候,按照顺序以此对参数进行赋值,特备...
  • 当程序有多个参数,调用parse_args()时,会先识别参数名称所有带前缀'-'的参数,然后再将剩余的参数按照顺序视为对应位置上的参数。 下面是文本分类任务中的一个伪代码,可以参考: import argparse parser = ...
  • Python函数中的位置参数

    千次阅读 多人点赞 2019-07-02 18:25:02
    函数的参数在调用时传递数据时,默认是按参数的位置顺序传值,即形参的顺序与实参的顺序逐一对应,这种参数的使用模式称为位置参数。位置参数是最常用的一种参数使用形式。 使用位置参数传递实参的情况下,要求有...
  • Python中函数的参数,可以分为以下几类: 位置参数,有时也称必备参数,指的是必须按照正确的顺序将实际参数传到函数中,换句话说,调用函数时传入实际参数的数量和位置都 必须和定义函数时保持一致。 实参和形参...
  • 函数的参数python中函数参数的定义方式有一下4...在我们在传参的时候,实参传递的顺序按照形参定义的顺序进行传递的传参方式。 def sum_num(num1, num2): print(num1, num2) sum_num(1, 20) # 1 20 sum_nu...
  • python的参数详解

    2020-08-04 21:13:30
    如图,Lion / Dog占了两个位置,期望是传递实参建议按照这个顺序,不然,即时能够接受,也不能正确处理。(Lion名字跟Dog名字,因为传递错误,将导致不能正确识别) 2、关键字实参 定义:调用时候,需要指定...
  • 1.参数命名规则经验:绝大多数函数接收一定数量的参数,然后根据实际调用时提供的参数的不同,输出不同结果。...位置参数必须按先后顺序,一一对应,个数不多不少的传递!x, y, z = 1, 2, 3 def add...

空空如也

空空如也

1 2 3 4 5 ... 13
收藏数 249
精华内容 99
关键字:

python中参数传递的顺序

python 订阅