老菜的园子

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

定义

文档字符串,help(func)将显示文档字符串;

函数中没有return是,返回的是None;

 

>>> def func1(a):

         "this is a test func"

         print("a=", a)

 

        

>>> help(func1)

Help on function func1 in module __main__:

 

func1(a)

    this is a test func

 

>>> func1(2)

a= 2

参数

参数是否可以修改?

普通变量 – 传值 – 不能修改

List – 引用 – 可以修改

 

关键字参数

好处:每个参数的含义更为清晰;参数出现的顺序不重要;

>>> def func1(a, b):

         "this is a test func"

         print("a=", a)

         print("b=", b)

 

        

>>> func1(b=2, a=1)

a= 1

b= 2

 

参数默认值

>>> def func1(a, b=3):

         "this is a test func"

         print("a=", a)

         print("b=", b)

 

        

>>> func1(1)

a= 1

b= 3

 

收集参数

作用:支持任意个数的参数。

使用方法:需要使用*,** 定义参数。在函数中,前者被定义为list,后者被定义为dict。

反转过程:调用函数时,对tuple、dict类型分别使用*,**,可以将数据展开。

 

>>> def func2(a, *b):

         print("a=", a)

         for x in b:

                   print(x)

 

>>> func2(1,2,3,4,5)

a= 1

2

3

4

5

 

>>> l = range(4)

>>> func2(2, *l)

a= 2

0

1

2

3

 

 

>>> def func3(a, **b):

         print("a=", a)

         for x,y in b.items():

                   print(x, y)

 

                  

>>> func3(1, b=3, c=4, d =5)

a= 1

c 4

b 3

d 5

 

>>> d = {"c":1, "d":2, "e":3}

>>> func3(2, **d)

a= 2

c 1

e 3

d 2

 

作用域

Vars():返回一个dict,包含当前作用域中的变量。

 

局部变量名会屏蔽全局变量名,可以通过globals() 获得全局变量的dict数据结构,然后通过这个;

>>> x = 1

>>> globals()["x"]

1

 

在函数内部可以读取全局变量。进行赋值操作时,将生成局部变量,如果要给全局变量赋值,必须使用global声明全局变量。

>>> y=1

>>> def func4(a):

         global y

         y = a

        

>>> func4(4)

>>> y

4

>>> 

 

>>> z=1

>>> def func5(a):

         z=a

>>> func5(4)

>>> z

1

 

函数可以嵌套定义。

 

函数型编程机制

Lambda表达式

>>> f = lambda x: 2*x

>>> f(3)

6

>>> 

 

Map

Filter

Reduce

posted on 2012-03-04 21:58  weichsel  阅读(280)  评论(0编辑  收藏  举报