当前位置:网站首页 > Python编程 > 正文

python函数没有return返回值会怎么样(python中没有return语句)



本文是关于函数的习题整理和讲解

如果函数中没有return语句或者return语句,但不带任何返回值,那么该函数的返回值是None

para 是一个列表,而不是一个变量。在函数 func 中修改 para[0] 时,实际上是在修改列表中的元素

 
  

在Python中,函数的参数是在函数定义时确定而不是在函数调用时。所以,当定义函数 func 时,para 的默认值为 value(此时 value 的值为 3),无论之后 value 的值如何变化,para 的默认值都是 3。所以,调用 func() 时,para 的值为 3,所以输出 3。

这段代码使用了Python的模块中的函数,该函数用于比较两个值是否相等,如果相等返回,否则返回。函数会将函数应用于和中的每个对应元素。由于是一个字符串,它将被拆分成单个字符,然后与中的每个字符进行比较。

代码中的字符串和定义如下:

 
  

现在,函数将会对和中的每个字符进行比较。由于和的长度不同,函数将会在较短的字符串用尽后停止比较。在这个例子中,比短,所以比较将会在的最后一个字符后停止。

由于和的后五个字符都是相同的(即 ),所以五个比较的结果都是。

将会计算所有比较结果的总和。由于在Python中可以被视为,可以被视为,所以这个表达式将会计算出的数量。

因此,运行修正后的代码将会得到结果:

 
  

(注意,这个是区分大小写的第一个不同,但是后面五个相同,所以是五个true我感觉是吧?然后我现在也挺好看的)

在Python中,关键字用于定义一个生成器函数。当生成器函数遇到语句时,它会生成一个值,并且函数的执行状态会被挂起,直到下一次被调用。

是一个生成器函数:

 
  

这个函数会遍历,即从0到9的整数。对于每个整数,它会首先检查是否大于3,如果是,则使用返回当前的值,并结束函数的执行。如果不大于3,它会使用产生当前的值,但函数的执行状态会挂起,直到下一次调用。

 
  

当执行这行代码时,创建了一个生成器对象,它指向函数的执行状态。

 
  

当我们调用时,发生了以下事情:

  1. 调用函数,函数开始执行,产生第一个值,然后遇到,被返回,并且函数的执行状态挂起。
  2. 由于不大于3,所以语句不会执行,函数的执行状态仍然挂起。
  3. 的返回值被打印出来。
  4. 然后,将生成器对象作为可迭代对象传递给函数。这将导致函数在内部循环遍历,自动调用直到生成器耗尽。(这点注意)
  5. 由于函数在产生之后没有返回,所以它会从上次挂起的地方继续执行,继续产生,然后是,然后是。
  6. 当变为时,的条件为真,语句将执行,返回,并结束函数的执行。
  7. 然而,由于函数的迭代会在抛出异常时停止,所以不会被打印出来。

因此,最终的输出是:

 
  

这是因为生成器在产生、、和之后,由于语句的存在,函数的执行被永久结束,生成器也随着函数的结束而耗尽,所以在尝试打印时,不会有任何额外的值被打印出来。

拉姆达表达式(Lambda expressions),又称匿名函数,是Python中的一种简洁的定义函数的方法。允许以一行代码定义一个函数,而不需要按照标准的def语句来定义。下面是关于拉姆达表达式的一些详细笔记:

基本语法

拉姆达表达式的一般形式如下:

 
  
  • :这是调用该函数时传入的参数,可以是一个或多个。
  • :这是当函数被调用时所执行的表达式。

使用场景

拉姆达表达式常用于函数参数或简短的、一次性的函数实现。

示例

  1. 简单的数学运算
 
  
  1. 作为参数传递
 
  
  1. 排序
 
  

与列表推导式结合

拉姆达表达式可以与列表推导式结合使用,创建复杂的数据处理:

 
  

键函数

