谁能帮忙解答 Python 很神奇的问题? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
20032009
V2EX    Python

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

  •  
  •   20032009 2018-05-15 15:49:11 +08:00 4016 次点击
    这是一个创建于 2759 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    23 条回复    2018-05-16 08:02:42 +08:00
    zhanglintc
        1
    zhanglintc  
       2018-05-15 15:55:19 +08:00
    这个代码咋看啊...
    20032009
        2
    20032009  
    OP
       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
        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
    20032009
        4
    20032009  
    OP
       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
        5
    ballshapesdsd  
       2018-05-15 15:59:33 +08:00   1
    print 函数返回值是 None。。
    magicO
        6
    magicO  
       2018-05-15 15:59:47 +08:00
    同楼上,
    语法错误
    magicO
        7
    magicO  
       2018-05-15 16:02:08 +08:00
    shell 里报错,pycharm 不报错,应该是 ide 做了什么事情
    @magicO
    20032009
        8
    20032009  
    OP
       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
        9
    magicO  
       2018-05-15 16:04:44 +08:00
    @magicO 我的锅,用错版本。shell 里也正常。没毛病啊,执行的就是 print("1")
    rabbbit
        10
    rabbbit  
       2018-05-15 16:05:23 +08:00
    holajamc
        11
    holajamc  
    2018-05-15 16:05:44 +08:00
    c 就是你定义的 print('1') 呀,函数的参数可以是另外一个函数)
    magicO
        12
    magicO  
       2018-05-15 16:06:58 +08:00
    11L 正解,没毛病啊
    20032009
        13
    20032009  
    OP
       2018-05-15 16:09:02 +08:00
    在执行 6 行时,c = print('1') 这个地方 print 执行了
    在 run()里面的 c 也应该被执行啊,那应该打印出两个 1
    20032009
        14
    20032009  
    OP
       2018-05-15 16:09:28 +08:00
    @magicO 在执行 6 行时,c = print('1') 这个地方 print 执行了
    在 run()里面的 c 也应该被执行啊,那应该打印出两个 1
    rabbbit
        15
    rabbbit  
       2018-05-15 16:13:37 +08:00   1
    你是不是对函数 /变量有什么误解
    调用一个函数的格式方式: 函数名([参数])
    print('1')返回的是 None,不是一个函数
    magicO
        16
    magicO  
       2018-05-15 16:13:59 +08:00
    @20032009 没有啊,一旦赋值就不是那样了。 虽然我也不懂更深层的原理,但似乎第一天写 python 就感觉应该是这样。搬板凳听大佬解释
    freeminder
        17
    freeminder  
       2018-05-15 16:18:47 +08:00
    看的我这个难受,你要是说"执行了 print", 那就只有 c = print('1') 这一句执行了 print。c 在这句之后就是一个函数调用的返回值。你在 run 里面写的那个 c,可能是想要完成执行一个函数的事情?但是就算 c 在 run 中是一个函数引用-比如 lambda 创建的,你也得给人家一个括号吧-c()。
    FrailLove
        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) 什么都不做
    clino
        19
    clino  
       2018-05-15 16:20:12 +08:00 via Android
    为什么不用 gist 贴代码?
    20032009
        20
    20032009  
    OP
       2018-05-15 16:25:15 +08:00
    谢谢大家,问题解决。打算入编程坑,努力成为大神中......
    whoami9894
        21
    whoami9894  
       2018-05-15 16:32:21 +08:00 via Android
    c 被赋值为 print 函数的返回值,为 none。
    如果 c 被赋值为函数的话后面得有()调用函数操作符
    MartinWu
        22
    MartinWu  
       2018-05-15 16:36:26 +08:00
    c 是 print("1")的返回值,也就是 None。并不是这个语句本身。
    1daydayde
        23
    1daydayde  
       2018-05-16 08:02:42 +08:00 via iPhone
    貌似有个标准错误输出流 了解一下?
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     907 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:23 PVG 04:23 LAX 12:23 JFK 15:23
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86