簡體   English   中英

Python在函數中使用“全局”以返回新變量

[英]Python using “global” in function to return new variable

我在LPTHW編程和工作方面還比較陌生 我想構建一個函數,該函數將檢查raw_input()是否為數字,然后返回float(input)或僅返回原始輸入(如果不是數字)。

我已經確定input.isdigit()是可以使用的可接受函數,但是現在我正在努力構建該函數,該函數實際上將在if語句編譯后返回變量。 我相信使用global函數將對我有幫助,但是在閱讀了一些文章之后,聽起來好像global不是非常“有效”的工具。

到目前為止,這就是我所擁有的。

def Number_Check(input):
    global input
    if input.isdigit():
        input = float(input)
    else:
        input = input

在外殼中運行此錯誤給我:

SyntaxError: name 'input' is local and global (ex36.py, line 19)

在此方面的任何幫助將不勝感激。

忘記global ,這里就不需要它了; 僅當您想在不同的函數調用之間共享狀態時,才需要使用global。 由於輸入值始終是呼叫的新內容,因此global絕對是您應該使用的值。 嘗試以下方法

def number_check(input):
    """
    if the given input can be converted to a float, return
    the float, otherwise return the input as a string unchanged.
    """
    try:
        return float(input)
    except ValueError:
        return input

# and use like this:

string = raw_input()
number_or_string = number_check(input)

您的代碼中有兩個輸入。 一個是參數,另一個是全局變量。 編譯器不知道您要指的是哪一個。 也許更改其中之一的名稱?

input = input

這沒有任何意義。 您是否要說輸入保持不變? 然后只需刪除else部分! 而且您不需要全局變量。 您可以直接返回值!

暫無
暫無

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

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