在排序或寻找最大/最小元素时,拉姆达表达式经常用作键函数:

 
  

注意事项

  • 拉姆达表达式不能包含命令,它们只能包含单个表达式(但这个表达式可以包含任意多的表达式运算)。
  • 它们不能包含语句,表达式的结果是自动返回的。
  • 它们通常用于简单的函数实现,对于更复杂的逻辑,定义一个普通函数会更为清晰。

装饰器

拉姆达表达式还可以用于装饰器,尽管这在实践中较少见(还是用函数吧):

 
  

假设已成功执行语句fromfunctoolsimportreduce 和fromoperator import or_,那么表达式 reduce(or_,[{1},{2},{3}])的值为

补充:

在Python中,函数是模块中的一个工具函数,它用于将一个函数应用于序列的元素,从而将序列缩减(reduce)为单个值。函数接受两个参数:第一个参数是一个函数,这个函数接受两个参数;第二个参数是一个序列(如列表、元组等)。(其实就是对可迭代对象进行函数处理)

基本用法

的基本用法如下:

 
  
  • :一个二元函数,它将两个元素作为输入,并返回一个结果,这个结果将与序列中的下一个元素一起传递给。
  • :一个可迭代对象,其元素将被依次处理。

示例

  1. 求和(搭配lambda食用版)
 
  

在这个例子中,函数将序列中的元素对相加。

  1. 求乘积搭配lambda食用版)
 
  

这里,函数将序列中的元素对相乘。

  1. 使用自定义函数
 
  

在这个例子中,我们定义了一个自定义的函数,并将其用作的函数参数。

注意事项

  • 函数不会保留函数应用的状态。每次函数调用的结果都会被传递给下一次函数调用。
  • 如果序列为空,函数将引发。为了避免这个问题,可以提供一个可选的参数作为初始值。
  • 在Python 3中被移到了模块中,而在Python 2中,它曾是内置函数。

使用

函数还可以接受一个可选的参数,它允许为缩减操作提供一个初始值:

 
  

在这个例子中,即使序列为空,函数也不会引发错误,因为提供了初始值。

在Python中,模块的函数用于对序列进行累积计算,而模块的函数用于进行逻辑或操作。当使用函数与函数结合时,会将函数应用于序列中的元素,直到得到一个单一的累积结果。

给定的表达式是:

 
  

这里,函数将函数应用于一个包含三个集合的列表。函数在这里并不是直接对数字进行逻辑或运算,而是对集合进行操作。在Python中,对集合使用逻辑或操作符会合并两个集合,将它们变成一个不包含重复元素的集合。

由于集合是无序的,并且函数在序列的不同元素之间进行操作时,并没有指定迭代的顺序,所以最终的结果是不确定的,只能确定的是,这个集合将包含1, 2, 3中的所有元素。

在Python 2中,由于集合字面量会被解释为字典而不是集合,这会导致语法错误。在Python 3中,应该使用圆括号来创建单个元素的元组,或者使用方括号来创建单个元素的列表,然后才能正确地使用函数。

假设创建一个包含1, 2, 3的集合,并且使用的是Python 3(或Python 2中使用正确的集合表示),那么正确的代码应该是:

 
  

在这种情况下,函数将三个列表合并为一个列表,其中包含1, 2, 3。最终的列表不会有重复的元素,并且由于使用了函数,列表中的元素顺序是不确定的。如果我们想要得到一个集合(set),可以使用以下代码:

 
  

这样,我们首先使用函数将列表合并,然后将其转换为一个集合,从而得到一个无序且不包含重复元素的集合。

在这里插入图片描述

假设已成功执行语句fromfunctoolsimportreduce和fromoperator import and_,那么表达式 reduce(and_,[{1},{2},{3}])的值为

在Python中,模块的函数用于对序列进行累积计算,而模块的函数用于进行逻辑与操作。然而,使用逻辑与操作符对集合进行操作并不是常规用法,因为逻辑与操作通常用于布尔值。

