b
变量里边 my_time()
不再被调用了??print("a"+my_time())
时,my_time()
每次都会被调用my_time()
应该怎么做?>>> import time
>>> def my_time():
... return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
>>>
>>> my_time()
'2019-12-05 11:29:47'
>>> my_time()
'2019-12-05 11:29:50'
>>> b = "a"+my_time()
>>> b
'a2019-12-05 11:30:32'
>>> b
'a2019-12-05 11:30:32'
>>> b
'a2019-12-05 11:30:32'
>>> print("a"+my_time())
a2019-12-05 11:38:02
>>> print("a"+my_time())
a2019-12-05 11:38:03
>>> print("a"+my_time())
a2019-12-05 11:38:05
>>> b = "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
>>> b
'a2019-12-05 11:39:27'
>>> b
'a2019-12-05 11:39:27'
>>> b
'a2019-12-05 11:39:27'
>>>
>>> "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'a2019-12-05 11:41:58'
>>> "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'a2019-12-05 11:41:59'
>>> "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'a2019-12-05 11:42:00'
>>> "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'a2019-12-05 11:42:00'
>>> "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'a2019-12-05 11:42:01'
>>> "a" + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
'a2019-12-05 11:42:02'
>>>
让v站大佬见笑了
那为什么在编辑器里边b每次都是被调用的?
101
guolaopi 2019-12-06 09:56:25 +08:00
回复我看笑了,
但是楼主附言我没看懂。 啥叫“在编辑器里边 b 每次都是被调用的?” |
102
guolaopi 2019-12-06 09:57:37 +08:00
回复我看笑了,
但是楼主的附言我没看懂。 “那为什么在编辑器里边 b 每次都是被调用的?”是什么意思 |
103
ahaxzh 2019-12-06 09:58:03 +08:00
@css3 其实很多回复里已经讲的很清楚了,比如 77 94 等,这个问题 其实不算什么问题。你需要把基础知识补起来就行了。
int x = 10; // 变量 x 里存放了 一个整数 10 int b = 10 + x; // 变量 b = 10 + x = 10 + 10 = 20,这时候 变量 b 里存放了一个整数 20 x = 20 ; // 变量 x 里存放了一个整数 20, 从 10 改成了 20 这时候 b 并没有后续的 操作,所以 b 里面一直都是 20 所以不论你如何输出 b,修改 x 的值 ,那么 b 永远都是 20 如果你输出的 是 10 + x,那么这个结果就是一个动态的呀,x 等于多少直接影响了结果。 |
104
Jrue0011 2019-12-06 10:26:16 +08:00
在 IDE 里你每一次运行,相当于你每次都打开了一个新的命令提示符然后执行所有的代码。
想要在 IDE 里复现主楼里变量 b 重复输出不变的情况,只需要在下面多加几行 print(b)运行,你就可以看到这几次 b 的值是一样的了。 另外顺便补充下,你缺少的概念可能是:在代码里=号其实是赋值,而不是数学中的相等 b = a + my_time()的意思是,把 a + my_time()的结果赋值给 b,b 中保存了这个结果,而不是你每次使用 b 就等于每次使用 a + my_time() |
105
zunceng 2019-12-06 10:27:26 +08:00
感觉楼主不是计算机的 但是思维方式绝对纯正的函数式
|
106
JeffGe 2019-12-06 10:33:40 +08:00 via Android
计算机是很“笨”的,你需要降低自己“人类的智商”才能更好理解一些编程的初级知识
|
107
hjw45611 2019-12-06 10:39:54 +08:00
编程基础建议补一补,先从寄存器看吧
a=1(a 寄存器里存了 1),b=a+1(b 寄存器里存了 1+1=2),a=2 ( a 寄存器里存了 2 ) 现在你输出 b,b 里一直存的是 2,没有再次存储 a+1,所以输出的是 2 |
108
hakono 2019-12-06 10:41:13 +08:00 via iPhone
你们喷啥嘛,楼主这可是典型的 FP 编程思维
你们 FP 编程学起来还可能会吃力死呢。。。。 |
109
yazinnnn 2019-12-06 11:12:28 +08:00
楼主你挺适合学 lisp 的
(define b (+ 'a' (time))) 这样你每次执行 b 就是你想要的效果了 https://www.cnblogs.com/keanuyaoo/p/3367583.html 写 lisp 跟写诗似的😃 |
110
grzhan 2019-12-06 11:42:46 +08:00
“编辑器里面每次都被调用”是因为每次你在 VS Code 运行你的 Python 脚本的时候,是从头开始重新逐句运行的。
所以 b = "a" + my_time() 每次你运行都会被执行到,b 都会获取到当前最新的时间 但是你最开始发贴的例子是在 Python 解释器跑的,b = "a" + my_time() 只被执行了一次,所以之后你每次查看 b 变量的值是不会变的。 [变量] ( Variable )的“变” 这个概念,在这个语境下是和 [常量] ( Constant ) 相对应的,变量的值是可变的,而常量不可变。而 python 语法没有真正的常量所以你可能没有学到常量。 比如你有个变量 a,那么你先写了 a=1,之后再写 a=2 是 ok 的。 但比如你有个常量 A,那么你开始定义了 A=1,之后再想赋值 A=2 就会报错,因为常量是不可变的。 |
111
teddy2725 2019-12-06 14:14:51 +08:00
好好写你的前端代码它不香么
|
112
iamdaguduizhang 2019-12-06 17:05:21 +08:00
|
113
hannhuan 2019-12-06 17:09:27 +08:00
跑个题,楼主的头像太符合标题和内容了……
|
114
sologgfun 2019-12-06 17:15:29 +08:00
能理解楼主的心情,不过能搞清楚问题就好
|
115
oahebky 2019-12-06 17:47:44 +08:00
函数不是变量。函数执行后会得到返回值。赋值给 b 的是返回值。
楼主是中学生??? |
116
jismhxjr 2019-12-07 00:46:36 +08:00
唉,要不还是转行吧
|