#返回值:return关键字
def fn():
# return "hellow"
'''
关于一个返回值的函数,return为返回fn2函数,面向函数对象,fn2()调用此函数
'''
def fn2():
print("内层函数")
print(id(fn2))
return fn2#面向对象,return fn2()是返回调用函数的值,注意!!!
l=fn()#可以用一个变量进行接值,进行输出。
l()
print(l,id(l))
help(fn)#函数文档描述,可以用来查看自定义函数和全局已经存在的函数。''' '''中间加定义内容
# 如果仅仅写一个return 或者 不写return,则相当于return None ,python解释器会在末尾自动加上NONE
# 在函数中,return后的代码都不会执行,return 一旦执行函数自动结束
#执行结果: 内层函数
#打印函数结果为None#
def fn():
# return 'Hello'
# return [1,2,3]
# return {'k':'v'}
def fn2() :
print('hello')
print(id(fn2))
return fn2 # 返回值也可以是一个函数
r = fn()
r()
print(id(r))
#作用域,即变量生效的范围,分为全局作用域和函数作用域
# 作用域的生效时间和终止时间,全局作用域在程序执行时创建,在程序执行结束时销毁
# 在全局定义的变量,属于全局变量,全局变量可以在程序的任意位置被访问
# 函数作用域
# - 函数作用域在函数被使用时才会被创建,在该函数使用结束销毁
# - 函数每调用一次就会产生一个新的函数作用域
# - 在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
#全局作用域无法修改函数作用域,函数作用域修改全局作用域利用关键字{global 变量}的方式
print(30*"*")
a=100
def fn3(a):
a=80
print(a)
fn3(1)
print(a)
#命名空间实际上就是一个字典,是一个专门用来存储变量的字典,关键字locals()
b=locals()
print(b)
#在全局下使用就是全局命令空间,在函数中使用就是该函数的命名空间,也可以简单理解为全局变量
递归函数练习(递归相当于循环嵌套)
#循环的方式,求一个数的幂值
def power(n, m):
'''
为任意的数字做命运算,产数n,m
n为幂运算的数字
m为幂运算的次数
'''
i=1
j=1
while abs(m)>=i:
i+=1
if m == 0:
return 1
elif m > 0:
j*=n
elif m<0:
j*=1/n
return ("%.2f"%(j))
print(power(2, -2))
#递归的方式
def power(n, m):
'''
为任意的数字做命运算,产数n,m
n为幂运算的数字
m为幂运算的次数
'''
if m == 0:#基线条件
return 1
elif m > 0: #在什么情况下可以进行递归
return n*power(n,(m-1))
#在什么情况下可以进行递归
result=1/n *power(1/n,(abs(m)-1))
return ("%.2f"%(result)) #由于浮点数数运算在计算机中,取的都是近似值,故需要在此去近似值
print(power(2, -2))
#创建一个函数,来检查任意字符串中是否含有回声字符串,有返回true,没有返回false(回声字符串就是正读反读相同的)
def hui_wen(s):
'''
检查函数,若输入的字符串存在回文,返回True,否则返回False
'''
#基线条件
if len(s)<2:
return True
#字符串的长度小于2,一定是回文字符串
elif s[0] != s[-1]:
return False
#递归条件满足,
return hui_wen(s[1:-1])
print(hui_wen("abcba"))