def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c)
1、为什么没有报错? 2、执行过程中到底执行了哪个 c ?
1
zhanglintc 2018-05-15 15:55:19 +08:00
这个代码咋看啊...
|
2
20032009 OP def run(a,b,c):
if a == b : c a = 1 b = 1 c = print('1') run(a,b,c) |
3
blodside 2018-05-15 15:56:50 +08:00
>>> def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c)
File "<stdin>", line 1 def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c) ^ SyntaxError: invalid syntax |
4
20032009 OP def run(a,b,c):
if a == b : c # a = 1 b = 1 c = print('1') run(a,b,c) |
5
ballshapesdsd 2018-05-15 15:59:33 +08:00 1
print 函数返回值是 None。。
|
6
magicO 2018-05-15 15:59:47 +08:00
同楼上,
语法错误 |
8
20032009 OP 格式是这样(·是空格):
def run(a,b,c): ····if a == b : ········c a = 1 b = 1 c = print('1') run(a,b,c) 我的上面正常运行,而且打印出 1 |
10
rabbbit 2018-05-15 16:05:23 +08:00
|
11
holajamc 2018-05-15 16:05:44 +08:00
c 就是你定义的 print('1') 呀,函数的参数可以是另外一个函数)
|
12
magicO 2018-05-15 16:06:58 +08:00
11L 正解,没毛病啊
|
13
20032009 OP 在执行 6 行时,c = print('1') 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1 |
14
20032009 OP @magicO 在执行 6 行时,c = print('1') 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1 |
15
rabbbit 2018-05-15 16:13:37 +08:00 1
你是不是对函数 /变量有什么误解
调用一个函数的格式方式: 函数名([参数]) print('1')返回的是 None,不是一个函数 |
16
magicO 2018-05-15 16:13:59 +08:00
@20032009 没有啊,一旦赋值就不是那样了。 虽然我也不懂更深层的原理,但似乎第一天写 python 就感觉应该是这样。搬板凳听大佬解释
|
17
freeminder 2018-05-15 16:18:47 +08:00
看的我这个难受,你要是说"执行了 print", 那就只有 c = print('1') 这一句执行了 print。c 在这句之后就是一个函数调用的返回值。你在 run 里面写的那个 c,可能是想要完成执行一个函数的事情?但是就算 c 在 run 中是一个函数引用-比如 lambda 创建的,你也得给人家一个括号吧-c()。
|
18
FrailLove 2018-05-15 16:19:56 +08:00
a = 1;
b = 1; print('1') 任何函数不 return 默认返回 None 打印出 1 后 c= None 执行 run(1 ,1 ,None) 什么都不做 |
19
clino 2018-05-15 16:20:12 +08:00 via Android
为什么不用 gist 贴代码?
|
20
20032009 OP 谢谢大家,问题解决。打算入编程坑,努力成为大神中......
|
21
whoami9894 2018-05-15 16:32:21 +08:00 via Android
c 被赋值为 print 函数的返回值,为 none。
如果 c 被赋值为函数的话后面得有()调用函数操作符 |
22
MartinWu 2018-05-15 16:36:26 +08:00
c 是 print("1")的返回值,也就是 None。并不是这个语句本身。
|
23
0312birdzhang 2018-05-16 08:02:42 +08:00 via iPhone
貌似有个标准错误输出流 了解一下?
|