簡體   English   中英

具有不同功能的全局變量問題(使用Python)

[英]Global variable Issues with different functions (using Python)

我正在嘗試創建一個程序,允許我在程序的其他功能中使用列表“用戶”。 我嘗試了參數,將其聲明為“全局”(盡管有人告訴我這樣做是不好的做法),並且我嘗試研究“類”並將其全部實施都無濟於事。 我還嘗試將用戶放入文本文件中,然后從中讀取內容,但這很麻煩,因為我需要將其包含在列表中。 這是我的代碼:

def register():
    global username
    username = raw_input("Enter a username: ").lower()
    firstName = raw_input("Enter your first name: ").lower()
    surname = raw_input("Enter your surname: ").lower()
    age = raw_input("Enter your age: ")
    yearGroup = raw_input("Enter your year group: ")
    users =[[firstName, surname, age, yearGroup]] 

def resultsFunction(): 
    score = 5
    results = [[score, username]]
    results.extend(users)

我努力了:

def register():
    global username
    username = raw_input("Enter a username: ").lower()
    firstName = raw_input("Enter your first name: ").lower()
    surname = raw_input("Enter your surname: ").lower()
    age = raw_input("Enter your age: ")
    yearGroup = raw_input("Enter your year group: ")
  global users 
    users =[[firstName, surname, age, yearGroup]] 

它引發錯誤:

    results.extend(userDetails)
NameError: global name 'userDetails' is not defined

奇怪的是,在聲明用戶名'global'之后(是的,我知道我不應該,但是它起作用了),我能夠在函數中使用用戶名,但是當我嘗試使用其他變量(例如firstName)時,可以嘗試僅在“ resultsFunction”中創建列表,但無法使用。

如果用戶決定不進行注冊,則注冊功能不會一直運行,但是我無法更改它,因為我不希望用戶必須始終輸入其詳細信息。

我很困惑,嘗試了我所知道的一切。 我來這里是最后的選擇,所以我希望有人可以提供幫助,也許這個問題可以幫助其他在局部和全局變量范圍上遇到相同困難的人。

在函數內編寫global users以更改users變量中的值。 否則,您只能讀取它,而不能更改其中的值。

lis = []
def a():
    lis = [1,2]
a()
print(lis)

將打印[]

如:

lis = []
def a():
    global lis
    lis = [1,2]
a()
print(lis)

將打印[1,2]

根據我的理解,請參考您的程序。這可能會有所幫助。

username = ''
user = []
def register():
    global username
    global users
    username = input("Enter a username: ").lower()
    firstName = input("Enter your first name: ").lower()
    surname = input("Enter your surname: ").lower()
    age = input("Enter your age: ")
    yearGroup = input("Enter your year group: ")
    users =[[firstName, surname, age, yearGroup]]
def resultsFunction(): 
    score = 5
    results = [[score, username]]
    results.extend(users)
    print(results)
register()
resultsFunction()

將輸出:-

Enter a username: Foo
Enter your first name: Bar
Enter your surname: Baz
Enter your age: 00
Enter your year group: 00
[[5, 'foo'], ['bar', 'baz', '00', '00']]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM