函数名的应用,第一类对象
函数名可以像变量一样进行使用
1. 赋值
2. 作为list的元素
3. 作为参数
4. 作为返回值
5. 函数的嵌套
1. 把函数赋值成变量使用
def main(): print('嗯,这个小伙子挺帅的,打他一顿!') m1 = main # 把函数面赋值给变量名,这样也可以使用 m1() # 直接调用 print(m1,main) # 函数的内存地址 print(m1.__name__) # 查看原函数名 # 输出: # 嗯,这个小伙子挺帅的,打他一顿! # <function main at 0x000002889B3318C8> <function main at 0x000002889B3318C8> # main
2. 作为list的元素进行调用
def m1(): print('这个美女挺漂亮的,带回去! 哈哈') def m2(): print('嗯,这个太帅了,丢进监狱去,') def m3(): print('嗯,这个这个小伙子也一样太帅了,交给警察进行枪毙去') def m4(): print('算了,想不出什么了.') lst = [m1,m2,m3,m4] print(lst) # 相当于直接打印出这几个函数的内存地址 for i in lst: i() # 执行上面的函数的一种方法 lst = [m1(),m2(),m3(),m4()] lst # 这样也是直接执行函数的方法 for i in lst: i # 这样也是直接执行函数的方法 # 注意: 这上面的不要 () 的两种方法,不要一起调用,他调用了列表里面就 # 下面代码调用列表里面就没有值可以调用了 # 输出: # [<function m1 at 0x00000197FD2A18C8>, <function m2 at 0x00000197FD2A1950>,
# <function m3 at 0x00000197FD33A840>, <function m4 at 0x00000197FD33A9D8>] # 这个美女挺漂亮的,带回去! 哈哈 # 嗯,这个太帅了,丢进监狱去, # 嗯,这个这个小伙子也一样太帅了,交给警察进行枪毙去 # 算了,想不出什么了. # 这个美女挺漂亮的,带回去! 哈哈 # 嗯,这个太帅了,丢进监狱去, # 嗯,这个这个小伙子也一样太帅了,交给警察进行枪毙去 # 算了,想不出什么了.
3. 还可以作为函数的参数
def foo(b1): b1() def bar(): print('调用了bar') foo(bar) # 把这个函数作为参数,进行传值,调用这个函数 # 输出: # 调用了bar
4. 把函数作为返回值
def function(): def good(): print('python不好学啊!要自己努力!') print(good) # 打印good函数的内存地址 return good # 返回good函数 ret = function() # 在function函数上,返回good函数 ret() # 执行good函数 print(ret) # 可以看出ret是接收的good函数,因为这里的内存地址和good函数的内存地址一样 # 输出: # <function function.<locals>.good at 0x000001CAFD481950> # python不好学啊!要自己努力! # <function function.<locals>.good at 0x000001CAFD481950>
# 结合上面总结,函数就是一个变量.
5. 函数的嵌套
def main1(): print('执行了main1.') # 第一次打印 def main2(): print('执行了main2') # 第三次打印 def main3(): print('执行了main3') # 第五次打印 print('第二次执行main2.') # 第四次打印 (不在main3函数的内容里,所以在执行main2函数时就会打印) main3() print('第二次执行了main1') # 第二次打印 (不在main2函数的内容里,所以在执行main1函数时就会打印) main2() main1() # 解释: 首先在main1函数里的内容只会读一遍,不会执行,当读到main1()这个时,才会执行 # 里面的内容,打印出第一行,读到main2函数时,也不会执行里面的内容,要遇到main2(),才 # 会执行,读到main2()上一行会打印第二次,因为不在main2函数的内容里,所以在执行main1 # 函数时就会打印,读到main2()时,执行main2函数里面的内容,下面一行内容会打印第三次, # 读到main3函数时不会执行函数main3里的内容,读到main3()上一行时会打印第四次,因为 # 不在main3函数的内容里,所以执行main2()函数时就会打印,读到main3(),执行main3里的 # 内容,第五次打印.(下面的都执行过了不会执行了).
浙公网安备 33010602011771号