首页 > 技术文章 > Python-函数

shukeshu 2021-07-04 00:09 原文

 1 # 位置参数 函数:必须以正确的顺序传入参数
 2 def person1(name,age):
 3     print('我是{},年龄{}'.format(name,age))
 4 
 5 person1('小明', 18)
 6 
 7 
 8 # 关键字参数 函数:可以通过关键字传参,与传入的顺序无关
 9 def person2(name,age):
10     print('我是{},年龄{}'.format(name,age))
11 
12 person2(name='小明',age=18)
13 
14 # 默认参数 函数:在定义的过程中设置默认值
15 def person3(name='小李',age=20):
16     print('我是{},年龄{}'.format(name,age))
17 
18 person3() # 使用默认参数
19 person3(name = '小王')  # 自定义参数修改默认参数
20 person3(name = '小张', age=30)
21 
22 # 位置参数与关键字参数 同时存在的时候,先写位置参数,再写关键字参数
23 def person4(name, age=16):
24     print('我是{},年龄{}'.format(name,age))
25     
26 person4('小赵')
27 person4('小周',age=21)
28 
29 # 不定长参数 函数:在参数前面带一个*  把参数放在元组里面
30 def person6(*args):
31     print('我是{},年龄{}'.format(args[0],args[1]))
32 
33 person6('小董',23)
34 
35 def person5(name, *args):
36     print('我是{},年龄{}'.format(name,args))
37 
38 person5('小吴',10, '')
39 
40 # *单独出现,调用的时候通过关键字调用
41 
42 def person9(name,age,*,sex):
43     return name, age, sex
44 
45 print(person9('小田',28, sex=''))
46 
47 # 关键字不定长度参数 函数:参数是字典的形式
48 def person7(**kwargs):
49     print('我是{},年龄{}'.format(kwargs['name'],kwargs['age']))
50 
51 person7(name='小孙', age=24)
52 
53 # *和**同时存在
54 def person8(*args, **kwargs):
55     print(args)
56     print(kwargs)
57 person8('小王',25, sex='')
58 
59 # 顺便说一下解包
60 # 解包: * 解包元组,** 解包字典
61 def person10(*args, **kwargs):
62     print(args)
63     print(kwargs)
64 
65 p1 = ('小马',26)
66 p2 = {'name':'小杨', 'age':27}
67 
68 person10(p1,p2)

 匿名函数

python 使用 lambda 来创建匿名函数。

  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • 虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
1 #!/usr/bin/python
2 # -*- coding: UTF-8 -*-
3  
4 # 可写函数说明
5 sum = lambda arg1, arg2: arg1 + arg2
6  
7 # 调用sum函数
8 print "相加后的值为 : ", sum( 10, 20 )
9 print "相加后的值为 : ", sum( 20, 20 )

 

推荐阅读