函数的对象、嵌套及作用域

1、函数的对象

函数的第一类对象的含义是函数可以被当做数据处理

# def func(): #func=<function func at 0x0584BA50>
# print('from func')
# print(func) #打印函数名的地址 加括号即调用函数内容
(1)引用
def func(): #func=<function func at 0x0584BA50>
print('from func')
f=func
print(f)
f()
2)把自己当成个参数传给函数
def func(): #func=<function func at 0x0584BA50>
print('from func')
def foo(m):
# print(m)
m() #现在m就等于func,加括号就返回func函数的内容
foo(func)

3、可以当作函数的返回值
def func(): #func=<function func at 0x0584BA50>
    print('from func')
def foo(x): #x=func
return x #return func
res=foo(func)
print(res) #打印了func函数的内存地址
res() #返回了func的内容

4、可以当作容器类型的元素
def func(): #func=<function func at 0x0584BA50>
print('from func')
l=[func,]
print(l) #打印函数内存地址
# l[0]() 通过列表的索引取到函数的内存地址,加括号,返回函数内容
 
 
func_dic={
'1':pay,
'2':withdraw,
'3':transfer,
'4':check_balance,
'6':shopping
}

while True:
msg="""
1 支付
2 取款
3 转账
4 查看余额
5 退出
6 购物
"""
print(msg)
choice=input('>>: ').strip()
if choice == '5':break
if choice not in func_dic:
print('输入的指令不存在傻叉')
continue
func_dic[choice]()
 
2、函数的嵌套定义
def f1():
def f2():
print('from f2')
f2()
f1()

# from math import pi
# def circle(radius,action='area'): 求面积和周长
# def area():
# return pi*(radius **2 )
# def perimeter():
# return pi *2*radius
# if action == 'area':
# return area()
# if action == 'perimeter':
# return perimeter()
# print(circle(15))
# print(circle(15,action='perimeter') )

函数嵌套的调用
def max2(x,y):
if x>y:
return x
else:
return y
def max4(a,b,c,d):
res1=max2(a,b)
res2 = max2(res1,c)
res3= max2(res2,d)
return res3
print(max4(2,3,4,5))

3、名称空间与作用域
(1)名称空间是存放名字与值绑定关系的地方
2)名称空间分为三大类
内置名称空间:存放python解释器自带的名字(在解释器启动时生效,在解释器关闭时失效)
全局名称空间:除了内置与局部名字外,其余都是全局名称空间(在文件执行时生效,在文件执行完毕时失效)
局部名称空间:用于存放函数调用期间函数体产生的名字(如果调用某个函数才会临时生效,在函数执行完毕后失效)

(3)三种名称空间的加载顺序是:
内置-》全局-》局部
(4)、作用域

作用域:
    域指的是区域、范围,作用域即作用的范围

全局作用范围,全局作用域(内置名称空间与全局名称空间)
全局有效,全局存活
局部作用范围,局部作用域(局部名称空间)
局部有效,临时存活
 
 
(5)函数对象+作用域:******
x=1

def f1()
def inner():
# print('from inner',x)
# return inner
#
# f=f1()
#
# # print(f)
#
# def bar():
# x=1111111111111111111111111111111111 #
作用域关系是在函数定义阶段就固定死了,但凡调用函数都需要跑到定义阶段去找作用域关系

# f()
#
# bar()










 

转载于:https://www.cnblogs.com/quqinchao/p/qqc_hs.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python 中,函数作用域指的是变量的可访问性和可见性。Python 中的函数作用域有以下几种: 1. 全局作用域(Global Scope):全局作用域中定义的变量可以在整个程序中访问。可以使用 `global` 关键字在函数内部显式地声明一个全局变量。 2. 局部作用域(Local Scope):局部作用域中定义的变量只能在函数内部访问。这些变量在函数被调用时创建,并在函数执行结束后销毁。每次函数调用都会创建一个新的局部作用域。 3. 嵌套作用域(Enclosing Scope):嵌套作用域是指定义在一个函数内部的另一个函数中的作用域。内部函数可以访问外部函数中定义的变量,但是外部函数不能访问内部函数中定义的变量。 下面是一个示例,演示了函数作用域嵌套作用域的概念: ```python def outer_function(): outer_var = "I'm in outer function" def inner_function(): inner_var = "I'm in inner function" print(inner_var) # 可以访问内部变量 print(outer_var) # 可以访问外部变量 inner_function() # print(inner_var) # 错误!外部函数无法访问内部变量 outer_function() # print(outer_var) # 错误!全局作用域无法访问局部变量 ``` 在这个示例中,`inner_function` 是一个嵌套在 `outer_function` 中的函数。内部函数可以访问外部函数中定义的变量 `outer_var`,但是外部函数无法访问内部函数中定义的变量 `inner_var`。全局作用域也无法访问局部变量或内部函数的变量。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值