python-函数的对象、函数嵌套、名称空间和作用域
函数的对象
python中一切皆对象
函数对象的四大功能
引用
def f1():
print('from f1')
f1() #调用函数
print(f1)
print('*'*50)
f = f1 # 将函数名f1赋值给f
f() # f也可以调用函数
print(f)
from f1
<function f1 at 0x000001FB05534620>
**************************************************
from f1
<function f1 at 0x000001FB05534620>
函数名相当于一个变量名,既能接收函数体返回的值,也能赋值。
当做参数传给一个函数
def f1():
print('from f1')
def f2(a):
return a
f3 =f2(f1)
f3()
print(f3)
from f1
<function f1 at 0x00000275FA914620>
可以当做函数的返回值
def f1():
print('from f1')
def f2():
return f1
f3 =f2()
f3()
print(f3)
from f1
<function f1 at 0x0000014931304620>
可以当做容器类型的元素
def f1():
print('from f1')
l = [1,2,3,f1]
l[3]()
from f1
函数的嵌套
函数的嵌套定义
函数内部定义的函数,无法在函数外部使用内部定义的函数。
函数的嵌套调用
from math import pi
def circle(r,action):
if action == 'p':
def perimeter():
return 2 * pi * r
res = perimeter()
elif action == 'a':
def area():
return pi * r**2
res = area()
else:
return ' '
return res
result = circle(2,'p')
print(result)
12.566370614359172
名称空间与作用域
名称空间
内存存储变量名与变量间的绑定关系的空间(存放变量名的空间),这个空间被称为名称空间。
内置名称空间
内置名称空间:存放python解释器自带的名字,如:int、float、len等
len()
int()
生命周期:在解释器启动时生效,在解释器关闭时失效。
全局名称空间
全局名称空间:除了内置和局部的名字之外,其余都存放在全局名称空间,如:x、func、l、z
生命周期:在文件执行时生效,在文件执行结束后失效。
局部名称空间
局部名称空间:用于存放函数调用期间函数体产生的名字。
def f1():
x = 1
def f2(): # f2就是局部名称空间
pass
f2()
生命周期:在文件执行函数调用期间时生效,在函数执行结束后失效。
加载顺序 (考试必考)
内置名称空间—>全局名称空间—>局部名称空间
查找顺序 (考试必考)
从当前名称空间开始查找,然后逐步往上,如果当前为局部,则顺序为局部—>全局—>内置
作用域
作用域:作用的区域
作用域关系在函数定义阶段就已经确定好了
函数与函数之间可能会有相同名字的变量,但是这个两个变量毫无关系,作用域不同
全局作用域
适用于全局+内置,即全局可以修改内置的,内置也可以修改全局的
局部作用域
只适用于局部范围,在局部定义的名字只能在局部获取
x =100
def f1():
x =1
print(x) # 定义阶段
f1()
1
global 局部修改全局 (了解,面试常用)
x =100
def f1():
global x
x =1
# print(x)
f1()
print(x)
1
nonlocal 把局部改成外部
xxxxxxxxxx9 1 def f1():2 x =13 def f2():4 nonlocal x 5 x =36 f2()7 print(x)8f1()93pythono
python-函数的对象、函数嵌套、名称空间和作用域的更多相关文章
- python--函数的返回值、函数参数的使用、名称空间与作用域、函数嵌套、函数对象
今天学习内容有函数的返回值.函数参数的使用.名称空间与作用域.函数嵌套. 下来我们一一查看. 函数的返回值 看几个栗子: def func(x): y=func() print(y) def foo( ...
- Python 函数对象-函数嵌套-名称空间与作用域-闭包函数
今日内容: 1. 函数对象 函数是第一类对象: 指的是函数名指向的值可以被当中数据去使用 1.可以被引用 2.可以当做参数传给另一个函数 3.可以当做一个函数的返回值 4.可以当做容器类型的元素 2. ...
- 【0809 | Day 12】可变长参数/函数的对象/函数的嵌套/名称空间与作用域
可变长参数 一.形参 位置形参 默认形参 二.实参 位置实参 关键字实参 三.可变长参数之* def func(name,pwd,*args): print('name:',name,'pwd:',p ...
- day12 函数对象,名称空间与作用域
""" 今日内容: 1.函数参数传值细节 2.三元表达式 3.列表及字典推导式 4.函数对象 5.名称空间与作用域 6.函数的嵌套定义初识 ""&qu ...
- day11-函数对象、名称空间和作用域
目录 函数对象 函数的嵌套 名称空间和作用域 内置名称空间 全局名称空间 局部名称空间 作用域 全局作用域 局部作用域 global和nonlocal 函数对象 在Python中,一切皆对象,函数也是 ...
- python全栈开发-Day9 函数对象、函数嵌套、名称空间与作用域
一 .函数对象 一 .函数是第一类对象,即函数可以当作数据传递 可以被引用 可以当作参数传递 返回值可以是函数 可以当作容器类型的元素 二. 利用该特性,优雅的取代多分支的if def foo(): ...
- Python入门之函数的嵌套/名称空间/作用域/函数对象/闭包函数
本篇目录: 一.函数嵌套 二.函数名称空间与作用域 三.函数对象 四.闭包函数 ============================================================ ...
- python第十二天, 三元表达式, 函数对象,名称空间与作用域,函数的嵌套定义
复习 1. 字符串的比较: 2. 函数的参数:形参与实参 3. 实参的分类:位置实参与关键字实参 4. 形参分类: 1.无值位置形参 2.有值位置形参 3.可变长位置形参 4.有无值关键字形参 5.可 ...
- python之函数对象、函数嵌套、名称空间与作用域、装饰器
一 函数对象 一 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 #3 返回值可以是函数 #3 可以当作容器类型的元素 二 利用该特性,优雅的取代多分支的if de ...
- python基础知识13---函数对象、函数嵌套、名称空间与作用域、装饰器
阅读目录 一 函数对象 二 函数嵌套 三 名称空间与作用域 四 闭包函数 五 装饰器 六 练习题 一 函数对象 1 函数是第一类对象,即函数可以当作数据传递 #1 可以被引用 #2 可以当作参数传递 ...
随机推荐
- NET Core 2.1 Global Tools
微软工程师Nate McMaster的博文.NET Core 2.1 Global Tools https://natemcmaster.com/blog/2018/05/12/dotnet-glob ...
- HDU 1087 E - Super Jumping! Jumping! Jumping! DP
http://acm.hdu.edu.cn/showproblem.php?pid=1087 设dp[i]表示去到这个位置时的最大和值.(就是以第i个为结尾的时候的最大值) 那么只要扫描一遍dp数组, ...
- Nginx中的Rewrite的重定向配置与实践
阅读目录 一:理解地址重写 与 地址转发的含义. 二:理解 Rewrite指令 使用 三:理解if指令 四:理解防盗链及nginx配置 简介:Rewrite是Nginx服务器提供的一个重要的功能, ...
- h5复制粘贴板,打开APP功能
<div class="container"> <img src="../themes/mall/img/i_red_ad4.jpg"> ...
- MVC 知识点总结
[此篇文章收录于其他博客,作为笔记使用] 一· MVC MVC设计模式->MVC框架(前端开发框架),asp.net(webform) aspx M:Model (模型,负责业务逻辑处理,比如 ...
- Linux环境 Java内存快速查看
最近生产环境遇到内存老是占用很大的情况,16G的内存Free的内存只剩100多M,仿佛一颗定时炸弹一般,说不定就服务Down了.于是开始网上不断的找查看内存使用的方法.现学现卖,以下通过一个例子来演示 ...
- 第二十章 排查和调试Web程序 之 设计异常处理策略
1. 概述 本章内容包括: 多层架构中的异常处理.使用global.asax 或 自定义的HttpHandler 或 web.config中的属性来显示特定的错误页.处理 first chance 异 ...
- css 居中问题总结
html代码: <div class="box"> <div class="box-item"> 文字 </div> < ...
- ionic 2 起航 控件的使用 客户列表场景(二)
首先放出我hithub项目代码例子,有兴趣研究探讨的同学可以去看看 https://github.com/linyuebin2016/ionic2.git 下面我们来尝试下第一个项目场景 一份客户的列 ...
- Java中方法的继承以及父类未被子类覆盖的方法调用的问题
在看java继承这一块的时候发现了一个问题,即父类未被子类覆盖的方法是如何调用的? 是子类拥有了父类的该方法只是没有显示表示,还是子类调用了父类的该方法. 为此做了一下验证 代码如下: public ...