Python 板


LINE

1. 你所说的「全域变数」其实是 module 的 property。在 python 中,module 是一个 物件,「全域变数」是物件上的属性。 2. `global` 关键字只在 function 内有意义,会把指定的变数名称 bind 到「全域变 数」。 3. 换句话说,在 A module 内使用 global foo 会指向 A.foo,在 B module 内使用 global foo 会指向 B.foo。 4. from ... import ... 的作用是「搜寻指定的 module」并「将指定 property 的 assign 给目前 scope 内指定的变数」。如果把 from Name import MyVariable 写 在 function 内,效果就是「把 Name.MyVariable 的值指定给区域变数 MyVariable」。
1F:→ v00623: 所以全域变数不能放在不同模组? 那我main里改的是区域? 06/03 17:54
Main.py 中修改的是 Main.MyVariable,不会影响 Name.MyVariable。可以把下面的 程式码存成一个新档案然後执行︰ import Main import Name print(Main.MyVariable, Name.MyVariable) 「区域变数」用来称呼 function 内的变数。虽然定义在 module root 的变数不会在 不同的 module 中共用,我们还是把它们称为 globals。
2F:→ frank910138: 可以print(id(var)) 看 06/03 18:21
3F:→ v00623: Id是相同的 06/03 22:37
id() 相同表示变数内的是相同的,不表示你修改其中一个变数另一个变数也会变。 例︰ a = 1 b = 1 print(id(a), id(b), a, b) b = 2 print(id(a), id(b), a, b) -- 额外补充︰Python 没有跨模组的的全域 "binding",但是你可以使用 builtins module 定义一个所有档案都能存取的变数︰ import builtins builtins.MyVariable = 123 但是除非你有一个好理由,否则请不要这麽做。这个 module 是设计用来定义内建 函式和常数的。 -- 参考︰ * https://docs.python.org/3/library/builtins.html * https://docs.python.org/3/faq/programming.html#how-do-i-share-global-variables-across-modules (缩︰https://is.gd/zKqV2u) -- ヾ(;ω;) ヾ(;ω;) http://i.imgur.com/oAd97.png --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.225.8.82 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Python/M.1559578849.A.7A5.html
4F:推 iphone2003: id那边好像怪怪的,id()就是看变数记忆体位子没错, 06/04 00:52
5F:→ iphone2003: 所以id相同代表相同物件。a=1,b=1的例子中id会一样, 06/04 00:52
6F:→ iphone2003: 是因为python有事先建立一些不可变且常用的物件,所以 06/04 00:52
7F:→ iphone2003: 执行a=1时不会重新建立一个int物件,而是指向原本预 06/04 00:52
8F:→ iphone2003: 先建立好的那个物件,同理b也一样,所以a和b的id才会 06/04 00:52
9F:→ iphone2003: 相同 06/04 00:52
10F:→ iphone2003: 我没记错的话是这样,有错请见谅 06/04 00:53
11F:推 v00623: 感谢回释 不过id那边我也记得是看记忆体位址 我再找找资料 06/04 08:22
12F:推 TuCH: 是记忆体位置没错 如果 a=int(1) b=int(1) 那两个id不相同 06/04 08:59
13F:推 TitanEric: 推iphone大 06/04 10:21
这两件事实不冲突︰ id 相同时 => 值会相同 值相同时 => id 不一定相同 (定义一下何谓「相同的值」︰两个物品拥有完全相同的形状与内容) 我应该把「变数内的值」写成「变数指向的物件」会更清楚。(注︰可以想成 Python 中的值都是物件,包括数字或字串。对变数 assign 时并不会覆写旧的记忆体空间,而 是把变数指向新的物件。) id() 回传的是物件的「唯一识别符号」,当两个物件同时存在,且两个物件的 id 都相 同时,代表两个物件是同一个物件。(不同时期的物件可能会共用同个 id) 至於 id() 回传的是记忆体位址也是正确的,不过这件事是 CPython implementation detail。 参考︰https://docs.python.org/3/library/functions.html#id 我想说明的是,物件的 id 和原 PO 的问题没有太大的关系。原 PO 可以考虑以下的程 式码︰ a = "123" b = a a = "" print(b) # result? 再考虑以下︰ # a.py a = "123" def change(): global a a = "" # b.py from a import a as b, change change() print(b) # result? 然後就是你的问题︰ # a.py a = "123" def change(): global a a = "" # b.py from a import a, change change() print(a) # result? ※ 编辑: eight0 (36.225.8.82 台湾), 06/04/2019 12:34:57 ※ 编辑: eight0 (36.225.8.82 台湾), 06/04/2019 12:42:15 ※ 编辑: eight0 (36.225.8.82 台湾), 06/04/2019 12:43:48 ※ 编辑: eight0 (36.225.8.82 台湾), 06/04/2019 12:50:40
14F:推 v00623: eight0,谢谢你上面的解释与後面的小范例,刚刚测试後有了解 06/04 14:26
15F:→ v00623: 你说的意思了,我另外测试先import change再import a後,a就 06/04 14:26
16F:→ v00623: 是1了,看来import顺序决定他引用的时间,谢谢 06/04 14:26







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灯, 水草

请输入看板名称,例如:BabyMother站内搜寻

TOP