请选择 进入手机版|继续访问电脑版
发新帖

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

[复制链接]
7956 23

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
def run(a,b,c):if a == b :ca = 1b = 1c = print('1')run(a,b,c)
1、为什么没有报错?2、执行过程中到底执行了哪个 c ?

举报 使用道具

回复

精彩评论23

zhanglintc  注册会员  发表于 2018-5-16 17:32:07 | 显示全部楼层
这个代码咋看啊...

举报 使用道具

回复
20032009  新手上路  发表于 2018-5-16 17:40:42 | 显示全部楼层
def run(a,b,c):
    if a == b :
        c
a = 1
b = 1
c = print('1')
run(a,b,c)

举报 使用道具

回复
blodside  新手上路  发表于 2018-5-16 17:42:05 | 显示全部楼层
>>> 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-5-16 17:47:28 | 显示全部楼层
def run(a,b,c):
    if a == b :
        c
#
a = 1
b = 1
c = print('1')
run(a,b,c)

举报 使用道具

回复
ballshapesdsd  新手上路  发表于 2018-5-16 17:55:36 | 显示全部楼层
print 函数返回值是 None。。

举报 使用道具

回复
magico  新手上路  发表于 2018-5-16 17:58:29 | 显示全部楼层
同楼上,
语法错误

举报 使用道具

回复
magico  新手上路  发表于 2018-5-16 17:59:26 | 显示全部楼层
shell 里报错,pycharm 不报错,应该是 ide 做了什么事情
@magicO

举报 使用道具

回复
20032009  新手上路  发表于 2018-5-16 18:01:39 | 显示全部楼层
格式是这样(·是空格):

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

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

举报 使用道具

回复
magico  新手上路  发表于 2018-5-16 18:07:35 | 显示全部楼层
@magicO 我的锅,用错版本。shell 里也正常。没毛病啊,执行的就是 print("1")

举报 使用道具

回复
rabbbit  新手上路  发表于 2018-5-16 18:11:24 | 显示全部楼层

                               
登录/注册后可看大图

举报 使用道具

回复
holajamc  新手上路  发表于 2018-5-16 18:15:28 | 显示全部楼层
c 就是你定义的 print('1')  呀,函数的参数可以是另外一个函数)

举报 使用道具

回复
magico  新手上路  发表于 2018-5-16 18:26:33 | 显示全部楼层
11L 正解,没毛病啊

举报 使用道具

回复
20032009  新手上路  发表于 2018-5-16 18:27:27 | 显示全部楼层
在执行 6 行时,c = print('1')    这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1

举报 使用道具

回复
20032009  新手上路  发表于 2018-5-16 18:32:45 | 显示全部楼层
@magicO 在执行 6 行时,c = print('1') 这个地方 print 执行了
在 run()里面的 c 也应该被执行啊,那应该打印出两个 1

举报 使用道具

回复
rabbbit  新手上路  发表于 2018-5-16 18:36:51 | 显示全部楼层
你是不是对函数 /变量有什么误解
调用一个函数的格式方式: 函数名([参数])
print('1')返回的是 None,不是一个函数

举报 使用道具

回复
magico  新手上路  发表于 2018-5-16 18:43:21 | 显示全部楼层
@20032009 没有啊,一旦赋值就不是那样了。 虽然我也不懂更深层的原理,但似乎第一天写 python 就感觉应该是这样。搬板凳听大佬解释

举报 使用道具

回复
freeminder  新手上路  发表于 2018-5-16 18:52:59 | 显示全部楼层
看的我这个难受,你要是说"执行了 print", 那就只有 c = print('1')  这一句执行了 print。c 在这句之后就是一个函数调用的返回值。你在 run 里面写的那个 c,可能是想要完成执行一个函数的事情?但是就算 c 在 run 中是一个函数引用-比如 lambda 创建的,你也得给人家一个括号吧-c()。

举报 使用道具

回复
fraillove  新手上路  发表于 2018-5-16 18:56:43 | 显示全部楼层
a = 1;
b = 1;
print('1') 任何函数不 return 默认返回 None  打印出 1 后 c= None
执行 run(1 ,1 ,None) 什么都不做

举报 使用道具

回复
clino  新手上路  发表于 2018-5-16 19:09:36 | 显示全部楼层
为什么不用 gist 贴代码?

举报 使用道具

回复
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表