Python 板


LINE

Hi 各位板友,最近刚开始碰Python,遇上了一个问题,实在不懂为甚麽,恳请各位指点 def abc(): x = False y = 0 if x is True: print('Working, Please try again') else: if y == 0 : x = True print('Start Work') abc() abc() #Start Work #Start Work 不懂为甚麽第二个回应依旧是Start Work,正常来说应该在第一个Start Work运行後就 赋值True给X,第二次应该是Working, Please try again,可是为甚麽会这样子呢? 恳请各位给予指点,谢谢 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 180.217.156.198
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1516239946.A.C9C.html
1F:推 XperiaZ6C: 因为你x不是全域变数啊…01/18 09:50
2F:→ XperiaZ6C: 你abc()的第一行就把x设为False,他当然不会去true01/18 09:51
我有尝试把x y放在方法外,然後第二个判断 式中return x出去,一样的结果
3F:→ vi000246: 放在方法外应该就正确了 贴程式码吧01/18 09:56
x = False y = 0 def abc(x,y): if x is True: print('Working, Please try again.') else: if y == 0 : x = True print('Start Work') return x abc(x,y) abc(x,y) #Start Work #Start Work return用法可能有误,但删掉的话结果还是一样的 ※ 编辑: zuso (180.217.156.198), 01/18/2018 10:02:11
4F:推 Sunal: 关键字:global 01/18 10:53
5F:推 iphone2003: 小弟我也是新手,给的意见就参考就好。因为x不是globa 01/18 12:32
6F:→ iphone2003: l,所以即使在function中更改x为True,出了function 01/18 12:32
7F:→ iphone2003: 後x依然会和原本一样。所以如果想让x在主程式中也可以 01/18 12:32
8F:→ iphone2003: 跟着function改变,除了设x为global外,也可以维持ret 01/18 12:32
9F:→ iphone2003: urn的那个写法,然後外面呼叫abc()的时候改成X=abc() 01/18 12:32
10F:→ iphone2003: ,让x去接应该也可以成功 01/18 12:32
11F:→ iphone2003: 不过我不知道用X=abc()这样写会不会不太好,但确实可 01/18 12:33
12F:→ iphone2003: 以达到你的需求就是了 01/18 12:33
13F:→ KSJ: return x 要接起来啊… 01/18 16:01
14F:推 vi000246: https://goo.gl/3ASbbv 01/18 16:29
15F:推 vi000246: 我觉得python的缺点是 宣告跟赋值比较不好看出来 01/18 16:33
16F:→ vi000246: 像你里面的x=True 是宣告一个local变数x 01/18 16:34
17F:→ vi000246: 而不是对外面的x赋值 01/18 16:34
18F:推 Sunal: 主要是scope and namespace的观念 至於宣告或赋值倒也还好 01/18 17:14
19F:推 aszx4510: call by value, call by address, call by reference 01/19 03:54
20F:→ aszx4510: call by address 好像不是正规用语XD 01/19 03:57
21F:→ aszx4510: 如果你想要在function内直接修改外面传进来的参数, 你 01/19 03:58
22F:→ aszx4510: 需要搞懂上面那几种的差别 01/19 03:58
23F:→ aszx4510: 如果是透过接收return值来修改, 那你要摆一个变数来接收 01/19 03:59
24F:→ vi000246: 拍谢 我的回应是错的 忘记x是传进来的了 01/19 10:01
25F:→ zuso: 感谢各位指点迷津阿XD 观念厘清了不少~~ 01/19 11:42







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:e-shopping站内搜寻

TOP