废话不BB,都在代码里。
# 传入元组
def func(x,*arg):
result = (x)
for i in arg:
result += (i)
return result
# 传入元组和字典
def func2(*args,**kwargs):
print(args)
print(kwargs)
# 递归
def fib(n):
if n == 0 or n == 1:
return n
else:
return fib(n-1)+fib(n-2)
# 函数传参
def fool(func):
print(func(1,2,3))
# 内建函数zip()
a= ['a','b','c','d']
b = [1, 2, 3]
for k,v in zip(a,b):
print((k, v))
# 函数嵌套
def foo():
a= 3
def bar():
print('in')
return a
print('out')
return bar
# lambda表达式
def lam(nums):
l = lambda x: x+3
n = []
for i in nums:
n.append(l(i))
return n
x= 2
def funcx():
global x
x = 9
# 闭包:在一个内部函数中,对外部作用域的变量进行引用
def func3(x):
def fun4(y):
print(x+y)
return x+y
# 没括号是返回函数对象本身
return fun4
def func5():
x = 1
def fun6():
x = 2
print('x::'+str(x))
print ('---' + str(x))
#有括号就已经调用了
return fun6()
# 装饰器,顾名思义,就是增强函数或类的功能的一个函数。
def _calc(func):
def wrapper(*args,**kwargs):
print(func.__name__)
return func(*args,**kwargs)
return wrapper
@_calc
def fooo():
print('i love py')
#
def _calcl(txt):
def _calc(func):
def wapper(*args,**kargs):
print('%s----------%s'%(txt,func.__name__))
return func(*args,**kargs)
return wapper
return _calc
@_calcl('AAAAAAAAA')
def foooo():
print('zzzzzzzzzzz')
# 静态方法,不需要表示自身对象的self和自身类的cls参数,就跟使用函数一样
@staticmethod
# 类方法,不需要self参数,但第一个参数需要是表示自身类的cls参数。
@classmethod
def test():
pass
if __name__ == '__main__':
print(func(1,2,3))
func2((1, 2, 3),{"a": 1, "b": 2})
fool(func)
f = foo()
print(f())
print(lam([1,2,3,4,5]))
# 过滤器
print(list(filter(lambda c:c!='l','hello')))
# 闭包
f1 = func3(3)
f2 = func5()
print(f1,f1(1))
print(f2)
#装饰器
fooo()
foooo()