谁能帮忙解答 Python 很神奇的问题?

2018-05-15 15:49:11 +08:00
 20032009

def run(a,b,c): if a == b : c a = 1 b = 1 c = print('1') run(a,b,c)

1、为什么没有报错? 2、执行过程中到底执行了哪个 c ?

3556 次点击
所在节点    Python
23 条回复
zhanglintc
2018-05-15 15:55:19 +08:00
这个代码咋看啊...
20032009
2018-05-15 15:56:41 +08:00
def run(a,b,c):
if a == b :
c
a = 1
b = 1
c = print('1')
run(a,b,c)
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
20032009
2018-05-15 15:58:05 +08:00
def run(a,b,c):
if a == b :
c
#
a = 1
b = 1
c = print('1')
run(a,b,c)
ballshapesdsd
2018-05-15 15:59:33 +08:00
print 函数返回值是 None。。
magicO
2018-05-15 15:59:47 +08:00
同楼上,
语法错误
magicO
2018-05-15 16:02:08 +08:00
shell 里报错,pycharm 不报错,应该是 ide 做了什么事情
@magicO
20032009
2018-05-15 16:03:20 +08:00
格式是这样(·是空格):

def run(a,b,c):
····if a == b :
········c
a = 1
b = 1
c = print('1')
run(a,b,c)

我的上面正常运行,而且打印出 1
magicO
2018-05-15 16:04:44 +08:00
@magicO 我的锅,用错版本。shell 里也正常。没毛病啊,执行的就是 print("1")
rabbbit
2018-05-15 16:05:23 +08:00
holajamc
2018-05-15 16:05:44 +08:00
c 就是你定义的 print('1') 呀,函数的参数可以是另外一个函数)
magicO
2018-05-15 16:06:58 +08:00
11L 正解,没毛病啊
20032009
2018-05-15 16:09:02 +08:00
在执行 6 行时,c = print('1') 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1
20032009
2018-05-15 16:09:28 +08:00
@magicO 在执行 6 行时,c = print('1') 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1
rabbbit
2018-05-15 16:13:37 +08:00
你是不是对函数 /变量有什么误解
调用一个函数的格式方式: 函数名([参数])
print('1')返回的是 None,不是一个函数
magicO
2018-05-15 16:13:59 +08:00
@20032009 没有啊,一旦赋值就不是那样了。 虽然我也不懂更深层的原理,但似乎第一天写 python 就感觉应该是这样。搬板凳听大佬解释
freeminder
2018-05-15 16:18:47 +08:00
看的我这个难受,你要是说"执行了 print", 那就只有 c = print('1') 这一句执行了 print。c 在这句之后就是一个函数调用的返回值。你在 run 里面写的那个 c,可能是想要完成执行一个函数的事情?但是就算 c 在 run 中是一个函数引用-比如 lambda 创建的,你也得给人家一个括号吧-c()。
FrailLove
2018-05-15 16:19:56 +08:00
a = 1;
b = 1;
print('1') 任何函数不 return 默认返回 None 打印出 1 后 c= None
执行 run(1 ,1 ,None) 什么都不做
clino
2018-05-15 16:20:12 +08:00
为什么不用 gist 贴代码?
20032009
2018-05-15 16:25:15 +08:00
谢谢大家,问题解决。打算入编程坑,努力成为大神中......

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/454993

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX