zoukankan      html  css  js  c++  java
  • python函数定义语法总结

    见下面代码及注释:

     1 def calc(value):
     2     sum=0
     3     for m in value:
     4         sum=sum+m
     5     return  sum
     6 
     7 data=[1,2,3,4,5,6,7,8,9,10]
     8 print(str(calc(data)))
     9 print(calc([1,2,3]))
    10 print(calc((1,2,3)))
    11 #print(calc(1,2,3))  这句会报错,不过可以用可变参数改造函数calc
    12 
    13 def calc1(*value):
    14     sum=0
    15     for m in value:
    16         sum=sum+m
    17     return  sum
    18 #函数calc1为可变参数
    19 print(calc1(1,2,3))
    20 print(calc1())  #甚至还可以零参数调用
    21 
    22 #如果有一个list或者tuple要调用可变参数怎么搞
    23 nums=[1,2,3]
    24 #print(calc1(nums)) 这句报错: unsupported operand type(s) for +: 'int' and 'list'
    25 #像下面这样调用就可以
    26 print(calc1(nums[0],nums[1],nums[2]))
    27 #也可以这样调用,表示把nums这个list的所有元素做为一个可变参数传递进去
    28 print(calc1(*nums))
    29 
    30 #下面演示关键字参数
    31 #关键字参数允许你传入0个或任意个含参数名的参数,
    32 # 这些关键字参数在内部自动装为一个dict
    33 def person(name,age,**kw):
    34     print('name:',name,'age:',age,'other:',kw)
    35 
    36 print(person('刘小勇',30))
    37 print(person('刘小勇',35,city='北京',job='软件工程师'))
    38 
    39 data1={'city':'北京','job':'卖菜'}
    40 print(person('刘小能',45,city=data1['city'],job=data1['job']))
    41 print(person('刘小勇',45,**data1))
    42 
    43 #命名关键字参数
    44 def person1(name,age,*,city,job):
    45     print(name,age,city,job)
    46 
    47 print(person1("刘小勇",45,city="武汉",job="总统"))
    48 #命令关键字参数只接受city,job,下面的调用因此会报错
    49 #person1() got an unexpected keyword argument 'bby'
    50 #print(person1("lxy",32,bby="kkk",job2="kkk2"))
    51 
    52 #命名关键勃参数还可以有缺省值
    53 def person2(name,age,*,city="wuhan",job):
    54     print(name,age,city,job)
    55 
    56 print(person2('xly2',23,job='222'))
    57 
    58 #参数组合
    59 #5种参数组合,必须按以下列顺序组合
    60 #必选参数、默认参数、可变参数/命名关键字参数和关键字参数
    61 
    62 def f1(a,b,c=0,*args,**kw):
    63     print('a=',a,'b=',b,'c=',c,'args=',args,'kw=',kw)
    64 def f2(a,b,c=0,*,d,**kw):
    65     print('a=',a,'b=',b,'c=',c,'d=',d,'kw=',kw)
    66 
    67 print(f1(1,2))
    68 print(f1(1,2,c=3))
    69 print(f1(1,2,3,'a','b'))
    70 print(f1(1,2,3,'a','b',x=33))
    71 print(f2(1,2,d=99,ext=None))
    72 
    73 #你甚至可以通过一个tuple和dict调用上面的函数
    74 args=(1,2,3,4)
    75 kw={'d':99,'x':'#'}
    76 print(f1(*args,**kw))
    77 
    78 args=(1,2,3)
    79 kw={'d':88,'x':'#'}
    80 print(f2(*args,**kw))
    81 #所以,对于任意函数,都可以通过类似fun(*args,**kw)的形式调用它,无论它的参数
    82 #是如何定义的
    83 
    84 #几点总结
    85 #默认参数一定要用不可变的对象
    86 #*args是可变参数,接受一个tuple或list
    87 #**kw是关键字参数,接受一个dict
     
  • 相关阅读:
    dockerfile构建的镜像中文乱码
    xshell+xmanager6破解
    mysql数据库本地登录无法查看到数据库
    Tomcat日志中文乱码问题解决
    Tomcat 启动很慢
    Supervisor-安装
    supervisor-monitor进程集中管理部署
    CeSi 进程集中管理部署
    [IOT]
    [SourceTree]
  • 原文地址:https://www.cnblogs.com/hackpig/p/8146310.html
Copyright © 2011-2022 走看看