Python: 何时将变量放在函数内部或外部?

2024-03-29 10:55:56 发布

您现在位置:Python中文网/ 问答频道 /正文

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

$ 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
<<<

在第一行和第二行中,我定义了两个列表。然后我继续以两种不同的方式反转第一个\u列表和第二个\u列表的顺序。第一种方法成功,而第二种方法被拒绝。你知道吗

如果我要编写一个脚本(显然Python解释器会拒绝这个脚本),那么在reverse函数中使用这个变量作为参数就是我最初使用它的方式。你知道吗

我正在学习的Udemy课程的指导老师建议把变量放在函数前面,用一个点隔开。我明白电脑决定了什么工作什么不工作。我只想知道为什么,因为我的(错误的)方法来得那么自然。你知道吗

为什么变量有时必须放在函数前面,而有时它可以作为参数放在函数内部?你知道吗

我想我现在面临的更重要的问题是:当我操作变量时,如何知道何时将变量放在外部vs内部?你知道吗

谢谢你的关注。你知道吗


Tags: 方法函数代码脚本default列表参数方式
2条回答

reverse是list数据类型的一种方法,python正在寻找reverse的定义,当您调用它时不使用点表示法。如果源代码中有def reverse()。。。它将使用它,或者如果您导入了一个定义了reverse的库。第一个列表之所以有效,是因为第一个列表是一个对象,它有一个名为reverse的方法。你知道吗

python3 documentation

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

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

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

>>> 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']

其中是对象的reverse函数list。你知道吗

相关问题 更多 >