python中变量和函数的区别_python中的变量名和函数名冲突

在Python中,函数是数据,输入是动态的。这意味着以下行是有效的Python:def func(x):

return x + 3

func = 3

func现在是一个int。原来的函数func不再被引用。原来func是一个函数这一事实与将来可以分配给它的数据类型没有任何关系。(这就是“动态键入”的意思。)

因此,由于没有静态类型,而且“function”是有效的数据类型,所以Python解释器无法区分函数和由相同名称引用的数据片段。因此,在给定的范围内,不可能使用相同的非限定变量名来表示两个不同的东西。

在您的特定情况下,如果xplus1函数中的代码有任何意义,则意味着“计算xplusy(x,1)的值并将该值赋给变量xplusy,从而失去对函数xplusy的引用。”,解释器不允许您对超出该范围的变量进行赋值,因此它假定通过编写赋值语句,您将引入一个新的局部变量xplusy。但是,局部变量还没有定义,所以您尝试调用它xplusy(x,1)失败。全局定义的函数不能作为回退调用,因为同样,不能让两个不合格的名称相同并指向同一范围内的不同数据。

另一个示例演示了“在一个作用域内不重复变量名”规则(实际上,我只是在尝试构造此答案时使用提示时才发现该规则):>>> def f1():

... a = xplusy(3,4)

... xplusy = 5

... print xplusy

...

>>> f1()

Traceback (most recent call last):

File "", line 1, in

File "", line 2, in f1

UnboundLocalError: local variable 'xplusy' referenced before assignment

>>> def f1():

... a = xplusy(3,4)

... print a

...

>>> f1()

7

这表明真正需要唯一名称的是作用域,而不是语句。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值