python函数的使用

python函数的使用,python,Python,我是python/编程的新手。这里有一个关于在python中使用函数的问题 如果我有一个名为myList的列表 (a) 如果要对其排序,我将使用myList.sort() (b) 如果临时对其进行排序,我将使用sorted(myList) 请注意使用两个函数之间的区别,一个是将函数应用于myList,另一个是将myList用作函数的参数 我的问题是,每次我使用函数时 我如何知道该函数是否应该用作应用于对象的“操作”(在(a)中),或者 如果对象作为参数传递给函数,(在(b)中) 我对此困

我是python/编程的新手。这里有一个关于在python中使用函数的问题

如果我有一个名为myList的列表

  • (a) 如果要对其排序,我将使用
    myList.sort()
  • (b) 如果临时对其进行排序,我将使用
    sorted(myList)
请注意使用两个函数之间的区别,一个是将函数应用于
myList
,另一个是将
myList
用作函数的参数

我的问题是,每次我使用函数时

  • 我如何知道该函数是否应该用作应用于对象的“操作”(在(a)中),或者
  • 如果对象作为参数传递给函数,(在(b)中)
我对此困惑了很长时间。谢谢你的解释

谢谢

sort()
是一个就地函数,而
sorted()
将返回一个已排序的列表,但不会就地更改变量。以下说明了区别:

l = [1, 2, 1, 3, 2, 4]
l.sort()
print(l) --returns [1, 1, 2, 2, 3, 4]

l = [1, 2, 1, 3, 2, 4]
new_l = sorted(l) 
print(new_l) -- returns [1, 1, 2, 2, 3, 4]
print(l) -- [1, 2, 1, 3, 2, 4]
如果要保持列表的原始顺序,请使用
sorted
,否则可以使用
sort()

sort()
是一个就地函数,而
sorted()
将返回一个已排序的列表,但不会就地更改变量。以下说明了区别:

l = [1, 2, 1, 3, 2, 4]
l.sort()
print(l) --returns [1, 1, 2, 2, 3, 4]

l = [1, 2, 1, 3, 2, 4]
new_l = sorted(l) 
print(new_l) -- returns [1, 1, 2, 2, 3, 4]
print(l) -- [1, 2, 1, 3, 2, 4]

如果要保持列表的原始顺序,请使用
sorted
,否则可以使用
sort()

在list.sort和sorted(list)之间有两大区别

  • sort()对列表进行适当排序,这意味着它修改了 列表排序函数不修改原始列表,但返回 分类表

  • sort()只适用于list(它是一个方法),但sorted内置函数可以接受任何iterable对象


  • 请检查一下

    list.sort和sorted(list)之间有两大区别

  • sort()对列表进行适当排序,这意味着它修改了 列表排序函数不修改原始列表,但返回 分类表

  • sort()只适用于list(它是一个方法),但sorted内置函数可以接受任何iterable对象

  • 请检查一下

    仅是一个函数-是
    列表
    类型的方法

    诸如
    sorted
    之类的函数适用于多种特定类型。例如,您可以获得已排序的
    列表
    集合
    ,甚至是临时生成器。只有输出是具体的(您总是会得到一个新的
    列表
    ),而不是输入

    sort
    等方法仅适用于保存它们的类型。例如,有一个
    list.sort
    方法,但没有
    dict.sort
    方法。即使对于方法具有相同名称的类型,切换它们也是不明智的-例如,
    set.copy
    不能用于复制
    dict

    区分这两者的一个简单方法是函数位于常规名称空间中,例如模块。另一方面,方法只存在于类及其实例中

    sorted     # function
    list.sort  # method
    
    import math
    math.sqrt                # function
    math.pi.as_integer_ratio # method
    
    按照惯例,Python通常使用函数执行不可变操作,使用方法执行变异操作。例如,
    sorted
    提供了一个新的排序列表,而旧的列表保持不变
    my_list.sort()
    对现有列表进行排序,不提供新列表

    my_list = [4, 2, 3, 1]
    print(sorted(my_list))  # prints [1, 2, 3, 4]
    print(my_list)          # prints [4, 2, 3, 1] - unchanged by sorted
    print(my_list.sort())   # prints None - no new list produced
    print(my_list)          # prints [1, 2, 3, 4] - changed by sort
    
    仅是一个函数-是
    list
    类型的方法

    诸如
    sorted
    之类的函数适用于多种特定类型。例如,您可以获得已排序的
    列表
    集合
    ,甚至是临时生成器。只有输出是具体的(您总是会得到一个新的
    列表
    ),而不是输入

    sort
    等方法仅适用于保存它们的类型。例如,有一个
    list.sort
    方法,但没有
    dict.sort
    方法。即使对于方法具有相同名称的类型,切换它们也是不明智的-例如,
    set.copy
    不能用于复制
    dict

    区分这两者的一个简单方法是函数位于常规名称空间中,例如模块。另一方面,方法只存在于类及其实例中

    sorted     # function
    list.sort  # method
    
    import math
    math.sqrt                # function
    math.pi.as_integer_ratio # method
    
    按照惯例,Python通常使用函数执行不可变操作,使用方法执行变异操作。例如,
    sorted
    提供了一个新的排序列表,而旧的列表保持不变
    my_list.sort()
    对现有列表进行排序,不提供新列表

    my_list = [4, 2, 3, 1]
    print(sorted(my_list))  # prints [1, 2, 3, 4]
    print(my_list)          # prints [4, 2, 3, 1] - unchanged by sorted
    print(my_list.sort())   # prints None - no new list produced
    print(my_list)          # prints [1, 2, 3, 4] - changed by sort
    

    阅读函数的文档。
    myList.sort()
    是一种方法,但是
    sorted(myList)
    是一个函数
    列表。sort
    sorted
    是两个完全不同的东西。一个是方法,另一个是内置函数。它不像任何函数可以用作
    foo(x)
    x.foo()
    。请阅读函数的文档。
    myList.sort()
    是一种方法,但
    sorted(myList)
    是一个函数
    列表。sort
    sorted
    是两个完全不同的东西。一个是方法,另一个是内置函数。它不像任何函数可以用作
    foo(x)
    x.foo()