Beispiel #1
0
def wrapper():
    filename = 'enclosed.py'

    def show_filename():
        return 'filename {0}'.format(filename)

    print foo.call_func(show_filename)
Beispiel #2
0
# -*- coding:utf-8 -*-
# Author: suke
# At 2015/11/10 16:01

import foo  # 导入foo.py

# func.py
filename = 'func.py'
def showt_filename():
    return 'filename: %s' % filename

if __name__ == '__main__':
    # 实际调用的位置是在foo.call_func函数中
    # 结果 filename: func.py
    # 很显然show_filename()函数使用的filename变量的值,
    # 是在与它相同环境(func.py模块)中定义的那个。
    # 尽管foo.py模块中也定义了同名的filename变量,
    # 而且实际调用show_filename的位置也是在foo.py的call_func内部。
    print foo.call_func(showt_filename)
Beispiel #3
0
def wrapper():
    filename = 'enclose.py'
    def show_filename():
        return 'filename: %s' % filename
    print foo.call_func(show_filename)  # 输出 filename: enclose.py
Beispiel #4
0
def wrapper():
    fileename ="enclosed.py"
    def show_filename():
        return "filename: %s"%filename
    print(foo.call_func(show_filename))    # 输出:filename:enclosed.py
Beispiel #5
0
# 听上去的确有些复杂,还是用一个例子来帮助理解一下,假设我们在foo.py模块中做了如下定义:
filename = "foo.py"
def call_func(f):
    return f()  # 如前面介绍的,f引用一个函数对象,然后调用它


# 在另一个func.py模块中,写下了这样的代码:
import foo

filename = "func.py"

def show_filename():
    return "filename:%s" % filename
if __name__ == "__name__":
    print(foo.call_func(show_filename))  # 注意:实际发生调用的位置,是在foo.call_func函数中
# 当我们用python func.py命令执行func.py时输出结果为:
# python func.py
# 很显然show_filename()函数使用的filename变量的值,是在与它相同环境(func.py模块)中定义的那个。尽管
# foo.py模块中也定义了同名的filename变量,而且实际调用show_filename的位置也是在foo.py的call_func内部

# 而对于嵌套函数,这一机制则会表现的更加明显:闭包将会捕捉内层函数执行所需的整个环境:

# 而对于嵌套函数,这一机制则会表现的更加明显:闭包将会捕捉内层函数执行所需的整个环境:

# enclosed.py
import foo
def wrapper():
    fileename ="enclosed.py"
    def show_filename():
        return "filename: %s"%filename
Beispiel #6
0
#encoding:utf-8

import foo

filename = 'func.py'


def show_filename():
    return 'filename: {0}'.format(filename)


if __name__ == '__main__':

    print foo.call_func(show_filename)