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每次都是被调用的?
1
j0hnj 2019-12-05 11:48:04 +08:00 54
唉,要不还是转行吧
|
2
Caballarii 2019-12-05 11:48:49 +08:00 1
b 变量是"a"+my_time()执行的结果,类型是字符串,字符串凭什么变,
b 写成函数每次调用才会每次执行 |
3
io123 2019-12-05 11:50:08 +08:00 via Android
唉,要不还是转行吧
|
4
jimliang 2019-12-05 11:52:40 +08:00
唉,要不还是转行吧
|
5
mmixxia 2019-12-05 11:53:56 +08:00
变量在赋值的时候变化。
|
6
mmixxia 2019-12-05 11:54:06 +08:00
唉,要不还是转行吧
|
7
xem 2019-12-05 11:55:51 +08:00
唉,要不还是转行吧
|
8
littleylv 2019-12-05 11:57:39 +08:00
唉,要不还是转行吧
|
9
css3 OP |
10
JeffGe 2019-12-05 11:58:15 +08:00 via Android
唉,要不还是转行吧
|
11
b821025551b 2019-12-05 11:59:03 +08:00
b 是你函数执行的结果,如果你想要它“变”,需要把 b 赋值成闭包;
初学者的话出这种疑问很正常,但是看你的回复又不像初学者,那么转行吧:doge: |
12
dswyzx 2019-12-05 11:59:33 +08:00
python 就是捉急.别学了
面向对象语言 强类型. 断点调试看变量 啥都给你整明白了 |
13
JCZ2MkKb5S8ZX9pq 2019-12-05 12:04:08 +08:00
唉,教程从头再看一遍吧。
my_time 是函数 my_time() 是它返回的结果 是字符串 你的 b 一开始就字符串 a+字符串函数返回的结果 要跟着变你可以把那个 a+写到 return 里 不过还是建议从头看教程吧 |
14
Trim21 2019-12-05 12:04:15 +08:00 via Android
你这想要的是 class 的 property 啊
|
15
ddzzhen 2019-12-05 12:05:08 +08:00 via Android
大佬请不要对新手这么残忍,楼主肯定是初学者,我上班也基本不用 python,准确的说不用代码,当初学的时候有很多这种类似的问题,现在写量化脚本也不用类,不是每个 python 人都用 python 养活自己,毕竟门槛太低了
|
16
sheep3 2019-12-05 12:10:06 +08:00
不是,你转行之前干啥的
这不是基础到极点的东西么...... |
17
xiaofan305 2019-12-05 12:12:21 +08:00 via Android
唉,要不还是转行吧
|
18
wuwukai007 2019-12-05 12:15:52 +08:00 via Android 1
python 是简单,那是针对有其它语言经验的人,建议不要走马观花,静下心来,从头学起
|
19
gov 2019-12-05 12:22:44 +08:00 12
不知道楼上劝转行的人是什么资质。面对初学者的心态难道不是包容和引导吗?
在这个帖子 /t/625470 里看到了大家对心胸狭隘的抨击,那复读灌水劝退内容算不算心胸狭隘呢? 回帖前请注意右下角的“请尽量让自己的回复能够对别人有帮助”以及阅读 /about |
20
MeteorCat 2019-12-05 12:24:42 +08:00 via Android
唉,要不还是转行吧
|
21
levelworm 2019-12-05 12:26:42 +08:00 1
b 是个字符串,所以你每次打 b 无非就是出来字符串里头的内容。严格地说是 b 这个 name 指示的地址里头的内容。你可以再次给 b 赋值,就会变化了。但是这时候其实是指向另外一个地址。
``` >>>b 'a2019-12-04 23:20:53' >>>hex(id(b)) '0x2126325b580' >>>b = "a" + my_time() >>>b 'a2019-12-04 23:21:15' >>>hex(id(b)) '0x2126325b850' ``` |
22
yupnano 2019-12-05 12:35:33 +08:00
唉,要不还是转行吧
|
23
superrichman 2019-12-05 12:35:54 +08:00 via iPhone
python 可以通过
print(type(b)) 来看变量 b 的数据类型。应该会看到类似 class str 的输出,说明 b 的值是个字符串 string,而字符串在定义了之后是不会改变的。要“修改”字符串 只能新建另一个再赋值给 b。 |
24
hoyixi 2019-12-05 12:38:27 +08:00 1
my_time: 小 b,你好,我是印钞机,只是把印好的一张 100 块给你了,并没有把我自己给你
|
25
mckelvin 2019-12-05 12:47:25 +08:00 via Android
() 长的像硬币不?得投一次币才给干一次活。
|
26
ThomasZ 2019-12-05 12:48:32 +08:00 via Android
跨行学 Python ?不要上手就开搞,先看看基础理论再说
|
27
wangyzj 2019-12-05 12:54:09 +08:00
唉,要不还是转行吧
|
28
ClarkAbe 2019-12-05 13:02:06 +08:00 via Android
唉,要不还是转行吧,秋梨膏
|
29
leido 2019-12-05 13:22:07 +08:00
xswl, 哈哈哈哈
|
30
RV0n 2019-12-05 13:28:01 +08:00
唉,要不还是转行吧
|
31
kasper4649 2019-12-05 13:32:04 +08:00 via Android
建议还是从基础学吧,搞懂字符串再说
|
32
wizardoz 2019-12-05 13:32:04 +08:00
你是不是看了抖音决定学 Python 的?
|
33
shfanzie 2019-12-05 13:33:51 +08:00
唉,要不还是转行吧
|
34
gz911122 2019-12-05 13:34:07 +08:00
唉,要不还是转行吧
|
35
ZRS 2019-12-05 13:42:59 +08:00
建议从 C 开始 先把 C 的基础语法整明白了 写几个算法题 再开始 Python
|
36
hanyceZ 2019-12-05 13:43:21 +08:00
唉,要不还是转行吧
|
37
CrazyRain0001 2019-12-05 13:48:14 +08:00
火钳刘明
|
38
misaka19000 2019-12-05 13:53:39 +08:00 3
函数式对行为的一种抽象,变量代表了一个状态
PS: 楼上的队形党太拉低 V 站水平了 |
39
ljpCN 2019-12-05 13:53:44 +08:00 3
楼主很适合学习函数式编程
|
40
wutiantong 2019-12-05 13:58:58 +08:00 3
这就劝人转行?
lazy evaluation 了解一下? 楼主的思维方式很有意义。 劝某些人不要太僵化。 |
41
raistlin916 2019-12-05 14:01:59 +08:00 1
问题出在中文歧义上,字面上看,『变量』其实是可变量,执行函数是『变某量』,所以容易混淆。
|
42
MinQ 2019-12-05 14:04:37 +08:00
唉,要不还是转行吧
|
43
KaynW 2019-12-05 14:08:45 +08:00
已学者往往理解不了初学者为什么会提出这种问题.是个啥理论还是悖论来着,忘了.多点宽容多点爱
|
44
simenet 2019-12-05 14:10:17 +08:00
唉,要不还是转行吧
唉,要不还是转行吧 唉,要不还是转行吧 唉,要不还是转行吧 |
45
cppgohan 2019-12-05 14:17:48 +08:00
楼主是要钓鱼赚波金币?
|
46
yinjy 2019-12-05 14:20:18 +08:00
为什么要嘲讽楼主,其实这个问题还是挺有意思的
|
47
Vindroid 2019-12-05 14:25:03 +08:00
没有基本功?耐下性子从最基本的学起吧,你这样学容易走火入魔啊
|
48
yeze322 2019-12-05 14:32:33 +08:00
楼上都太欢乐了
|
49
j0hnj 2019-12-05 14:40:05 +08:00 5
楼主,非常对不起,一时没忍住,嘴欠了一下,做了个坏一楼,确实太 mean 了。
能对初学者讲明白最基础的问题,才是真正的大佬,引以为戒。 |
50
williamszz 2019-12-05 14:41:02 +08:00
唉,要不还是转行吧
|
51
jon 2019-12-05 14:43:00 +08:00
唉,要不还是转行吧
|
52
hallwoodzhang 2019-12-05 14:46:12 +08:00 2
>>> import time
>>> def my_time(): ... return time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time())) ... >>> b = lambda : 'a' + my_time() >>> b <function <lambda> at 0x7fdc8494f840> >>> >>> b() 'a2019-12-05 14:43:58' >>> b() 'a2019-12-05 14:44:01' >>> b() 'a2019-12-05 14:44:04' >>> |
53
hallwoodzhang 2019-12-05 14:48:30 +08:00 2
我猜你想要这种效果
|
54
azcvcza 2019-12-05 14:50:54 +08:00
不知道是钓鱼还是被钓
|
55
Tokin 2019-12-05 15:07:51 +08:00
我滴妈呀,这个不应该入门就应该懂的吗?钓鱼贴?
|
56
Phishion 2019-12-05 15:14:56 +08:00 1
上面列队劝人家转行的,有几个能非常深入的从底层讲解透这个问题的?当复读机能显得你们特别高明?我觉得吧,如果不会说话,可以不要说嘛,别回来往深了问一个个哑火了,挤兑别人倒有一手。
|
57
ermao 2019-12-05 15:18:01 +08:00
string b = "a" + my_time();
加上 string 你明白了吗?它把赋值那一刻的 my_time() 存了起来。所以你无论输出多少次,它都不会变呀。 |
58
imklay 2019-12-05 15:21:28 +08:00
我觉得还挺可爱的。。
|
59
crella 2019-12-05 15:24:43 +08:00
玩玩 ruby 的 eval、instance_eval、class_eval,玩得让我头痛欲裂
|
60
leadersnowy 2019-12-05 15:25:48 +08:00
唉,要不还是转行吧
|
61
crella 2019-12-05 15:30:36 +08:00
还有提醒楼主,在绝大多数语言中,数组 a = 数组 b,这个操作是引用传递,就是当后续更改了数组 b 的某个元素的值后,数组 a 也会发生对应的变化。在你使用的语言中,一定要先查查语言的深拷贝(deepcopy 方法)
|
62
mara1 2019-12-05 15:31:25 +08:00
楼主别听他们的,谁都是一点点学的,慢慢来,自己不要气馁。
基于你初学者的身份,建议你先谷歌,或找同事问,效率更高,如果还解决不了,再去网上问。 |
63
VShawn 2019-12-05 15:35:45 +08:00
我猜测楼主是想用闭包?
要不还是转行吧 |
64
Nugine0 2019-12-05 15:53:32 +08:00
```
$ cat a.py import time def get_time(): return time.strftime( '%Y-%m-%d %H:%M:%S', time.localtime(time.time())) class TimeStr(str): def __str__(self): return get_time() def __repr__(self): return get_time() b = TimeStr() for i in range(5): print(f"{i+1}: {b}") time.sleep(1) $ python a.py 1: 2019-12-05 15:50:57 2: 2019-12-05 15:50:58 3: 2019-12-05 15:50:59 4: 2019-12-05 15:51:00 5: 2019-12-05 15:51:01 $ ``` |
65
Ainndy 2019-12-05 16:00:36 +08:00 via iPhone
唉,要不还是转行吧
|
66
HanShan63 2019-12-05 16:03:16 +08:00
唉,要不还是转行吧
|
67
blackccc 2019-12-05 16:03:23 +08:00
变量就是 72 变,想怎么变就怎么变
|
68
zixiaoguan 2019-12-05 16:10:39 +08:00
代码是一行一行执行的,b 在赋值的时候已经执行了那段代码,以后就不会执行了。每次需要反复执行的代码,那种代码叫做函数。
|
69
neroxps 2019-12-05 16:15:58 +08:00
楼主标题写的很好,什么是变量,什么是函数,楼主搞清楚就是了。
正如 bash ```bash time(){ echo date } echo "a $(time)" # 和 echo "a $(date)" 是一个意思啊。 ``` 函数每次调用都会执行,而变量只是存在一个内存空间的东西,变量在不被别人修改的时候是不会变化的。函数是动态的,调用就执行一次。 函数是动词,变量是形容词。 |
70
neroxps 2019-12-05 16:17:03 +08:00
@neroxps #69 手残连 bash 都敲错
```bash time(){ echo $(date) } echo "a $(time)" # 和 echo "a $(date)" 是一个意思啊。 ``` |
71
pb941129 2019-12-05 16:32:28 +08:00 1
?我开始怀疑这个论坛的专业性...
|
72
HonoSV 2019-12-05 16:56:00 +08:00
别学 python,来学 java 吧,好懂很多
|
73
CosimoZi 2019-12-05 17:00:48 +08:00
楼主很适合学习函数式编程
|
74
solgh 2019-12-05 17:02:09 +08:00
唉,要不还是转行吧
|
75
madmen 2019-12-05 17:08:55 +08:00
是不是买了朋友圈推送的,1 天学会 python ?
这个是计算机基础知识,先去恶补一下基础知识会比较好。 |
76
Erroad 2019-12-05 18:11:37 +08:00 via iPhone
楼主要不去玩玩人力资源机器?
|
77
HolmLoh 2019-12-05 18:13:32 +08:00 1
他们都只是调侃而已,不比挂在心上
建议去看一些关于计算机书和 Python 的基本语法,应该会对你大有帮助 这里主要是两个点 一个是 my_time(),每次使用“my_time()”的时候,则会调用一次“my_time()”这个函数,而函数的每次调用都会执行一次函数对象的代码,所以每次调用就相当于生成一个新的值 第二是 b = ,这个是定义一个遍历 b,并赋值,使用“=”赋值之后,只要变量“b”不被再次使用“=”覆盖掉原值,他的数据就不会变 通俗的讲就是,你有一个文具袋( my_time ()),你从箱子里面拿出一支笔(调用函数),随后放到你的桌子上(赋值给 b ),随后你就可以看到桌子上的笔了(打印 b ),在你从文具袋里拿去物品(调用函数)并且放到桌子上,你桌子上永远都会是那支笔 我水平有限,解释的不好见谅 |
78
Mistwave 2019-12-05 18:20:29 +08:00 via iPhone
b = "a"+my_time()
这里是 call by value,而不是 call by name |
80
xuyl 2019-12-05 18:33:21 +08:00 via Android
要不转行吧
|
81
winglight2016 2019-12-05 18:53:35 +08:00
唉,要不还是转行吧
|
82
lewinlan 2019-12-05 19:06:08 +08:00
唉,要不还是转行吧
变量想象成是一个标签,你赋值给谁它就代表谁。你令『 b = "a"+my_time()』,程序会把右边的*值*计算出来,然后给这个*值*贴上『 b 』这个标签,所以你每次访问都是同一个值。 另外,你打印时间字符串可以用『 datetime.now().strftime("%Y%m%d")』你那样写太别扭了。 |
83
nomaka 2019-12-05 19:06:11 +08:00
唉,要不还是转行吧
|
84
ztmqg 2019-12-05 19:10:19 +08:00 via iPhone
楼主别听他们的,加油吧!
楼上的复读机有意思么? |
85
vipppppp 2019-12-05 19:26:49 +08:00
。。。
|
86
liuzhiyong 2019-12-05 19:43:55 +08:00
楼主应该是初学啦。“变量是什么”:就是计算机内存里面保存的一些数据。“什么时候变,什么时候不变?”:计算机 CPU 执行修改内存的指令,它就变了,如果 CPU 执行读取内存的指令,它当然不变。
|
87
nG29DOMuRYTWfcSr 2019-12-05 19:50:34 +08:00
@css3 楼上所有人都是只会人云亦云,自己一点脑子没有的人,这种问题难道真的没有实现方式么?
输入,b,实际上是调用 b 的 tostring 函数,哪怕是我真的没有深入学过 python, 我都知道任意面向对象类型的语言都可以实现这样的事情。 |
88
leafsummer 2019-12-05 19:58:06 +08:00
唉,要不还是转行吧
|
89
smdbh 2019-12-05 20:02:27 +08:00 via iPhone
|
90
asche910 2019-12-05 20:07:38 +08:00
唉,要不还是转行吧
|
91
vipppppp 2019-12-05 20:50:34 +08:00
我只是觉得大家没必要探讨 python 的__str__问题
劝转行是有点过分,但在这个论坛看到这样的问题确实相对太过于基础,难免有点震惊。 无论怎么样,还是要学好最基本的一些编程知识,LZ 加油。。 |
92
bjt 2019-12-05 20:58:50 +08:00
唉,要不还是转行吧
|
93
CodeCore 2019-12-05 21:01:02 +08:00
楼主不要灰心。。。
你发现了更大到世界。 |
94
CEBBCAT 2019-12-05 21:57:02 +08:00
> 为什么在 b 变量里边 my_time()不再被调用了??
你给 b 赋值(比如 b = a + XXX )的时候,值已经固定了,是一个像'a2019-12-05 11:30:32'一样的字符串,你可以用 type(b)来验证。 > 直接打印 print("a"+my_time())时,my_time()每次都会被调用 print 里边的"a"+my_time()是一个表达式,所以每次执行都会对 my_time()求值 > 我要在 b 变量中时时更新 my_time()应该怎么做? def b(): return "a"+my_time() > 变量是什么😂,什么时候变,什么时候不变? 基础问题,请完整看完一本编程书再问这样的问题。 --- 楼主什么身份?行外的朋友?要是培训班出来能被这几个问题难住,我想这个培训班把你和行业坑得不轻 |
95
zhjie 2019-12-05 22:24:33 +08:00
真不是我偏见,10 个钓鱼的 9 个是苹果头像!?
|
96
ahaxzh 2019-12-06 09:28:17 +08:00
哎,还挺难的。不然跟我回家养猪算了。
|
98
chucongqing 2019-12-06 09:34:21 +08:00
一楼二楼都点赞了
|
99
finalwave 2019-12-06 09:55:06 +08:00
都叫 css3 了,不做前端学什么 python
|