首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python:什么时候将变量放在函数内部或外部?

Python:什么时候将变量放在函数内部或外部?
EN

Stack Overflow用户
提问于 2018-06-02 11:54:01
回答 2查看 95关注 0票数 0

在我的解释器中查看以下代码:

代码语言:javascript
复制
$ python3
Python 3.6.5 (default, Apr  1 2018, 05:46:30) 
[GCC 7.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
<<< first_list = [1,2,3,4,5,6]
<<< second_list = [101,202,303,404]
<<< first_list.reverse()
<<< print(first_list)
[6, 5, 4, 3, 2, 1]
<<< reverse(second_list)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'reverse' is not defined
<<<

在第一行和第二行中,我定义了两个列表。然后,我将以两种不同的方式颠倒first_list和second_list的顺序。第一种反转成功,而第二种方法被拒绝。

如果我要编写一个脚本(显然Python解释器会拒绝),那么将变量作为参数放在反向函数中是我最初自然会使用它的方式。

在我正在学习的Udemy课程中,讲师建议将变量放在函数前面,用点分隔。我明白计算机决定什么能工作,什么不能工作,我只是想知道为什么,因为我的(错误)方法来得更自然。

为什么变量有时必须放在函数前面,而其他时候它可以作为参数放在函数内部?

我想我现在有一个更重要的问题是:当我操作变量时,我如何知道何时将变量放在外部而不是内部?

感谢您的关注。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-02 11:58:51

这是因为reverse()函数被创建为first_list对象的attribute。因此,reverse()不是一个可以调用并提供first_list作为参数的函数。

重要的是要知道,Python中的所有东西都是对象,并且每个对象都有属性。

例如,如果我在python解释器new_list = [1, 2, 3]中创建一个列表,然后执行dir(new_list) (这显示了new_list的属性),我会得到以下结果:

代码语言:javascript
复制
>>> new_list = [1, 2, 3]
>>> dir(new_list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', 
'__delslice__', '__doc__', '__eq__', '__format__', '__ge__', 
'__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', 
'__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', 
'__lt__', '__mul__',
'__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', 
'__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', 
'__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

其中包含用于对象listreverse函数。

票数 2
EN

Stack Overflow用户

发布于 2018-06-03 08:22:16

reverse是list数据类型的一种方法,python在不带点符号的情况下调用它时,会寻找reverse的定义。如果你的源代码中有def reverse()...它将使用它,或者如果你已经导入了一个定义了反向的库。第一个列表之所以有效,是因为first_list是一个对象,它有一个名为reverse的方法。

python3 documentation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50653351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档