当变量/方法放置在函数内部时,Python 2.7 的作用域问题

标签 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("https://icanhazip.com/")

如上所示,我收到此错误:

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

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

最佳答案

问题是 setup_browser() 内部您正在设置一个名为 driver 的局部变量,但您没有修改全局变量 driver 。为此,您需要使用 global关键字:

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

但是,覆盖 driver全局变量并同时返回它是多余的。最好不要定义 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/")

关于当变量/方法放置在函数内部时,Python 2.7 的作用域问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49331484/

相关文章:

python - "AttributeError: sqrt"计算简单标准偏差时

python - 在 pandas 中访问存储在 s3 上的 HDF 文件

python - 在 Google App Engine + Python 中获取 IP 地址

python - 多维数组的 bool 索引

python - 由于比例因子和偏移量,导入 Python 时 NetCDF 数据精度下降

python - concat + groupby + 应用在 panda dataframe 的多列中

python - 将所有python函数参数转换为json的快速方法

python - 在 Python 中求解 x

python - 在 python 中排序列表

python - 用户提交博客文章后重定向到主页?