函数

我们经常需要在同一个程序里多次复用代码。函数可以很好的帮助我们完成这一点。我们在函数里写我们要重复做的事,然后我们在任何需要的时候调用它。我们已经看到一些内建的函数,比如 len(),divmod()。

1.函数的定义

def functionname(params):
    statement1
    statement2

 

 2. 局部和全局变量

举例

def change():
    a = 90
    print(a)
a = 9
print("Before the function call ", a)
print("inside change function", end=' ')
change()
print("After the function call ", a)

Before the function call 9
inside change function 90
After the function call 9

首先我们对 a 赋值 9,然后调用更改函数,这个函数里我们对 a 赋值 90,然后打印 a 的值。调用函数后我们再次打印 a 的值。当我们在函数里写 a = 90 时,它实际上创建了一个新的名为 a 的变量,这个变量只在函数里可用,并且会在函数完成时销毁。所以即使这两个变量的名字都相同,但事实上他们并不是同一个变量。

这里通过关键字 global 来告诉 a 的定义是全局的,因此在函数内部更改了 a 的值,函数外 a 的值也实际上更改了

def change():
    global a
    a = 90
    print(a)
a = 9
print("Before the function call ", a)
print("inside change function", end=' ')
change()
print("After the function call ", a)
Before the function call
9 inside change function 90 After the function call 90

参数取默认值

>>> def test(a , b=-99):
...     if a > b:
...         return True
...     else:
...         return False

如果不传b ,默认取-99

3.高阶函数

高阶函数(Higher-order function)或仿函数(functor)是内部至少含有一个以上步骤的函数:

1.使用一个或多个函数作为参数
2.返回另一个函数作为输出

def high(func, value):
    return func(value)

print (high(len,'zhangwei'))
8

map函数

map 是一个在 Python 里非常有用的高阶函数。它接受一个函数和一个序列(迭代器)作为输入,然后对序列(迭代器)的每一个值应用这个函数,返回一个序列(迭代器),其包含应用函数后的结果。

#! /usr/bin/python
#coding=utf-8
lst = [1, 2, 3, 4, 5]
def square(num):
    "返回一个数的平方"
    return num * num

print(list(map(square, lst)))
#[1, 4, 9, 16, 25]

 

posted @ 2018-08-20 16:52  myself_think  阅读(91)  评论(0)    收藏  举报