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

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

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


Python中很神奇的问题,谁能帮忙解答?
23 回复

这个代码咋看啊…


我无法理解你的问题。

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

>>> 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

def run(a,b,c):
if a == b :
c
#
a = 1
b = 1
c = print(‘1’)
run(a,b,c)

print 函数返回值是 None。。

同楼上,
语法错误

shell 里报错,pycharm 不报错,应该是 ide 做了什么事情

格式是这样(·是空格):

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

我的上面正常运行,而且打印出 1

我的锅,用错版本。shell 里也正常。没毛病啊,执行的就是 print(“1”)

11L 正解,没毛病啊

在执行 6 行时,c = print(‘1’) 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1

在执行 6 行时,c = print(‘1’) 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1

你是不是对函数 /变量有什么误解
调用一个函数的格式方式: 函数名([参数])
print(‘1’)返回的是 None,不是一个函数

没有啊,一旦赋值就不是那样了。 虽然我也不懂更深层的原理,但似乎第一天写 python 就感觉应该是这样。搬板凳听大佬解释

看的我这个难受,你要是说"执行了 print", 那就只有 c = print(‘1’) 这一句执行了 print。c 在这句之后就是一个函数调用的返回值。你在 run 里面写的那个 c,可能是想要完成执行一个函数的事情?但是就算 c 在 run 中是一个函数引用-比如 lambda 创建的,你也得给人家一个括号吧-c()。

a = 1;
b = 1;
print(‘1’) 任何函数不 return 默认返回 None 打印出 1 后 c= None
执行 run(1 ,1 ,None) 什么都不做

为什么不用 gist 贴代码?

谢谢大家,问题解决。打算入编程坑,努力成为大神中…

c 被赋值为 print 函数的返回值,为 none。
如果 c 被赋值为函数的话后面得有()调用函数操作符

c 是 print(“1”)的返回值,也就是 None。并不是这个语句本身。

貌似有个标准错误输出流 了解一下?

回到顶部