Python2.7在函数中放置变量/方法时的作用域问题
我是python新手,注意到这段代码在编写时没有放在函数中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("
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()
我现在明白了。没有它,返回值就没有意义。非常感谢。