Python的函数简介绍
简单的学习了一些Python的函数,大概可以按两个主题来了解:内置函数和自定义函数。
而关于函数的概念,大概讲的是一些指令构成的代码段,用来达成某种功能,比如大家都很熟悉的print()函数,主要的作用就是实现输出或者说是打印到屏幕,其中是怎么样工作和实现的并不需要我们动脑筋,当然还有诸如:input()、type()、len()等等。
而python2.x和python3.x之间有一些差别,有些函数的用法在python3.x中作了精简,我知道的有一个在python2.x里输入函数有两个:一个是input(),可根据你输入的是整数还是字符串返回对应的数据类型,还有一个是raw_input()则是把所有的输入数据都作为字符串看待,到了python3.x里就只保留了input(),但功能确是与raw_input()一样。其他的一些可能是用法上有改变,基础功能基本保持一致。
我学习用的python是3.9版的,所以学习也主要是以python3.x的函数为主。
python的内置函数
指的就是python自身就设定好的,可以直接使用的那些函数,大概是有六十八个吧。
从功能上可以做一个划分:(我在菜鸟教程’python3内置函数’中数了数有69个,这里统计缺了1个,漏了谁呢?)
- 数学运算函数7个
- 类型转换函数24个
- 序列操作函数8个
- 对象操作函数9个
- 反射操作函数8个
- 变量操作函数2个
- 交互操作函数2个
- 文件操作函数1个
- 编译执行函数4个
- 装饰器3个
可以使用help(函数名)的语句查看各个函数的功能:
help(print)
Help on built-in function print in module builtins:
print(...)
print(value, ..., sep=' ', end='\n', file=sys.stdout, flush=False)
Prints the values to a stream, or to sys.stdout by default.
Optional keyword arguments:
file: a file-like object (stream); defaults to the current sys.stdout.
sep: string inserted between values, default a space.
end: string appended after the last value, default a newline.
flush: whether to forcibly flush the stream.
查看了几个函数的功能,发现有些简单就像pring的帮助就很简单,有些对于我现在的这个水平来说很复杂,比如str的帮助……
所以只能暂时的先了解了解,慢慢的在深入。
自定义函数(创建自己的函数)
根据自己的需求把一段编写好的具有满足需求功能的代码块整合到一起,类似打包一样。
自定义函数有自身的语法规则一般使用def 函数名(参数):的方式定义。
函数在python中也称为方法,一般说调用某个方法,其实就是指调用一个函数。以方法的词义来理解函数就比较清晰:完成某事的过程描述,即要做一件事,那么这件事怎么来做呢?过程就是方法,也就是函数。
基本语法:
def 函数名(形式参数列表): # 即形参,可以有多个
函数体 # 函数体
return 返回值 # 可以有也可以没有。
函数名() #使用时可以直接用函数名来调用函数
- 函数名命名规则与变量相同。
- 形式参数简称为形参,是函数体运行时需要的数值的一般形式的代表,形参个数没有限制。
- 调用函数时,实际传入函数的数值,称为实参。
- 如果函数的形参指定了默认值,则调用函数时,会把形参的默认值以实参代入函数运行。
- return语句至关重要。python会一直等待函数通过return语句将函数运算结果返回到函数的调用执行处,只要结果不返回,python就会一直等待。
- 没有return语句,默认返回None。
示例:自定义一个函数:判断整数是偶数还是奇数。
def odd_even_judge (n):
if n % 2 == 0 :
return f"{n}是一个偶数!"
else :
return "是一个奇数!"
def add_ab(): # 这种情况小括号里可以不放参数
return 10 + 20
t = add_ab()
if __name__ == "__main__": # 这条语句可注释。主程序
print(odd_even_judge(2))
print(odd_even_judge(77))
print(t)
运行结果:
2是一个偶数!
这是一个奇数!
30
匿名函数的使用
匿名函数指定就是lambda 函数,一种没有函数名的函数
基本语法:
# lambda 函数的语法只包含一个语句,表现形式如下:
# lambda 函数参数 : 函数体
lambda [arg1 [,arg2,.....argn]]:expression
-
lambda 是 Python 预留的关键字,[arg…] 和 expression 由用户自定义。
[arg…] 是参数列表,Python 中函数(function)的参数列表是一样的,可以有非常多的形式。
expression 是一个参数表达式,表达式中出现的参数需要在[arg......]
中有定义,并且表达式只能是单行的,只能有一个表达式。 -
lambda 函数是匿名的:
所谓匿名函数,通俗地说就是没有名字的函数。lambda函数没有名字。 -
lambda 函数有输入和输出:
输入是传入到参数列表argument_list的值,输出是根据表达式expression计算得到的值。 -
lambda 函数拥有自己的命名空间:
不能访问自己参数列表之外或全局命名空间里的参数,只能完成非常简单的功能。示例:lambda函数在python内置函数中的序列操作函数中用的比较多
# lambda x, y: x*y # 函数输入是x和y,输出是它们的积x*y
# lambda:None # 函数没有输入参数,输出是None
# lambda *args: sum(args) # 输入是任意个数参数,输出是它们的和(隐性要求输入参数必须能进行算术运算)
# lambda **kwargs: 1 #输入是任意键值对参数,输出是1
# 计算平方数
p = map(lambda x: x ** 2, [1, 2, 3, 4, 5])
print(list(p)) # 一般序列操作函数返回值是迭代器,需要用list转换成列表打印
#提供两个列表,将其相同索引位置的列表元素进行相加
s = map(lambda x, y: x + y, [1, 3, 5, 7, 9], [2, 4, 6, 8, 10])
print(list(s))
运行结果:
[1, 4, 9, 16, 25]
[3, 7, 11, 15, 19]
函数是很简单的,但函数中的参数却是需要多多研究的。