定义函数 >>> def add(n1,n2):... print n1+n2...>>> type(add)<type 'function'>>>> add(11,33)44>>> bb =
定义函数
>>> def add(n1,n2):... print n1+n2...>>> type(add)<type 'function'>>>> add(11,33)44>>> bb = add(11,22)33>>> print bbNone>>> bb>>> def add(n1,n2):... return n1+n2...>>> bb = add(11,22)>>> print bb33>>> bb33>>> 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 :枚举