欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Python笔记——第八章函数

程序员文章站 2024-03-14 23:01:47
...

Python笔记——函数

笔记里主要罗列了一些我在看网课时候记录的知识点,偶尔总体浏览一下还是挺好的,比较实用,但是没有特别多的细节~笔记是按讲课顺序记录的,欢迎大家指正补充。

  • Python中本身有很多内置函数,比如round函数。当我们想要对变量a保留小数点后两位数的时候,可以用下列的代码:
round(a,2)

在保留小数点后两位的同时,这个函数还遵循四舍五入的规则。如果不用这个函数但是依然想保留小数点后几位的话,可以用循环的方法来实现。

  • 函数分为几个特性:功能性、隐藏细节以及避免编写重复代码。功能性是说函数都是为了实现某一个特定的功能而编写的,隐藏细节则是当我们想完成一个功能时可以直接调用函数而不过问功能实现的细节,避免编写重复代码这个很好理解就不多赘述。除了上述三点,通过调用各个函数也可以使我们的代码组织的更好~
  • 在Python中定义函数的基本结构如下:
def funcname(parameter_list):
    pass

pass表示指代任意代码语句。需要注意的是,上面的parameter_list并不是必须要有的,也就是说,这个函数可以没有任何实参的输入。而且,可以在函数末尾通过加上return函数来返回特定的值。就像下面这个代码块一样,如果没有return语句,则默认这个函数返回None。

def funcname(parameter_list):
    pass
    return ...
  • 两个简单的例子
def add(x,y):
    result=x+y
    return result

这个例子返回的是两个变量相加后的结果。
需要注意的是,在定义完函数后,要想使用函数必须调用函数。而且必须先定义函数再进行调用,不然会报错。

def print(code):
    print(code)

这个代码块的返回值就是None,因为它没有return任何变量回来。但在实际操作时会发现,这个定义的函数会报错,错误类型是递归次数超过了最大上限。很明显这个函数在自调用。
在自定义函数的时候要注意,自定义函数的函数名不要与Python的内置函数名相重,不然就会出现问题。

当我们想要改变Python中递归次数的最大上限,可以用下列代码:

import sys
sys.setrecursionlimit(1000000)

这样就修改好了,但是一般电脑允许的递归次数也不会超过上千次,所以这里设置一百万有点夸张。。

  • 一般在函数代码中,如果碰到return语句,则return后面的语句就都不会执行了。其他语言在自定义函数的时候,还需要定义返回值的类型,但是在Python中不需要这样,因为Python中并没有这样的规定,它可以返回任意类型的值。
  • 一种很有用的返回形式。当我们在自定义函数中要一下子返回多个变量时,可以这么写:
return damage1,damage2

此时若将返回的值赋值给变量damage,那么damage的类型是元组。我们有两种方法去访问元组中的两个值,一是用序号的方法去索引,二是用序列解包的方法。虽然两种方法都可以,但是不推荐用序号索引的方法,因为当序列里有很多变量的时候,用这个方法就会非常影响代码的可读性。

序列解包就是直接用下面的这种方法对多变量赋值:

skill1,skill2=damage

在写代码的时候,我们要学会用有意义的变量名去接收变量,而不是总是用索引号去调用。

  • 序列解包。当我们要对三个变量a,b,c都赋值1的时候代码应该写成:
a=1
b=1
c=1

或者在Python中可以用简单一点的方法:

a,b,c=1,1,1

如果换一个思路,用一个变量d来接收1,1,1这三个数,那么d就是一个tuple类型的变量。再将这个变量赋值给a,b,c三个变量就完成了序列解包。

a,b,c=d

序列解包顾名思义就是把一个序列里的多个变量拆分开来赋值给多个变量,而元组属于序列的一种。需要注意的是,在序列解包的时候,序列中的变量数与被赋值的变量数要相等。

  • 函数的参数。函数的参数有几种类型:必须参数、关键字参数和默认参数。
    必须参数,顾名思义,其特性是在parameter_list这个参数列表中定义的参数是必须传递的。
    在定义函数时的参数是形式参数,比如def add(x,y)中的x和y就是形式参数。
    而调用函数时给函数的参数则是实际参数,比如y=add(1,2),这里的1和2就是实际参数。
    关键字参数是在实际参数中起说明作用的。比如c=add(y=3,x=1),这样标明了实参到底隶属于哪个变量,这样就不用必须按照形参的顺序给定实参了。
    最后一种默认参数。可以给参数设定默认值,这样用户可以不必给出那些带有默认值的参数。比如下面这样:
def print_studentfiles(names,gender='男',age=18,college='xx大学')

需要注意的几点是,不能把非默认参数放到默认参数的后面。如果想要改变其中一个默认参数的值,要在赋实参的时候说明清楚。比如赋实参的时候写age=17。最后,必须参数和默认参数不能混合调用,就是不能在写实参的时候在默认参数里夹杂一个必须参数。

相关标签: Python学习笔记