码迷,mamicode.com
首页 > 编程语言 > 详细

python函数定义语法总结

时间:2017-12-29 21:48:58      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:class   工程师   blog   rgs   通过   city   有一个   exp   数组   

见下面代码及注释:

 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

 

def calc(value):
sum=0
for m in value:
sum=sum+m
return sum

data=[1,2,3,4,5,6,7,8,9,10]
print(str(calc(data)))
print(calc([1,2,3]))
print(calc((1,2,3)))
#print(calc(1,2,3)) 这句会报错,不过可以用可变参数改造函数calc

def calc1(*value):
sum=0
for m in value:
sum=sum+m
return sum
#函数calc1为可变参数
print(calc1(1,2,3))
print(calc1()) #甚至还可以零参数调用

#如果有一个list或者tuple要调用可变参数怎么搞
nums=[1,2,3]
#print(calc1(nums)) 这句报错: unsupported operand type(s) for +: ‘int‘ and ‘list‘
#像下面这样调用就可以
print(calc1(nums[0],nums[1],nums[2]))
#也可以这样调用,表示把nums这个list的所有元素做为一个可变参数传递进去
print(calc1(*nums))

#下面演示关键字参数
#关键字参数允许你传入0个或任意个含参数名的参数,
# 这些关键字参数在内部自动装为一个dict
def person(name,age,**kw):
print(‘name:‘,name,‘age:‘,age,‘other:‘,kw)

print(person(‘刘小勇‘,30))
print(person(‘刘小勇‘,35,city=‘北京‘,job=‘软件工程师‘))

data1={‘city‘:‘北京‘,‘job‘:‘卖菜‘}
print(person(‘刘小能‘,45,city=data1[‘city‘],job=data1[‘job‘]))
print(person(‘刘小勇‘,45,**data1))

#命名关键字参数
def person1(name,age,*,city,job):
print(name,age,city,job)

print(person1("刘小勇",45,city="武汉",job="总统"))
#命令关键字参数只接受city,job,下面的调用因此会报错
#person1() got an unexpected keyword argument ‘bby‘
#print(person1("lxy",32,bby="kkk",job2="kkk2"))

#命名关键勃参数还可以有缺省值
def person2(name,age,*,city="wuhan",job):
print(name,age,city,job)

print(person2(‘xly2‘,23,job=‘222‘))

#参数组合
#5种参数组合,必须按以下列顺序组合
#必选参数、默认参数、可变参数/命名关键字参数和关键字参数

def f1(a,b,c=0,*args,**kw):
print(‘a=‘,a,‘b=‘,b,‘c=‘,c,‘args=‘,args,‘kw=‘,kw)
def f2(a,b,c=0,*,d,**kw):
print(‘a=‘,a,‘b=‘,b,‘c=‘,c,‘d=‘,d,‘kw=‘,kw)

print(f1(1,2))
print(f1(1,2,c=3))
print(f1(1,2,3,‘a‘,‘b‘))
print(f1(1,2,3,‘a‘,‘b‘,x=33))
print(f2(1,2,d=99,ext=None))

#你甚至可以通过一个tuple和dict调用上面的函数
args=(1,2,3,4)
kw={‘d‘:99,‘x‘:‘#‘}
print(f1(*args,**kw))

args=(1,2,3)
kw={‘d‘:88,‘x‘:‘#‘}
print(f2(*args,**kw))
#所以,对于任意函数,都可以通过类似fun(*args,**kw)的形式调用它,无论它的参数
#是如何定义的

#几点总结
#默认参数一定要用不可变的对象
#*args是可变参数,接受一个tuple或list
#**kw是关键字参数,接受一个dict

python函数定义语法总结

标签:class   工程师   blog   rgs   通过   city   有一个   exp   数组   

原文地址:https://www.cnblogs.com/hackpig/p/8146310.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!