Python函数认识
变量
昨天学习了函数基本定义和函数的参数,今天接着学习函数,先来认识下变量,跟其他语言一样,变量之间的区别就是变量的作用域不一样,Python中的变量分为全局变量和局部变量。详细解释如下:
(1). 全局变量:顾名思义,定义在函数外的变量,可以在整个程序内访问的就是全局变量,也可以说没有缩进的变量就是全局变量。
(2). 局部变量:顾名思义,定义在函数内的变量,只能在函数内部访问的就是局部变量,也可以说有缩进的变量就是局部变量。
name = 'mary' #全局变量
def change_name():
print(name)
change_name()
def change_name1():
name = 'li' #局部变量
print(name)
change_name1()
1.全局变量和局部变量的调用
(1). 如果没有局部变量会直接调用全局变量
name = 'mary' #全局变量
def change_name():
print(name) #调用全局变量
change_name() #调用函数
(2). 如果全局变量和局部变量同名,则调用局部变量
name = 'mary' #全局变量
def change_name1():
name = 'li' #局部变量
print(name) #调用局部变量
change_name1() #调用函数
(3). 如果函数中有global关键字声明的局部变量,则这个局部变量指向全局变量
name = 'mary' #全局变量
def change_name2():
global name #声明全局变量,必须放在调用此变量之前
name = 'pick' #修改全局变量
print(name) #调用全局变量
change_name2() #调用函数
注意:上面写的是变量的调用规则,感觉很容易混淆,所以呢,如何避免这个问题呢,编程时,默认规则是全局变量全部大写,局部变量全部小写,有没有突然感觉前面学的没用了,其实不然,还有就是global关键字的使用,使用后全局变量如何变化,这就要看数据类型是不是的可变的啦。
Python函数递归
1.定义
在调用函数时,直接或间接调用函数本身,这个过程就是递归def sub(n):
print(n)
n = n-1 #减小问题规模
if n > 0 : #结束条件
sub(n) #调用本身
sub(10)
2.特性
(1). 必须有一个明确的结束条件
(2). 每次递归都是让规模变小
(3). 递归层次越多,效率越低,且存在栈溢出风险
Python匿名函数
python 使用 lambda 来创建匿名函数,lambda只是一个表达式,lambda的主体是一个表达式,而不是一个代码块,lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
lambda [arg1 [,arg2,.....argn]]:expression
例子:
def calc(x): #一般函数
return x+1
print(calc(10))
fun = lambda x:x+1 #匿名函数
print(fun(10))
Python函数--return语句
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。支持返回函数。
def calc(x):
return x+1 #返回值表达式
print(calc(10))