首页 新闻 会员 周边

python函数问题

0
悬赏园豆:5 [待解决问题]

def f(x):
x = 100
print x
f(x) #这样子调用为什么不行?

def f():
x = 100
print x
f() #这样子调用为什么行?

Matz100的主页 Matz100 | 初学一级 | 园豆:191
提问于:2018-12-05 10:04

插入代码时格式化一下

会发光 5年前
< >
分享
所有回答(6)
1
def f(x):
    x = 100
    print x
f(x) #这样子调用为什么不行?

因为f(x)中的x没有定义啊。建议格式化一下代码

会长 | 园豆:12401 (专家六级) | 2018-12-05 10:53
0

第一个f(x)带了形参x;
也就是说调用它的时候,你要传一个实参,此时实参的值为x的值

你风致 | 园豆:2213 (老鸟四级) | 2018-12-05 11:41
1

def f(x):
x = 100
print x
f(x) #这样子调用为什么不行?

上述定义了一个名为f的函数,参数为x,如果要调用,应传入具体参数。例如f(1),f(2)等,虽然print出来的还是100,但不#会报错

def f():
x = 100
print x
f() #这样子调用为什么行?

上述定义了一个名为f的函数,没有参数,因此,调用时也无需传入参数,f()这样调用即可。

uuser_ren | 园豆:202 (菜鸟二级) | 2018-12-05 14:07
0

你这个问题设计到函数的传参 与函数调用
1.第一个为什么不行?函数传递参数时f(x) 这个x是一个形式参数,那么在函数调用f(x)时,这时你需要传递的参数为实际参数也就是实参,顾名思义你需要传递一个具体的值,而你传递的是个x未定义的变量,可以这么修改
x=0
f(x) 这样输出的就是100
2.第二个为什么行,因为函数不需要传递参数,x是函数内部的变量,当你调用函数f()时就是实现f()函数内部的代码,当函数运行完毕时x会被内存回收无法保存下来。如果想保存x或者在后续仍需要x的值 应该按照下面的方法写
f()
x=100
return x
re = f()
print(re)

linux超 | 园豆:291 (菜鸟二级) | 2018-12-06 16:07
0

第一个 没有赋值,下面那个直接调函数里面的值了

许凌晨 | 园豆:122 (初学一级) | 2018-12-07 13:54
0

def f(self,x):

x = 100
print x
f(x) #这样子调用为什么不行?
def f(self):
x = 100
print x
f() #这样子调用为什么行?
你应该贴全点,前面是不是有创建对象。self.f(x)或者import这个方法之后再使用

finn.tang | 园豆:211 (菜鸟二级) | 2018-12-12 17:50
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册