开发者社区> 问答> 正文

python怎么调用另一个函数的变量。不用return :报错

def OP():
    web = webdriver.Chrome()
    web.get(r'http://')

def sendstr(M):
    global web
    web.find_element_by_css_selector('')  #2  然后错在这行
     
def U():
    sendstr('linl')    #1 调用sendstr()

这样会提示:NameError: name 'web' is not defined

这样怎么使用web,,,,我用return也无效

一定要放到函数外吗?

展开
收起
kun坤 2020-06-14 07:43:47 606 0
1 条回答
写回答
取消 提交回答
  • web = webdriver.Chrome()#这个应该移到函数外。建议学习一下作用域
    
    def OP():
        web.get(r'http://')
    
    def sendstr(M):
        web.find_element_by_css_selector('')  #2  然后错在这行

     

    ######原来这么写只能放到外面啊######

    要么用面向对象的方式class   self.web .  要么在开始定义全局变量web  加上global

    ######

    两个函数里都要加global

    ######

    用闭包

    再来看看专业的解释:闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数。这个被引用的自由变量将和这个函数一同存在,即使已经离开了创造它的环境也不例外。所以,有另一种说法认为闭包是由函数和与其相关的引用环境组合而成的实体。

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    def make_adder(addend):

        def adder(augend):

            return augend + addend

        return adder

     

    = make_adder(23)

    = make_adder(44)print p(100)print q(100)

     

    运行结果:

    123

    144

    我有建立一个python学习交流群,在群里大家相互帮助,相互关心。相互分享知识,多一个人多一个想法,只有人多的时候遇到问题才会有更多的人帮你解决问题,如果你也是愿意分享,不是单纯的伸手党我欢迎你来群里,先在搜索框里面加301 在加上056 最后是051 这样你就可以找到组织大家一起来分享

    ######建议用面向对象形式。######

    命名规范建议:建议函数的名字尽量小写,必要时用下划线分隔以增加可读性。

    2020-06-15 11:08:58
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载