定义函数
>>> def add(n1,n2):
... print n1+n2
...
>>> type(add)
<type 'function'>
>>> add(11,33)
44
>>> bb = add(11,22)
33
>>> print bb
None
>>> bb
>>> def add(n1,n2):
... return n1+n2
...
>>> bb = add(11,22)
>>> print bb
33
>>> bb
33
>>> c = add
>>> c(11,22)
33
>>> id(c)
140381409654976
>>> id(add)
140381409654976
>>>
函数递归了
>>> def f():
... return add
...
>>>
>>> cc = f()
>>> type(cc)
<type 'function'>
>>> cc(23,23)
46
>>> def f():
... def add(n1,n2):
... return add
... return add
...
>>> cc = f()
>>> type(cc)
<type 'function'>
>>> cc(11,22)
<function add at 0x7fad180e3230>
>>>
全局变量 global,不建议使用
>>> def f01(n1,n2):
... return n2,n1
...
>>> f01(11,22)
(22, 11)
>>> ()
()
>>> def f02(n1,n2):
... return n1*10 ,n2*100
...
>>> f02(11,22)
(110, 2200)
>>> def f03(n1,n2): //在函数里面调用函数
... return f02(n2,n1)
...
>>> f03(11,44)
(440, 1100)
>>>
>>> def add(n1,n2):
... return n1+n2
...
>>> add(11,22)
33
>>> add(11,22,33) //函数只定义了两个参数,传入三个参数就会报错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes exactly 2 arguments (3 given)
>>>
>>> def add(l):
... s=0
... for i in l:
... s += i
... return s
...
>>> add([11,22,33,44,55])
165
>>> sum([11,22,33,44,55])
165
>>> def add(l):
... return sum(l)
...
>>> add([11,22,33,44,55]) //传参进去,传一个列表进去
165
>>> add(11,22,33,44,55) //这里将会把他们当作五个参数
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes exactly 1 argument (5 given)
>>>
传不定长参数,这里的args可以为其他任意字母
传参
字典的传参 **kwargs 定义字典的参数
return 只是返回值,需要告诉他怎么处理
**定义关键字参数,必须写在后面
*args ,**kwargs //args 表示非关键字参数的元组,kwargs表示关键字参数的字典,非关键字参数必须在后面
定义默认参数
is 用来比较两个变量是否指向同一个内存地址,可以用==代替
set (集合):无序不重复的元素集
a = set(list) //将列表转化为集合
匿名函数 lamda
@装饰器 改变函数的行为,装饰器接受函数作为参数,返回一个新的函数
yield 相当于一个发射器,每次只发送一发子弹,用一个生成一个,相当于生成器
反向打印字符串,
jion方法:
yield方法
eval
exec 将字符串参数,作为python脚本运行
filter(function,sequence)//将序列传给函数处理
reduce
reduce指定初始值
zip sequence循环
自定义排序
enumerate :枚举