我认为使用return函数会使放置在它后面的变量传递到我的函数之外(返回?)。好像没有,为什么不呢?
我正在尝试编写一些代码,要求我编译一个函数内5个项目的列表,然后将该列表传递给函数外并对其进行一些处理。现在,我只在其外部编写了一条打印语句,只是试图查看它是否在我的函数之外传递,但是以后需要做更多的事情。它告诉我变量未定义,所以我假设它没有被传递。
为什么在return命令之后放置的列表变量不会在函数外部传递并可以自由使用,我需要做些什么,以便实际上可以在函数外部调用列表变量?
#Gather data about elements and turn into a list to check agsint function list later
!curl https://raw.githubusercontent.com/MicrosoftLearning/intropython/master/elements1_20.txt -o elements1_20.txt
elements_20 = open("elements1_20.txt","r")
elements_20.seek(0)
elements = elements_20.readline().strip()
element_list = []
while elements:
element_list.append(elements)
elements = elements_20.readline().strip()
print(element_list)
# define function to get user input and compile it into a list
def get_name():
user_list = []
while len(user_list) < 5:
user_input=input("Name one of the first 20 items please kind sir: ")
#check to make sure the input is unique
if user_input.lower() in user_list:
print("please don't enter the same word twice")
else:
user_list.append(user_input.lower())
return user_list
get_name()
print(user_list)
请注意,我需要函数不带任何参数,因此不能使用该方法作为解决方案。
答案 0 :(得分:1)
您需要将返回的值从class test {
function callback(){
echo "Test okay ";
}
}
class classload{
var $class_instance;
function __construct(){
spl_autoload_register (array( $this , 'library' ));
}
public function __call ($fn , array $args ){
if(isset( $this ->{ $fn })){
array_unshift( $args , $this );
call_user_func_array ( $this ->{ $fn }, $args );
}
}
function library($class){
$this->{$class} = new $class($this);
//$this->class_instance = ${$class};
return $this;
}
}
class classtwo {
protected $load;
function __construct(){
$this->load = new classload();
}
}
class Classone extends classtwo {
function view(){
//load and initialise class
$this->load->library('test');
// print_r($this->load->library('test'));
echo $this->test->callback();
}
}
$init = new classone();
echo $init->view();
保存到函数范围之外的名为get_name()
的变量中,以便进行打印:
user_list
在不存储返回值的情况下,该函数将自行完成,将其返回到堆栈中,然后该值将被任何内容捕获,然后被取消引用。 #Storing the returned value from the function:
user_list = get_name()
print(user_list)
在函数主体内的分配仅在函数范围内适用。一旦返回,程序将不再“看到”任何名为user_list
的变量,这将导致user_list
语句失败。