通过前两节python基础知识博文让我们了解了python的基础知识,本节博文让我们一起学习一下函数知识。如果博文对您有用,请记得关注、点赞哦。
1.函数调用
Python内置了很多有用的函数,我们可以直接调用。
要调用一个函数,需要知道函数的名称和参数,比如获取变量类型的type(),调用type函数如下:
1.1.普通函数
>>> result = "字符串"
>>> print(type(result))
<class 'str'>
type函数不仅可以接收自定义变量,也可以接收自定义函数名。如下:
>>> def test():
>>> print(111)
>>> print(type(test))
<class 'function'>
也有python内置的函数可以接收任意多个参数的,那就是math,它可以返回任意参数中最大的值。如下:
>>> result1 = max(1, 2, 3)
>>> print(result1)
1
>>> result2 = max(10, 4, 5, 8, 9)
>>> print(result2)
10
1.2.数据转换
Python内置的常用函数还包括数据类型转换函数,比如int()函数可以把其他数据类型转换为整数:
>>> int('123')
123
>>> int(12.34)
12
>>> float('12.34')
12.34
>>> str(1.23)
'1.23'
>>> str(100)
'100'
>>> bool(1)
True
>>> bool('')
False
2.自定义函数
在Python中,定义一个函数要使用def语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。
2.1.普通函数
我们以自定义一个求绝对值的my_abs函数为例:
def my_abs(x):
if x >= 0:
return x
else:
return -x
print(my_abs(-100))
打印出来的值为:
100
请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。如果没有return语句,函数执行完毕后也会返回结果,只是结果为None。return None可以简写为return。举例子:
def my_abs(x):
return
print(my_abs(-100))
打印出来的值为:
None
尽快我们将自定义函数定义了最终的返回值类型,依然会返回None,举例子:
def my_abs(x) -> str:
return
print(my_abs(-99))
打印出来的值为:
None
2.2.空函数
如果我们想定义一个什么不都不做的函数,可以使用pass关键词来表示,举例子如下:
def test():
pass
print(test())
打印出来的返回值为:
None
2.3.返回多个值
函数可以返回多个值吗,答案是肯定的。举例子:
def point(x, y):
nx = x + 1
ny = y - 1
return nx, ny
re1, re2 = point(1, 2)
print("re1:{}=>re2:{}".format(re1, re2))
此时在自定义函数point函数体内return了2个返回值,返回值与返回值之间使用逗号隔开。
打印返回的值为:
re1:2=>re2:1
3.函数参数
3.1.位置参数
先写一个计算x2的函数:
def power(x):
return x * x
对于power(x)函数,参数x就是一个位置参数。
当我们调用power函数时,必须传入有且仅有的一个参数x:
>>> print(power(10))
100
3.2.默认参数
默认参数是指定义函数参数是,给与参数默认值,举列子:
def student(name, sex, age=6):
print('name:', name)
print('sex:', sex)
print('age:', age)
student("liyang", "man")
输出打印的内容为:
name: liyang
sex: man
age: 6
此时给予函数参数age默认值了。在调用函数的时候,只需要传输name,sex参数值即可。
4.递归函数
在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。
举个例子,我们来计算阶乘n! = 1 x 2 x 3 x … x n,用函数fact(n)表示,可以看出:
fact(n)=n!=1×2×3×⋅⋅⋅×(n−1)×n=(n−1)!×n=fact(n−1)×n
所以,fact(n)可以表示为n x fact(n-1),只有n=1时需要特殊处理。
于是,fact(n)用递归的方式写出来就是:
def fact(n):
if n==1:
return 1
return n * fact(n - 1)
re = fact(10)
print(re)
此时打印的内容为:
3628800