python中的函数

python中的函数

函数是个好东西,我觉得函数要比类用的更多,函数化编程从维护和开发中都带来了很多方便,函数就好比是模块,程序是由多个函数模块组装起来的乐高玩具

函数基本定义

python中定于函数使用def关键字,如下:

1
2
3
4
5
6
def func(argv):
"""
这是注释
"""

somecode
return something

其中func()就是一个函数,argv是函数的参数不是必须的,return 也不是必须的,没有return 就意味着函数只是执行,没有返回值是None
定义函数是不会执行函数的,上面我们只是定义了一个名为func的函数,并没有被执行,只有函数被调用的时候才会被执行

__doc__ 是函数的文档信息也就是注释信息

1
2
3
4
5
6
7
def func():
"""
This is Comments
"""

return 'a'
print(func.__doc__)
This is Comments

上面2段3个双引号之前的内容就是文档信息,当然如果你想重新定义doc 也是可以的如下:

1
2
3
4
5
6
7
8
def func():
"""
This is Comments
"""

func.__doc__ = "Comments"
return 'a'
print(func.__doc__)
Comments

这样就可以把doc重新定义了

__name__返回函数的命名空间名称

是不能被重定义的,当def 或者lambda都会产生一个新的命名空间

1
2
3
4
5
6
7
8
def func():
"""
This is Comments
"""

func.__name__ = "I am not func"
return 'a'
print(func.__name__)
func

__module__ 返回函数定义所在模块的名字

我们先写一个test.py 在里面定义个func ,然后在写一个test2.py import test.py 中的func 然后打印func.module
输出test,也就是说 func 这个函数是在test.py这个模块里面的

1
2
3
4
5
6
7
8
9
10
11
12
# test.py
def func():
"""
This is Comments
"""

print(func.__moudle__)
return True

# test2.py
from test import func
print(func.__module__)
test

函数的参数

参数分为4种

1. func(a)      # a这个参数只是一个形参只是一个占位符在传递的时候我们可以使用 func(1) 或者func(a=1),如果直接使用func()就会报错,
2. func(a=3)    # a这个参数相当于实参,也就说说参数a有一个默认值是3,在传递的时候如果不专递a,那么就使用默认的3 例如:func()
3. func(*arg)   # arg 任意多个实参的集合,且类型的是tuple,调用的使用我们可以传递任意参数func(1,2,3,4,5)
4. func(**argv) # argv 同样任意    多个参数和一个*号的区别 是他必须指定形参和实参,是一个字典类型func(a=1,b=3,c=5)
5. 传递顺序问题 func(a,a=3,*arg,**argv)当多种参数一起传递的时候,一定是这样子的传递顺序,否则会报错

举例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 第一种
def func(a):
print(a)
func(1)
1

# 第二种
def func(a=3):
print(a)
func()
3
func(4)
4
func(a=5)
5

# 第三种
def func(*argv):
print(argv)

argv = (1,2,3)
func(*argv)
(1,2,3)

# 第四种
def func(**some):
print(some)
some = {"name":"Seal","class":12}
func(**some)
{"name":"Seal","class":12}

lambda表达式,是一个单行的函数表达式属于匿名函数,不需要return语句 会自动return

lambda更简洁,这个符合python的精神 “Simple is better than complex.(简洁胜于复杂)”,其实lambda是一个很好用的东西在很多地方都可以使用

1
2
3
4
5
6
7
8
9
10
11
# 2个数相加
def func(a,b):
print a+b

# lamdba
a = lambda a,b: a+b

func(2,3)
5
a(2,3)
5

文章目录
  1. 1. python中的函数
  2. 2. 函数基本定义
  3. 3. __doc__ 是函数的文档信息也就是注释信息
  4. 4. __name__返回函数的命名空间名称
  5. 5. __module__ 返回函数定义所在模块的名字
  6. 6. 函数的参数
  7. 7. lambda表达式,是一个单行的函数表达式属于匿名函数,不需要return语句 会自动return