1

所以我一直想知道一些我确信有一个非常简单的答案,但我似乎无法理解它。在一个函数中,我如何设置一个全局变量来执行某个任务。例如,我试过:

def function():
    global x
    x = input("Name of variable: ")
    x = print("Working")

我也试过:


def function(Name_Of_Variable):
    global Name_Of_Variable
    Name_Of_Variable = print("Working") 

基本上,我只需要能够在函数中设置一个全局变量。我试图开始工作的实际代码是这样的:


def htmlfrom(website_url):
    import urllib.request
    response = urllib.request.urlopen(website_url)
    variable_for_raw_data = (input("What will this data be saved as: "))
    global variable_for_raw_data
    variable_for_raw_data = response.read()

这就是发生的事情:

>>> htmlfrom("http://www.google.com")
What will this data be saved as: g
>>> g
Traceback (most recent call last):
  File "<pyshell#1>", line 1, in <module>
    g
NameError: name 'g' is not defined

要记住的事情:

  • 蟒蛇 3.3
  • 全局变量(非本地)
4

1 回答 1

1

正如评论中所讨论的:据我所知,不需要全局变量。(如果这真的是你认为你需要的,我很乐意被说服。)

一种更模块化的编程方式是return变量,因此允许您在函数之间传递数据。例如:

import urllib.request # `import` statements at the top! have a look at PEP 8

def htmlfrom(website_url):
    ''' reads HTML from a website 
        arg: `website_url` is the URL you wish to read '''
    response = urllib.request.urlopen(website_url)
    return response.read()

然后假设您想为多个网站运行此功能。dict您可以将 HTML 存储在orlist或其他数据结构中,而不是为每个网站创建变量。例如:

websites_to_read = ('http://example.com',
                    'http://example.org',)

mapping_of_sites_to_html = {} # create the `dict`

for website_url in websites_to_read:
    mapping_of_sites_to_html[website_url] = htmlfrom(website_url)
于 2013-03-22T20:21:52.433 回答