python既問題

141 回覆
3 Like 28 Dislike
2020-10-06 01:08:46
應該唔係話你啦,上面嗰兩個syntax error都敢寫出嚟,柒到

不過巴打留意吓啲convention,每一隻language都有自己嘅 casing convention

Python就除咗class name係PascalCase/TitleCase之外,其餘基本上全snake_case
2020-10-06 07:29:48
Declare Ab做global variable
再係Ab = 1上面加global Ab
2020-10-08 10:18:35
一開波declare咗先同係個function入面用global有咩分別?
call咗A()之前就一樣,咁點解要用global?
新手求教

即係咁:
res = 0

def A():
    res = 1+1

def B():
    print (res)

A()
B()
2020-10-08 10:19:44
其實解決你個問題好易,但重點係點解你想咁做
假設你function A既計算好複雜,你點保證function B read variable AB果時已經計完?如果個variable會update, 仲要考慮下Thread safe既問題

正如其他人答,最正路係喺function A 尾return result:

def A():
    res = 1+1 #sample
    return res

def B():
    print (A())

唔建議既方法係declare global:

def A():
    global res
    res = 1+1

def B():
    print (res)
用global既方法得左啦


感謝大大佬
其實如果你想獨立拆開function a 既結果同其中一part 讀數
你應該寫多個function 出黎return AB
下下用global 解到一時問題但之後好多手尾
一開波declare咗先同係個function入面用global有咩分別?
call咗A()之後就一樣,咁點解要用global?
新手求教

即係咁:
res = 0

def A():
    res = 1+1

def B():
    print (res)

A()
B()

打錯,係之後
2020-10-08 10:23:20
A()入面個res係local variable
2020-10-08 11:13:27
咁撚容易都有3頁
2020-10-08 12:49:35
res = 0

def A():
    res = 1+1
    print(res) // 2

def B():
    print (res) // 0

A()
B()

如果你睇返個結果就會知道其實你個res由頭到尾都只會係function a入面run一次,def b 因為唔係攞def a 既結果咁佢就只會一攞global scope即係最外面個層既var
global最令人頭痕既地方就係咁,local有local計global有global計
咁當你程式一長要debug既時候就會煩到底而家呢個結果係local定global造成
所以global可以解一時問題,但唔可以包生仔解決所有問題
2020-10-08 14:12:55
由啲新手自己玩下啦,如果係本科學起一定唔會有呢啲問題

既然係為興趣,跌下撞下好正常,時間長總會自自然然學返好
2020-10-08 14:21:26
其實唔係一個return就可以搞掂咩
2020-10-08 15:00:54
依個naming convention好似唔太好
2020-10-08 15:16:13
搭單問吓callable object有乜特別用途?
2020-10-08 16:47:15
全皆因Python所有嘢都係object,連function/class其實都係object,但係依啲function/class又係可以call嘅,所以就有callable object
(詳細自己 dir(int) 睇吓就會知其實所有嘢都係object)
2020-10-08 20:14:58
所以用_int_會好d?
2020-10-08 20:20:00
簡單複雜化
2020-10-08 21:21:05
oop 概念清晰可以用
如果唔清晰我建議用function 拆開return 幾個你想要既結果
2020-10-08 21:41:35
因為我之前就上網睇啲return 教學
但試左好多都唔得
或者係我唔了解到
但用global就搞點
不過都想了解其他方法
2020-10-08 21:45:27
其實你想像return 其實就係function 去到最後變為一個實際結果而唔係一堆指令
def a() : 
a = 1
return a + 1

res = a()
print('res') // 2

你要指定一個var 比function 黎出一個結果
其實咁先係相對簡單既方法
global 絕對唔係好方法
2020-10-08 21:49:59
我而加大約了解到
但可能係我學壞手勢
成日一個def做幾樣野
之後就return 唔到

同想問 ruturn係唔係一定要用_int_咁去做?
2020-10-08 21:57:29
class 先會用到
平時寫SYNTAX用唔到的
2020-10-08 22:27:42
通常用object做
用global的話,兩行還好,行數一多你追唔返d global variable

如果你用object你可以易d控制個scope, 易d死

又或者A B係同一個class的function
兩個地位一樣存取object本身既野
2020-10-08 22:28:04
即係如果想兩個class互用數值先要?
2020-10-08 22:32:05
即係其他大佬教既return方法?
2020-10-08 23:04:47
兩個class 互用可以用class extended
或者一個class 寫兩個function 張d scope 互用
或者直接兩個class 互射不過用法最複雜
2020-10-09 00:00:03
其實你認認真真搵啲intro片或書睇下好過啦
唔係話針對,但而家你係連錯乜同點樣問都未清楚
仲要呢度答你既人都係一知半解,成日po啲有syntax error既例子

如果懶得睇片,至少讀下Automate the Boring Stuff with Python (https://automatetheboringstuff.com/2e/chapter0/),關於return value第二定三章有教
2020-10-09 00:12:06
python 係可以return 幾樣野
吹水台自選台熱 門最 新手機台時事台政事台World體育台娛樂台動漫台Apps台遊戲台影視台講故台健康台感情台家庭台潮流台美容台上班台財經台房屋台飲食台旅遊台學術台校園台汽車台音樂台創意台硬件台電器台攝影台玩具台寵物台軟件台活動台電訊台直播台站務台黑 洞