簡體   English   中英

需要 Python3 的幫助

[英]Need help for Python3

def a(inp):
    i = 0
    x = 0

    for i in range(len(inp)):
        b(x)
        print(x)

def b(x1):
    x1 = x1 + 1

def c ():
    a1 = a("...")

c() 

此代碼給出 output:

0
0
0

我不明白為什么x值不會改變?

Python 有可變和不可變事物的概念。 可變的東西包括列表、字典等。但是 integer 是不可變的,所以當你改變它時,你必須重新分配它。

例如

def b(l):
    l += [1]


a= [1,2,3]
b(a)
print(a)

def c(l):
    l += 1


a= 1
c(a)
print(a)

此代碼與 output

[1, 2, 3, 1]
1

因為 int 是不可變的,而 list 是可變的。 有關更多信息,您可以查看https://www.geeksforgeeks.org/mutable-vs-immutable-objects-in-python/

x1 = x1 + 1不能改變x x作為 value* 傳遞給b 重新分配x1只會改變x1正在查看的值。 從 function 返回值並在調用站點重新分配它是實現您想要的最簡單的方法:

 . . .
    for i in range (len(inp)):
        x = b(x)
        print(x)

def b(x1):
   return x1 + 1

*它比這稍微復雜一些,但這是目前在處理數字時考慮它的最簡單方法。

您的 function b(x1)中的x1 = x1 + 1不會更改傳遞給b()的變量的值。 所以在 function 之外,x 保持不變為 0。

它只是更改該函數的 scope 中的x1變量。 要將其分配給x ,請返回新值:

def b(x1):
    return x1 = x1 + 1

然后將返回值設置為x

for i in range (len(inp)):
    x = b(x)
    print(x)

還建議獲取i的值,因為它是 position。

暫無
暫無

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

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