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 · 3524 次点击
    这是一个创建于 2385 天前的主题,其中的信息可能已经有所发展或是发生改变。

    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。并不是这个语句本身。
    0312birdzhang
        23
    0312birdzhang  
       2018-05-16 08:02:42 +08:00 via iPhone
    貌似有个标准错误输出流 了解一下?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5628 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 07:29 · PVG 15:29 · LAX 23:29 · JFK 02:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.