1 def test(x): # x表明形参 2 ''' 3 2*x+1 4 :param x:整形数字 5 :return:返回计算结果 6 ''' 7 y = 2*x+1 8 return y 9 p = test(3) # test()表示运行名为test函数,3表明实参,给x进行赋值 10 print(p)
函数的定义:code
函数有三种不一样的参数:递归
普通参数
# ######### 定义函数 #########it
# name 叫作函数func的形式参数,简称:形参 def func(name): print name # ######### 执行函数 ######### # 'wupeiqi' 叫作函数func的实际参数,简称:实参 func('wupeiqi')
默认参数class
def func(name, age = 18): print "%s:%s" %(name,age) # 指定参数 func('wupeiqi', 19) # 使用默认参数 func('alex') 注:默认参数须要放在参数列表最后
动态参数 *argstest
def func(*args): print args # 执行方式一 func(11,33,4,4454,5) # 执行方式二 li = [11,2,2,3,3,4,54] func(*li)
动态参数 **kwargs匿名函数
def func(**kwargs): print args # 执行方式一 func(name='wupeiqi',age=18) # 执行方式二 li = {'name':'wupeiqi', age:18, 'gender':'male'} func(**li)
函数的变量可分为 全局变量和局部变量变量
全局变量(大写)lambda
定义:没有缩进的变量程序
局部变量(小写)
定义:子程序下定义的变量
name = 'lhf' # 这里就指全局变量 def change_name(): name = '帅了一比' # 这里就指局部变量 print('change_name', name) change_name() print(name) 结果 change_name 帅了一比 lhf
global声明是全局变量,nolocal指定上一级变量
未声明全局变量
x = 99 def func(): x = 88 func() print(x) #输出99
声明全局变量
x = 99 def func() global x x = 88 func() print(x) #输出88
未指定上一级变量
def func(): count = 1 def foo(): count = 12 foo() print(count) func() #输出1
指定上一级变量
def func(): count = 1 def foo(): nonlocal count count = 12 foo() print(count) func() #输出12
ps: 用的好的都是大牛~
就是函数本身调用本身
特性:
必须有一个明确的结束条件,
每次进入深一层递归时,问题规模都应有所减小
def calc(n): print(n) if int(n / 2) == 0: return n # 当上面的条件成立后一个真值,返回到函数 res = calc(int(n / 2)) print(n,res) return res # 返回res的值,要将真值一层一层传递回去 calc(10)
lambda用法,冒号以前的是入参,冒号以后的是表达式,返回的值,最简单的函数
print [(lambda x:x*x)(x)for x in range(11)] #结果:[0, 1, 4, 9, 16, 25, 36, 49, 64, 81, 100] print (lambda x:x*x)(3) #结果:9 g=lambda x:x*x print g(4) #结果:16