python里的函数

自定义函数
默认返回None
变量作用域
全局和局部
global

In [10]: def f(step=1):
    ...:     global a
    ...:     a+=step
    ...:

In [11]: a
Out[11]: 1

In [12]: f()

In [13]: a
Out[13]: 2

In [14]: f(2)

In [15]: a
Out[15]: 4

In [18]: def buy(money,product):
    ...:     print("%d元可以买%s"%(money,product))
    ...:

In [19]: buy(5,"袜子")

传递多个参数(列表和字典)

In [25]: arg
Out[25]: [5, '巧克力']

In [26]: buy(*arg)
5元可以买巧克力
In [31]: d={"money":10,'product':'米线'}

In [32]: buy(**d)
10元可以买米线

多参数冗余处理
传值时必须统一,要么全不指定键要么全部指定

def buy(money,product,*arg):
    print("%d元可以买%s"%(money,product))
    print("arg:",arg)
buy(1,"花生",'other','other2')
buy(product="煎饼",money=10);
#buy(product="煎饼",money=10,z='11'); #报错

def buy1(money,product,*arg,**dst):
    print("%d元可以买%s"%(money,product))
    print("arg:",arg)
    print("dst:",dst)
buy1(product="煎饼",money=10,z='11',k=12);

结果

1元可以买花生
arg: ('other', 'other2')
10元可以买煎饼
arg: ()
10元可以买煎饼
arg: ()
dst: {'z': '11', 'k': 12}

类型转化函数
type()
int()
float()
complex()
str()
list()
tuple()
hex()
oct()
chr()
ord()

匿名函数lambda表达式

reduce为逐次操作list里的每项,接收的参数为2个,最后返回的为1个结果

def f(x,y):
    return x+y
from functools import reduce
print(reduce(f,[1,2,3,4,5]));
print("-----reduce-----")
print(reduce(lambda x,y:x+y,[1,2,3])) #6

foo=[0,1,2,3,4,5,6,7,8,9]
print("#####filter####")
r=filter(lambda x:x%3 == 0 ,foo)
print(r);
for i in r:
    print(i)
print("----map---")
m=map(lambda x:x*2+1,foo)
for i in m:
    print(i)

结果

15
-----reduce-----
6
#####filter####
<filter object at 0x000000C57B50B898>
0
3
6
9
----map---
1
3
5
7
9
11
13
15
17
19
View Code

序列处理函数
filter()
zip()
map()
reduce()

posted @ 2018-04-30 13:20  H&K  阅读(112)  评论(0)    收藏  举报