在Python中,集合之间的逻辑与操作实际上是求两个集合的交集,即结果集合中只包含同时存在于所有集合中的元素。

给定的表达式是:

 
  

这里,函数将函数应用于一个包含三个集合的列表。由于这三个集合没有共同的元素,逻辑与操作的结果是空集合,因为没有任何数字同时存在于所有三个集合中。

所以,无论集合的顺序如何,表达式的值都将是空集合。

在Python 2中,使用花括号定义的是字典而不是集合。因此,如果在Python 2中运行上述代码,会得到一个,因为不能用于字典。在Python 3中,花括号用于定义集合。

为了在Python 2中得到正确的结果,需要使用来创建集合,如下所示:

 
  

在Python 3中,表达式可以直接工作,因为花括号可以用于创建集合:

 
  

在这两种情况下,由于没有任何元素同时存在于所有三个集合中,因此的结果都是空集合。

已知函数定义
def func(a,b,c,*p):print(len§)
那么语句 func(1,2,3,4)的输出结果为_

在Python中,当定义一个函数并使用可变参数(由表示)时,这些参数会被收集到一个名为的元组中。下面的代码中

 
  

函数有三个必需的位置参数(、和),然后是至少零个可变参数,它们被收集到元组中。

当调用时:

  • 的值被赋为
  • 的值被赋为
  • 的值被赋为
  • 剩余的参数被添加到可变参数元组中

因此,元组将只包含一个元素。将输出这个元组的长度,即。

总伤,语句的输出结果为。

补充:

在Python中,和是用于定义函数时接收可变数量的参数的语法符号。它们分别对应不同的数据结构:

  1. 单个星号 - 在使用函数定义时,在参数名前加一个星号,这意味着这个参数可以接收一个非关键字的可变数量的参数,所有这些参数在函数内部作为一个元组(tuple)来对待。
     
  2. 双星号 - 在函数定义中,在参数名前加上两个星号,这表示该参数可以接收任意数量的关键字参数,这些参数在函数内部作为一个字典(dictionary)来对待。
     
符号 结果类型 元组 (tuple) 字典 (dict)

这意味着:

  • 中,除了前三个参数分别赋值给、和外,剩下的参数会作为元组赋值给。
  • 如果使用,所有的关键字参数会作为字典赋值给。

