楼主: 
ddavid (谎言接线生)   
2021-08-10 14:46:18※ 引述《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():