| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2826 人关注过本帖
标题:求助帖,不明白函数为啥能调用成功
只看楼主 加入收藏
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:9 
求助帖,不明白函数为啥能调用成功
程序代码:
def cmul(*ip):

    product = 1
    for i in ip:
        product *= i
    return product

print(eval("cmul({})".format(input())))


不明白cuml()函数中输入的明明是个字符串,为啥还能运行成功呢?难道是eval()函数去掉双引号了吗?

-----------------------------------------------------------------------------------
我测试后发现问题可能出现在format()函数,那我就更不明白了为啥会出现如下情况
>>> "{}".format("1,2,3")
'1,2,3'
>>> "({})".format("1,2,3")
'(1,2,3)'

为啥第二行命令结果是“(1,2,3)”,难道不应该是"("1,2,3")吗?

[此贴子已经被作者于2020-1-13 17:21编辑过]

搜索更多相关主题的帖子: product 调用 成功 函数 format 
2020-01-13 12:27
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:5 
这好像是PYTHON代码,略看过有点印象,书写方式不同罢了,各种语言书写格式都有区别。
2020-01-13 12:55
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 2楼 xianfajushi
是的,是python,就是不明白print(eval("cmul({})".format(input())))为啥能调用cmul()呢,我认为传入的是字符串啊,为啥其实是数字呢
2020-01-13 13:00
xianfajushi
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:8
帖 子:527
专家分:690
注 册:2007-9-8
收藏
得分:0 
这种语言没去学,不过可查资料:https://www. 看到最后好像有类似使用双引号语句例子。
这个很好验证,你把函数名称改一下运行就知道了。

[此贴子已经被作者于2020-1-13 13:08编辑过]

2020-01-13 13:07
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
回复 楼主 是2014
没有百度一下eval的用法吗

>>> eval("5*6+9-8/2/3")
37.666666666666664

DO IT YOURSELF !
2020-01-13 14:27
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
回复 楼主 是2014
这个函数功能就是输入的所有数字都连乘起来(用逗号分割)
e:\pytest>python ex23.py
7,8,9,5
2520

e:\pytest>python ex23.py
1,2,3,5
30

e:\pytest>python ex23.py
1,2,3,4,5,6,7,8,9,10
3628800

e:\pytest>python ex23.py
3,4,6,7,8,9
36288

DO IT YOURSELF !
2020-01-13 14:32
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 5楼 wp231957
可能是我没写明白,我知道eval()函数能去掉最外层的双引号,我想问的是print(eval("cmul({})".format(input())))中cmul()函数中输入的是个字符串啊,也就是说input函数接收了输入,输出应该是个字符串,然后用format函数传到{}槽中,那执行起来岂不是cuml(字符串),这怎么会运行成功呢
2020-01-13 15:56
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:244
专家分:2106
注 册:2019-8-16
收藏
得分:5 
回复 7楼 是2014
程序代码:
>>> "ss"*2
'ssss'
>>>
2020-01-13 17:16
是2014
Rank: 1
等 级:新手上路
帖 子:29
专家分:0
注 册:2017-3-21
收藏
得分:0 
回复 8楼 fall_bernana
大神,我没明白,请细说一下
2020-01-13 17:22
fall_bernana
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:17
帖 子:244
专家分:2106
注 册:2019-8-16
收藏
得分:0 
以下是引用是2014在2020-1-13 17:22:29的发言:

大神,我没明白,请细说一下

程序代码:
def cmul(*ip):

    product = 1
    print(ip,type(ip))
    for i in ip:
        product *= i
        print(product)
    return product

print(cmul("ss"))

如果你只是不明白cmul函数传入了字符串为啥能运行.你把每个变量打印出来你就能明白了.
2020-01-14 09:08
快速回复:求助帖,不明白函数为啥能调用成功
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.060588 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved