python 初识函数2

Posted on 2019-07-01 00:08  S-skill  阅读(256)  评论(0)    收藏  举报

函数名的应用,第一类对象

函数名可以像变量一样进行使用
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里的
# 内容,第五次打印.(下面的都执行过了不会执行了).

 

 

 

 

 

 

 

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3