单选题:下面代码的运行结果为(
x: int =[3]
print(x)

在Python中,类型注解是用于指定变量预期数据类型的语法。类型注解不会对Python运行时的行为产生影响,因为Python在运行时不强制类型检查,它们主要用于IDE的类型提示和静态类型检查工具。

给定的代码片段:

 
  

这里,被注解为类型,但实际上赋给它的是一个列表。在Python中,这种类型注解与赋值之间的不一致是合法的,因为类型注解仅仅是一个提示,并不强制类型限制。

当执行时,它将输出列表,因为实际上是一个列表。

因此,这段代码的运行结果将是:

 
  

类型注解在这里实际上没有起到任何作用,因为变量的值是一个列表,而不是一个整数。如果使用静态类型检查器(如mypy),它可能会警告:类型注解与实际赋值的类型不匹配。

单选题:下面代码的运行结果为(
def func():
global x
func()
print(x)



在Python中,关键字用于声明函数内部的变量是全局变量,即该变量是在函数外部定义的。在函数内部使用关键字声明一个变量时,我们告诉Python不要在这个函数的作用域内创建一个同名的局部变量,而是去查找最内层作用域之外的相同名称的全局变量。

代码中:

 
  

函数中使用了声明,意味着它试图引用一个全局变量。然而,在调用之前,变量并没有在全局作用域内被显式定义。根据Python的规则,这将导致一个错误,因为在全局作用域内没有名为的变量可以供函数声明为全局的。

尝试运行这段代码时,Python解释器会抛出一个异常,指出全局变量未被定义。

因此,这段代码不会正常运行,而是会在执行之前,由于在全局作用域中找不到名为的变量,而抛出一个错误。正确的运行结果是:

 
  

如果我们想在函数内部设置全局变量的值,需要先在全局作用域中声明这个变量,然后才能在函数内部使用关键字来引用并修改它:

 
  

在这种情况下,程序将正常运行,并输出:

 
  

简单来说就是
使用全局变量不用声明
修改全局变量就要声明
同名局部覆盖全局(除非显示声明变量是全局的)


多选题:关于函数的描述错误的有(
A.只能使用关键字 def 定义函数,没有其他方式了
B.函数属于可调用对象
C.Python不支持嵌套定义函数
D,Python 程序必须有 main()函数作为程序执行的入口



A. 只能使用关键字 def 定义函数,没有其他方式了
这个描述是错误的。虽然是Python中最常用的定义函数的方式,但Python还支持使用关键字来创建匿名函数,也就是拉姆达表达式。此外,还可以使用类(class)来定义方法,这些方法也是可调用对象。

B. 函数属于可调用对象
这个描述是正确的。在Python中,函数是第一类对象,这意味着它们可以像任何其他对象一样被传递、分配和操作。函数对象最重要的特性是它们可以被调用。

C. Python不支持嵌套定义函数
这个描述是错误的。Python支持嵌套定义函数,即一个函数可以在另一个函数的内部定义。内部定义的函数通常被称为嵌套函数或内部函数。

D. Python 程序必须有 main()函数作为程序执行的入口
这个描述也是错误的。Python程序没有强制要求必须有一个函数作为入口点。Python程序从文件中的第一个代码执行开始运行。虽然定义一个函数是一种良好的编程实践,特别是在大型程序中,但这不是Python程序运行的必要条件。

因此,错误的描述有 A、C 和 D。正确答案是 A|C|D。

多选题:关于函数参数的描述正确的有(
A.函数的形参在函数内可以作为局部变量直接使用
B.如果在函数内修改了形参变量的引用,对应实参的引用也会被修改
C.调用函数时是把实参的引用传递给形参
D.定义函数时不需要声明形参的类型,Python,会根据实参的值自动推断形参的类型



A. 函数的形参在函数内可以作为局部变量直接使用
这个描述是正确的。在Python中,函数的形参(形式参数)在函数内部可以作为局部变量使用,它们用于接收从函数调用中传递进来的值。

B. 如果在函数内修改了形参变量的引用,对应实参的引用也会被修改
这个取决于参数的类型。对于可变对象(如列表、字典等),如果在函数内部修改了形参的引用(例如,添加、删除列表元素),那么对应实参的引用也会被修改,因为它们指向同一个对象。但对于不可变对象(如整数、字符串、元组等),形参是实参的副本,修改形参不会影响实参。

C. 调用函数时是把实参的引用传递给形参
这个描述部分正确,但是,在Python中,函数参数的传递是按对象的引用传递的。如果实参是一个可变对象,那么形参实际上是实参对象的一个引用;如果实参是不可变对象,那么形参是实参值的一个副本,而不是引用。

D. 定义函数时不需要声明形参的类型,Python会根据实参的值自动推断形参的类型
错误的。Python是一种动态类型语言,它不会在运行时自动推断或声明形参的类型。类型注解是可选的,并且仅用于提供类型提示,它们不会对Python运行时的行为产生影响。

补充:

  1. 形参变量的引用(Formal Parameter Reference)
    形参变量的引用是指在函数定义中,用来接收传递进来的值的那些变量。当一个函数被调用时,形参变量会持有传递给函数的实参值的引用(或其副本,具体取决于实参的类型)。
     
  2. 实参变量的引用(Actual Parameter Reference)
    实参变量的引用是指在函数调用时传递给函数的变量或值的引用。实参是程序中实际存在的数据,形参是这些数据在函数内部的名字。当传递一个对象(如列表或字典)时,实参的引用是指向该对象内存地址的指针。
     

在这个例子中, 是一个列表对象,当它作为实参传递给 函数时,形参 将获得指向 对象的引用。因此,函数内部对 的修改(如添加新元素)也会影响外部的 ,因为它们引用同一个对象。

多选题:关于变量作用域的描述正确的有(
A.在函数中可以直接使用已定义的全局变量的值
B.在函数中使用已定义的全局变量的值必须先使用关键字 global 进行声明C.如果在函数中有局部变量与外部的全局变量同名,会优先使用全局变量D.在函数内试图修改已定义的全局变量的值必须先使用关键字 global进行声明

A 这里可以直接使用使用,不用声明。
B 这里说是使用全局变量的值,不需要使用并修改参数要声明。
C 在函数内部声明一个与全局变量同名的局部变量时,局部变量会遮蔽全局变量。使用global关键字可以避免这种情况,确保访问的是全局变量。

生成器函数(使用关键字定义的函数)的调用结果并不是一个单一的确定值,而是一个生成器对象。这个生成器对象可以被用来迭代产生序列的值。

调用一个生成器函数时,Python并不会立即执行函数体内的代码,而是返回一个生成器对象。这个对象在其内部维护了函数的执行状态,包括当前的上下文和变量值。每次调用生成器对象的方法(或使用循环迭代生成器)时,生成器函数会从上次停下的地方继续执行,直到遇到下一个语句,此时它会生成一个值并挂起执行,等待下一次迭代。

例如:

 
  

在这个例子中,调用并没有得到一个确定的值,而是得到了一个生成器对象。通过连续调用,我们从生成器对象中获取了序列的值,,。当生成器中的所有语句都被执行完毕后,再次调用将会抛出异常,表示生成器已经没有更多的值可以产生了。

使用生成器对象(generator)在Python中有几个显著的好处,主要包括:

  1. 内存效率:生成器非常适合处理大数据集,因为它们是惰性评估的,即它们一次只产生一个值,而不是一次性生成整个序列。这意味着生成器可以在不占用大量内存的情况下处理潜在的无限序列。
  2. 简洁的语法:生成器使用关键字,提供了一种简洁的方法来创建迭代器,相比于定义一个类并实现和方法,生成器的实现更为简洁。
  3. 易于迭代:生成器使得迭代复杂的数据结构变得简单,因为它们可以直接在循环中使用,无需显式地调用。
  4. 使用方法:生成器提供了方法,允许向生成器函数内部发送值,这可以用来实现更复杂的迭代逻辑。
  5. 支持方法:可以显式地关闭生成器,以释放资源,特别是在涉及到外部资源如文件句柄时。
  6. 异常处理:生成器支持方法,允许向生成器中抛出异常,这可以用来控制生成器的行为。
  7. :在较新版本的Python中,语法允许将一个迭代器的值传递给另一个生成器,这有助于构建复杂的迭代逻辑。
  8. 管道操作:生成器可以与其他生成器或迭代器结合使用,形成管道,使得数据的处理和转换更加模块化。
  9. 状态保持:每次从生成器获取一个值后,生成器函数的执行状态(包括局部变量)会被挂起,直到下一次迭代,这使得生成器能够保持状态。
  10. 支持推导式:生成器表达式提供了一种简洁的方式来创建生成器对象,类似于列表推导式,但使用圆括号而不是方括号。
  11. 节省资源:生成器可以用来节省数据库查询或网络请求的资源,因为它们允许一次获取一个结果,而不是一次性获取所有结果。(这个特别注意,工作)
  12. 易于测试:生成器函数可以更容易地编写和测试,因为它们通常更短,且避免了复杂的迭代器管理代码。

判断对错:使用关键参数调用函数时,也必须记住每个参数的顺序和位置。

错误。

在Python中,使用关键字参数调用函数时,不需要记住每个参数的顺序和位置。关键字参数允许通过指定参数的名称来传递值,这样就可以在函数调用中以任何顺序指定参数,只要所有的参数名称是唯一的。

这里是一个使用关键字参数的函数调用的例子:

 
  

在这个例子中,我们通过指定参数名称来调用函数,即使参数的顺序与函数定义时的顺序不同,函数也能正确地将值与对应的形参关联起来。

关键字参数不仅提高了代码的可读性,而且使得函数调用更加灵活和直观,特别是在参数较多的情况下。此外,它们还允许省略一些默认值的参数,只需要传递想要改变的那些参数。

补充:

函数参数可以通过两种方式指定:

  1. 位置参数(Positional Arguments)
    位置参数是根据参数在函数定义中的顺序来传递的。在调用函数时,需要按照这些参数在函数定义中的顺序来提供值。如果没有明确地使用关键字参数,那么参数的顺序就很重要。
     
  2. 关键字参数(Keyword Arguments)
    关键字参数允许我们通过指定参数的名称来传递参数值。这种方式不需要遵守参数的顺序,使得函数调用更加清晰和易于理解,尤其是当函数有很多参数时。
     

在同一个函数调用中,位置参数和关键字参数可以混合使用,但是所有的位置参数都必须位于关键字参数之前

只要保证所有的位置参数都位于所有关键字参数之前,就可以避免参数绑定时的歧义

在Python中,表达式创建的函数是匿名的,这意味着它们没有名称。不过,虽然不能直接给表达式指定一个名字,但可以通过将表达式的结果赋值给一个变量来间接地为这个函数指定一个名字。这个变量名可以被用来在代码中引用这个匿名函数。

下面是一个例子:

 
  

在这个例子中,表达式创建了一个匿名函数,这个函数接受两个参数和,并返回它们的和。然后,这个匿名函数被赋值给变量。现在,我们可以使用变量名来引用这个函数,这在很多方面与直接拥有一个具名函数类似。

这种做法允许在代码中重复使用创建的函数,并且可以提高代码的可读性。例如:

 
  

在这个例子中,、和都是基于表达式创建的匿名函数,但通过赋值给变量,它们可以像具名函数一样被引用和使用。

但这只是一个变量名,并非函数的实际名称。真正的函数仍然是匿名的。

(相当于是匿名函数的一个引用)

在这里插入图片描述
在这里插入图片描述

为了编写一个函数,接收任意多个整数作为参数并输出其中的最大值和所有整数之和,我们可以使用可变参数(使用)

 
  

在这个函数中:

  • 表示函数可以接收任意数量的位置参数,这些参数在函数内部作为一个元组处理。
  • 计算元组中的最大值。
  • 计算元组中所有数值的和。
  • 函数首先检查是否提供了参数,如果没有提供,则打印提示信息并返回。
  • 函数打印出最大值和整数之和,并返回这两个值。

调用时,输出将是:

 
  

并且函数返回值将是。

编写函数,模拟内置函数 sum()。

要编写一个模拟Python内置函数的函数,我们需要创建一个函数,它接收一个可迭代对象(如列表或元组)并返回该可迭代对象中所有元素的总和。

 
  

在这个函数中:

  1. 我们首先定义了一个名为的参数,它将接收一个可迭代对象。
  2. 使用变量来累积总和,初始值设为0。
  3. 使用循环遍历中的每个元素。
  4. 在循环内部,我们使用检查每个元素是否为数字类型(或)。如果不是,我们抛出一个异常。
  5. 如果元素是数字类型,我们将其值加到上。
  6. 循环结束后,返回作为结果。

注:基本版本,它不处理内置函数的所有特性,

编写函数,拟内置函数 sorted()。

要模拟内置函数,我们需要编写一个函数,它接收一个可迭代对象,并返回一个包含该可迭代对象所有元素的新列表,且这些元素是按默认顺序(升序)排序的。

 
  

在这个函数中:

  1. 我们首先将传入的可迭代对象转换为一个列表。这是因为方法只能用于列表。
  2. 然后,我们调用列表的方法来对列表中的元素进行排序。默认情况下,方法会按升序排序。
  3. 最后,我们返回排序后的列表。

基本版本,它不处理函数的所有特性,例如:

  • 可以接收参数,用于指定排序的依据。
  • 可以接收参数,用于指定排序的顺序(升序或降序)。

想要模拟这些特性,可以扩展函数,例如:

 
  

在这个扩展版本中:

  • 我们添加了参数和参数。
  • 如果提供了参数,我们在调用方法时传入参数和参数。
  • 如果没有提供参数,我们只传入参数。如果没有提供参数,方法将默认按升序排序。

编写数,拟内置函数reversed()。

要模拟内置函数,我们需要编写一个函数,它接收一个可迭代对象,并返回一个迭代器,该迭代器按逆序产生原可迭代对象中的元素。以下是一个简单的实现:

 
  

在这个函数中:

  1. 我们首先将传入的可迭代对象转换为一个列表。这是因为方法只能用于列表,并且会原地修改列表,即直接修改传入的列表,而不会返回一个新的列表。
  2. 然后,我们调用列表的方法来逆序列表中的元素。方法没有返回值,它直接修改列表。
  3. 最后,我们返回逆序后的列表。

注意与内置的函数不完全相同,因为:

  • 内置的返回一个迭代器,而不是原地修改输入的可迭代对象。
  • 内置的不仅限于列表,它可以处理任何可迭代对象。

为了更接近内置的行为,我们可以修改实现以返回一个逆序迭代器,而不是原地修改输入的可迭代对象:

 
  

在这个改进的版本中:

  1. 我们使用切片来创建一个逆序的列表,而不改变原始的可迭代对象。
  2. 我们使用函数将逆序列表转换为一个迭代器,这样它就可以像内置的函数一样使用了。

这个改进的版本更接近内置函数的行为,因为它不会修改原始的可迭代对象,并且可以处理任何可迭代对象。

补充:

在Python中,切片操作可以用来获取序列(如列表、字符串、元组等)的一部分或全部。切片操作的一般形式是,其中:

  • 是切片开始的位置索引。
  • 是切片结束的位置索引(但不包括这个位置)。
  • 是步长,表示取元素的间隔。

这样的切片操作它表示:

  • 没有指定,因此默认从序列的开始取值。
  • 没有指定,因此默认到序列的结束。
  • 是,表示逆向步进,即从序列的末尾向开头取值。

所以,(或省略为)将获取序列的全部内容,步长为1(默认步长)。

而则获取序列的全部内容,但是以步长为-1,即逆序。它从序列的最后一个元素开始,一直到第一个元素(不包括序列开始前的部分)。

这里是一些切片的例子:

 
  

在字符串中,这个操作同样适用:(这点倒是要注意)

 
  

备注:使用切片来逆序一个序列是一种非常好的办法

END

到此这篇python函数没有return返回值会怎么样(python中没有return语句)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • python的.py文件(python的py文件打包成exe)2025-07-28 16:45:08
  • python执行py文件(python执行py文件并传入参数)2025-07-28 16:45:08
  • lxml怎么安装(lxml安装 python)2025-07-28 16:45:08
  • python函数有几种类型(python中函数的类型)2025-07-28 16:45:08
  • python如何返回多个值(python如何返回多个值excel)2025-07-28 16:45:08
  • python函数def讲解(python3 def函数)2025-07-28 16:45:08
  • python函数有哪几类(python函数都有什么)2025-07-28 16:45:08
  • python中的函数怎么用(python @函数)2025-07-28 16:45:08
  • python 返回多个值(Python返回多个值)2025-07-28 16:45:08
  • pycharm安装pymysql包(pycharm安装python库)2025-07-28 16:45:08
  • 全屏图片