作者ddavid (谎言接线生)
看板Python
标题Re: [问题] 多个function的变数需互通的运用
时间Tue Aug 10 14:46:18 2021
※ 引述《piligo (霹雳狗)》之铭言:
: 延续上篇讨论,目前已采用参数来实现。
: 另外一个延伸问题
: fun1判断test1来决定是否呼叫fun4
: 整个流程是start1()->fun1() -> 判断test1为1才呼叫fun4()
: 第二个问题是fun3需要判断fun2的test值,如果是1就印出Hello,
: 可是是fun2跟fun3是同层,fun3要怎麽调用fun2底下的test2?
: 另外test1这种写法是对的吗,跳了好几层看了就觉得怪怪的
: 谢谢
先一个无关紧要的建议,function缩写建议用func,用fun感觉就会比较fun XD
然後你可能没注意function可以传回值?下面是传回值的做法。class的做法也
可以解决,然而要从设计概念上考虑适合哪一种做法。
要注意以下虽然为了显眼把func2、func3跟start1里面都用test2来命名,但其
实三个可以不需要是同一个名字。
def start1(test1):
# 前面省略
# 以下两行可以精简为 func3(a3, func2(a2))
test2 = func2(a2)
func3(a3, test2)
def func2(a2):
test2 = foo # foo可能是func2前面做了啥运算得到的,如果有多处会得到不
# 同值就可能这麽写来统一输出接口而不是写多个return,当然
# 依程式逻辑与设计,直接return foo也OK
return test2
def func3(a3, test2):
# 内容省略
: def start1(test1):
: a1='xxx'
: a2='xxx'
: a3='xxx'
: fun1(a1,test1)
: fun2(a2)
: fun3(a3)
: def fun1(a1,test1):
: if(test1==1):
: fun4()
: def fun2(a2):
: test2=X
: def fun3(a3,test2):
: if(test2==1):
: print('Hello')
: def fun4():
--
「如果你没法给我个解释的话,死一万次也不能弥补你的过错!」
「我没办法死一万次赔你啊。」
「可是你有办法半死两万次,知道吗,嗯?」
--莲.席斯塔
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.32.17.60 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1628577980.A.255.html
※ 编辑: ddavid (114.32.17.60 台湾), 08/10/2021 16:56:58
1F:推 HuangJC: 我直接就会用 class 做;不知什麽叫'还用不到 class',但 08/21 20:32
2F:→ HuangJC: 如果 class 代表较大的资源消耗,我就理解了。我只在乎 08/21 20:33
3F:→ HuangJC: class 好写,易懂 XD 08/21 20:33
你用class,「相对上」概念是那些资讯有实体化包装起来持续保留的价值。
但是也没有说用哪种方法就对或就错,只求写出来可用的话,当然就是写出来就
好。不过如果是巨大程式的一环、如果这部份会重复执行、如果交互作用的function
数量很多、如果……,有很多理由会让某些解比另外一些解更好一些,所以终究还是
要看用例。
我其实不知道传回值为啥有比class难懂,不特别考虑用例的话,单就原问题而
言不是一样好写好懂吗XD
※ 编辑: ddavid (114.44.0.79 台湾), 08/23/2021 23:43:57