变量作用域
在函数内外都有效的变量就是全局变量(使用global关键字声明)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #声明一个全局变量(不完全正确) mzj = '全身麻醉剂'(局部里仅仅可以进行访问全局变量,不可以进行其他操作)
#声明一个函数(产生一个局部环境) def zui(): #在函数中打印mzj变量 print('在函数内部调用变量mzj',mzj) print('在嘴巴里面拔牙')
#1.正在的环境(函数外部)中是否可以使用 ->变量有效 print('在函数外部调用变量mzj',mzj) #2.在局部环境中检测变量是否有效 -> 变量有效 zui()
真正的全局变量: zai外部声明变量后,函数内部使用global关键字对全局变量进行声明才可以在函数内部任意操作,否则在函数内部只能访问,而不能修改
|
1 2 3 4 5 6 7 8 9 10 11
| def zui():#定义一个函数相当于局部环境 #定义局部变量 mzj = '局部麻醉剂' #调用局部变量 print('在局部环境中调用变量mzj',mzj) print('在嘴巴中拔牙')
#1.在函数外部调用变量看看是否可以使用 -> 不可以访问 #print(mzj) #2.在函数内部调用变量查看是否可以使用 ->可以访问 zui()
|
1 2 3 4 5 6 7 8 9 10 11 12
| def zui(): #提升局部变量为全局变量 global mzj #定义局部变量mzj mzj = '麻醉剂' #在局部环境中调用mzj print('局部环境中调用变量',mzj)
#1.测试函数内部调用 zui() #2.测是外部环境调用 print('在函数外部调用变量',mzj)
|
nonlocal
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| #定义一个函数 def outer(): #定义一个变量 var = 55 #定义一个内部函数 def inner(): #声明外部变量 nonlocal var#当前变量var 不是全局变量也不是局部变量 #在此处使用outer内部定义的var变量 #在此处进行 +1 操作 var = var + 1 print(var)
#调用inner函数 inner()
#调用outer函数 outer()
|
#递归函数
1 2 3 4 5 6 7 8 9 10 11 12
| def digui(num): #1.打印num变量 print(num) #2.检测num是否大于0 if num > 0: #将num -1 传递给函数 digui(num - 1) else: #输出一行横线 print('----------') #3.再次打印num变量 print(num)
|
lambda表达式
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #定义一个求和的函数 def getsum(no1,no2): result = no1 + no2 return result
#调用函数 var = getsum(5,9) print(var) #lambda表达式(汽车) getsum2 = lambda no1,no2 : no1 + no2 #lambda表达式自带return
#调用lambda表达式(函数) var = getsum2(33,55) print(var)
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #带有分支结构的lambda表达式 def getsex(sex): #检测性别返回单词 if sex == '男': return 'man' else: return 'woman'
#调用函数~ result = getsex('女') print(result)
getsex2 = lambda sex : 'man' if sex == '男' else 'woman' #调用函数 result = getsex2('女') print(result)
|
偏函数
偏函数:python中偏函数作用是为了修改一个函数的默认值,而设置的一种特殊函数。
作用:修改函数的默认值,产生一个新的函数,功能和原函数一样,只有默认值不一样!
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #使用偏函数修改函数的默认值 #必须导入额外的模块 import functools #函数工具模块
#定义一个偏函数 print2 = functools.partial(print,end = '') #注意 print2函数和print函数功能完全一致,end的默认值不一样 print('#########') print('@@@@@@@@@') print('&&&&&&&&&')
print2('#########') print2('@@@@@@@@@') print2('&&&&&&&&&')
|