Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 依赖于外部函数中对象的嵌套函数是否可以分离到另一个.py文件以清理代码?_Python_Nested Function - Fatal编程技术网

Python 依赖于外部函数中对象的嵌套函数是否可以分离到另一个.py文件以清理代码?

Python 依赖于外部函数中对象的嵌套函数是否可以分离到另一个.py文件以清理代码?,python,nested-function,Python,Nested Function,对不起,如果这个问题听起来太笼统,但我有一个动机。 假设在python中,我们首先启动这样一个函数 def f1(arguments): #insert some statements such as x=27 yz=['string'] return(whatever) 然后继续在f1中插入一个函数,使整个代码变为 def f1(arguments): #insert some statements such as x=27 y

对不起,如果这个问题听起来太笼统,但我有一个动机。 假设在python中,我们首先启动这样一个函数

def f1(arguments):
   #insert some statements such as
   x=27
   yz=['string']
  return(whatever)
然后继续在f1中插入一个函数,使整个代码变为

def f1(arguments):
       #insert some statements such as
       x=27
       yz=['string']
       def f2():
          newthing=x
       #more code for f2
         return(whatever)

       #rest of code for f1
    return(whatever from f1)
请注意,f2中的“newthing”取决于f1中的某些内容。。。在实践中,当所有这些代码都显式地写在同一个.py文件中时,它似乎工作得很好。但我的问题是:


假设我想在一个单独的f2.py文件中编写f2的代码,这样就不必在f1.py中显式地显示代码。也许f2中的代码是很长的,如果表面上能清理一下就好了。是否可以使用一些导入语句来执行此操作?或者我担心f1和f2的明显纠缠是对的,在这种情况下这是不可能的?f1依赖于f2,而f2依赖于f1

不,你不能那样做。Python使用词法作用域
f2()
只能引用
f1()
的函数,如果它是文本嵌套的


如果要分离函数,应该将所需的变量作为参数和返回值传递。

我认为最好在f1之外声明f2,在f1中调用f2

def f2(value): 
   blah blah blah 


def f1: 
   value = 4
   f2(value) 
   blah blah blah 
希望这有意义