Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.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
Python2.7在函数中放置变量/方法时的作用域问题_Python - Fatal编程技术网

Python2.7在函数中放置变量/方法时的作用域问题

Python2.7在函数中放置变量/方法时的作用域问题,python,Python,我是python新手,注意到这段代码在编写时没有放在函数中 from selenium import webdriver driver = lambda: None def setup_browser(): # unnecessary code removed driver = webdriver.Firefox() return driver setup_browser() driver.set_window_size(1000, 700) driver.get("

我是python新手,注意到这段代码在编写时没有放在函数中

from selenium import webdriver

driver = lambda: None

def setup_browser():
   # unnecessary code removed
    driver = webdriver.Firefox()
    return driver

setup_browser()
driver.set_window_size(1000, 700)
driver.get("https://icanhazip.com/")
如上所示,我得到了以下错误:

`AttributeError: 'function' object has no attribute 'set_window_size'

我的理解是驱动程序在被调用之前并没有被更新。这是为什么?

问题在于,在
设置\u browser()
中,您正在设置名为
驱动程序的局部变量,但您没有修改全局变量
驱动程序
。为此,您需要使用
global
关键字:

def setup_browser():
    global driver
    driver = webdriver.Firefox()
    return driver
但是,重写
驱动程序
全局变量并同时返回它是多余的。最好不要将
驱动程序
全局定义为空函数,而是直接分配它。例如:

from selenium import webdriver

def setup_browser():
    driver = webdriver.Firefox()
    return driver

driver = setup_browser()
driver.set_window_size(1000, 700)
driver.get("https://icanhazip.com/")

driver=setup\u browser()
我现在明白了。没有它,返回值就没有意义。非常感谢。