函数的对象
函数是第一类对象
1、函数名是可以被引用的:
name = "zc"
dsb = name
所以name是先定义的,zc是先赋值给name的,然后再定义dsb,然后再引用第一个定义的name.
def index():
print('from index')
a = index
a()
第二种方式:读法是先定义一个index,然后是a = index,调用函数名,可以直接调用,方便简单。
2、函数名可以当做参数传递
def foo(x,y,func):
print(x,y)
func()
def bar():
print("from bar")
foo(1,2,bar)
读法是这样的:
第一步:定义def foo(x,y,func)
第二步:定义def bar()
第三步:调用foo(1,2,bar),bar = func 1,2就是位置参数
第四步:print(1,2) func(), 而func()其实就是bar()
第五步:就是执行bar这个函数。
运行结果就是:
1 2
from bar
3 函数名可以当做返回值使用
传参的时候没有特殊需求,一定不要加括号,加括号当场执行了
def index()
print("from index")
def func(a)
return a
a = func(index)
print(a)
a()
读法:
第一步:定义一个函数index()
第二步:再定义一个函数func(a)
第三步:赋值 a = fun(index), index 赋值给 a,就是a = fun(a)
第四步:执行print(index(a)) 打印 index(a)的地址
第五步:a()其实就是调用index(),执行这个函数,就是print(“from index”)
运行结果就是:
第一行是index(a)的地址:<function index at 0x0000018CED152318>
第二行是执行a(),也就是执行index(),这是什么意思呢?也就是看执行第一行代码了,
func(index) 这是一个调用的函数,返回的是一个值,index赋值给a, a=index,然后往下执行,值就是index,return(a),就是返回a,然后返回的值就是index。然后就是执行index()这条语句了。
def func(): #定义一个函数
print("from func") #函数体
l1 = [1,"2",func,func()] #做一个l1的容器类型,第三个元素是func,第四个元素执行func()函数。所以他是先执行func()函数语句,怎样执行呢?直接调用func()语句,打印print("from func")
f = l1[2] #然后执行第二点,f= func 这个值,是函数名
print(f)
读法:
第一步:先定义一个函数
第二步:立即执行调用func函数里面的内容,print("from func"),打印出来就是from func
第三步:就是列表中第二个元素赋值给f,然后print(f),就是print f 对应的地址。列表元素不是直接存在列表范围内的,而是以地址的形式保存在列表中。
这边还有一个函数代码如下:
def register():
print("register")
def login():
print("login")
def shopping():
print("shopping")
def pay():
print("pay")
func_dic = {"1":register,"2":login,"3":shopping,"4":pay}
def main():
while True:
print("""
1、注册
2、登陆
3、购物
4、付款
5、退出
""")
choice = input("请输入对应的编号:").strip()
if choice == "5":
break
if choice not in func_dic:
continue
else:
func_dic[choice]()
main()
原文地址:https://www.cnblogs.com/medigrat/p/11837563.html
- WAMP配置虚拟主机
- linux开关端口问题
- Python 3.6实现单博主微博文本、图片及热评爬取
- 用Django实现一个可运行的区块链应用
- Python的dict实现原理及与Java的比较探究
- 关于位域如何节省内存(C++)
- mysql的小知识点(关于数据库的导入导出 对于windows)
- Python网络编程中的套接字名和DNS解析
- hdu 4009 Transfer water(最小型树图)
- NumPy二元运算的broadcasting机制
- md5算法原理一窥(其一)
- 实现属于自己的TensorFlow(一) - 计算图与前向传播
- 基于Sanic的微服务基础架构
- hdu 3038 How Many Answers Are Wrong ( 带 权 并 查 集 )
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PDO::getAvailableDrivers讲解
- PDO::_construct讲解
- Yii2.0实现的批量更新及批量插入功能示例
- PDO::inTransaction讲解
- 小程序前后端交互使用JWT
- python文件操作seek()偏移量,读取指正到指定位置操作
- 使用OpenCV去除面积较小的连通域
- 使用vs code编辑调试php配置的方法
- Python OpenCV去除字母后面的杂线操作
- PDO::rollBack讲解
- PyTorch的torch.cat用法
- keras在构建LSTM模型时对变长序列的处理操作
- Discuz不使用插件实现简单的打赏功能
- Pytorch学习之torch用法—-比较操作(Comparison Ops)
- PHP里的$_GET数组介绍