一、函数定义以及作用
函数/方法/function(功能):函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段(块)。函数能提高应用的模块性和代码的重复利用率。比如我们天天使用的函数print(),这个就是函数(一个Python内置的函数)。也可以自己创建函数,这类函数就叫做用户自定义函数。就是把一堆零散的代码放在一起并组织起来完成一个特定任务。
为什么需要函数:
载体------函数编程模式,让电脑的运算/逻辑以函数的方式进行呈现
组织------函数将原有零散的代码根据功能进行组织
复用------对高频次使用的代码段(功能)进行重复使用
封装------基于功能进行封装,无须关注内部细节。只需调用即可
清晰------提高整体代码本身的可读性
按需------需要的时候可随时调用(呼之则来,挥之则去)
(1)函数,数学定义y=f(x),y是x的函数,x是自变量。
(2)Python函数:由若干语句组成的语句块,函数名称、参数列表,组织代码的最小参数,完成一定的功能。
结构化编程是对代码的最基本的封装,一般按照功能组织一端代码。封装的目的是为了复用,减少冗余代码。代码更加简洁美丽,可读易懂。
二、函数的分类
(1) 内建函数:max()
(2) 库函数:math() ceil()等
三、函数的定义、调用
函数必须先声明再使用。函数名代表函数本身,定义需要在调用前,也就是说调用的时候已经被定义过了,否则会抛出异常的,声明函数的关键字/命令使用def函数。
def语句定义函数:
def 函数名(参数列表): 函数体(代码块) [return 返回值]*
函数名就是标示符,命名要求一样。语句必须缩进四个空格,注意缩进的从属关系。
Python的函数如果没有return语句,隐式会返回none值。
定义中的参数列表成为形式参数,只是一种符号表达,简称形参。
调用:函数定义,只是声明了一个函数,它不会被执行,需要调用才会生效。调用方式就是函数名加上小括号,括号内写上参数。调用时候的参数就是实际参数,是实实在在传入的值,成为实参。定义的时候叫做形参,调用的时候叫做实参。
def myfunction(a,b): return a+b print(myfunction(1,2))
def myfunction(a,b): #申明函数 print('hello,python') return a+b myresult=myfunction(1,2) #调用函数赋值变量 print(myfunction(1,2)) #打印变量
函数是可调用的对象,利用callable()查询。调用通过函数名myfunction加两个参数,返回值可使用变量接收。计算的结果,通过返回值进行返回。必须加同类型的,复用的。
四、函数的参数
(1)参数调用时传入的参数要和定义的个数匹配(可变参数除外)。
(2)def f(x,y)调用的时候使用f(1,3),按照参数的定义位置顺序传入实参。
(3)关键字参数def(x,y,z)调用使用f(x=1,y=3,z=5),使用形参的名字来出入实参的方式,使用了形参的名字,顺序可以不一致。
(4)传参
f(z=none,y=10,x=[1]) f((1,) z=6,y=4.1)
要求位置参数必须在关键字参数之前,位置参数按照位置进行对应。位置在前,关键字在后。
五、可更改(mutable)与不可更改(immutable)对象
在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
-
不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
-
可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。
python 函数的参数传递:
-
不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。
-
可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响
python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。
一个函数的说明:可以使用help()打印函数说明。
help(print)
输出:
标签:调用,函数,la,Python,参数,def,定义 From: https://www.cnblogs.com/longlyseul/p/18124359