c语言sscanf函数的用法是什么
273
2022-11-26
39 py函数作用域递归函数 变量作用域局部函数 使用lambda
第十课:函数作用域
// python 中的嵌套函数 在一个函数中再定义一个函数
# 小结 :
# 函数作用域:因为:python是动态语言,定义变量的时候是不需要指定变量类型的,这样的话,我们在使用或者定义变量的时候作用域会分不清
# 如果在函数中定义一个变量,而且变量名和该函数上一级的作用域中的变量名相同
# 那么在该函数使用该变量时,就会使用局部变量
# 如果在函数中使用一个变量,但该变量在函数中并没有定义,那么会到该函数上一层的作用域去寻找该变量,如果还没有找到,会继续到上一层作用域去寻找,如果没找到会抛出变量未定义异常
x = 10 # 定义了一个变量 并赋值
def fun1():
x = 100
fun1()
print(x) # 10
y = 123
def fun2():
print(y)
fun2() # 123 在函数中,如果在函数体中没有定义变量的话,首先会在函数体中去找 变量的值,如果没有,就找全局的作用域去找
n = 332
def fun3():
n = 4
print(n)
fun3() # 4 这个和第一个例子有什么区别呢? 多了一个 print(n) 其实这个就是局部作用域,在调用函数的时候就已经算出值了。
def fun4():
print(n)
n = 100
# fun4() 抛出异常
# 定义一个嵌套函数
m = 10
def fun5():
# m = 100
def fun6():
print(m)
print('fun6')
return fun6 # 反映 函数的引用
fun5()() # 100 fun6 调用函数fun6的引用 比如在fun6这个函数中没有定义m 那么就会在上一层 m = 100 找 找到了100 那么就输出100 接下来 如果注释掉m = 100 那么就需要去上一层再找 找了 m = 10 那么就输出10 如果再注释了,那么就找不到了 就会报错
----------------------------------------------------------
第11课:函数的递归
# 函数递归:在一个函数中调用函数本身 自己调用自己
# 阶乘
# n! = 1 * 2 * 3 * ... *n
# n! = (n - 1)! * n n == 0 or n == 1
def jc(n):
# 终止条件
if n == 0 or n == 1:
return 1 # 返回结果为1
else:
return jc(n - 1) * n
print(jc(10)) # 3628800
# 斐波那契数列 : 当前的数列值,表示前2项数列之和
# 0 1 1 2 3 5 8 13 21
# f(n) = f(n - 1) + f(n - 2)
# n == 0 return 0 n == 1 return 1
def fibnonacci(n):
# 终止条件
if n == 0:
return 0 # 直接返回0
elif n == 1:
return 1 # 直接返回1
else:
return fibnonacci(n - 1) + fibnonacci(n - 2)
print(fibnonacci(8)) # 21
--------------------------------------------------------------------------
第十四课: python变量作用域
局部变量: 比如在函数体内 有用
全局变量: 在整个范围内都有用
在py中有3个函数 可以获取局部变量和全局变量
globals: 获取全局范围内所有的变量
locals: 获取当前作用域内的所有变量
vars(object): 获取指定对象范围内所有的变量,如果不指定object ,vars和locals的作用是完全一样的
def hanshu():
name = 'majihui'
age = 30
print(name,age) # majihui 30
print(locals()) # {'name': 'majihui', 'age': 30} 转化为了字典
#print(globals()) #{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x7fb62815d7b8>, '__spec__': None, '__annotations__': {}, '__builtins__':
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~