1.函数是完成某个特定功能的一组语句,是标准的代码块。
这段代码是用来解决一个问题或一类问题。
2.函数是功能,解决某一个问题的一个过程。
将一个大过程(目标)分解成 n 个小过程。如没有函数,完成任务可能需要很多的代码。这时我们就可以把完成特定功能的代码块放到一个函数里,直接调用或者复用函数。
编写代码的过程中都避免编写重复代码的操作,这时候会将有可能重复的代码封装起来并命名,当用到这个名字时,即是调用这段代码,就省了重复输入大量代码的麻烦。
def fun_name([参数列表]): #def function 函数名
#此时要注意函数名称定义和变量的命名规则保持一致
#任何传入参数和自变量必须放在圆括号中,圆括号可以用于定义参数。
#参数列表可以没有,也可以有多个
#函数内容以冒号开始,并且缩进
函数代码 #由一行或者多行完成特定功能代码组成
return #结束函数,不带表达式的return相当于返回None
>>>help() #利用help(function_name) 查看函数的帮助信息
Help on built-in function abd in module builyins:
abs(x, /)
Return the absolute value of the arguement.
>>>
分类可以通过三种方式来分类:
1.通过判断有无参数进行分类
意义:随着代码量的增加,函数定义者和函数的调用者不一定是同一个人,进行分类会简化操作。
2.通过判断有无返回值进行分类
意义:如果函数运行完成,需要将某个结果给调用者 return 结果。
3.通过定义者来分类
将这第一和第二种分类分别组合起来:
1.有参函数,有返回值:
>>>def test1(x, y):
>>> c = x + y
>>> return(c)
>>>b = test1(3,4)
>>>print(b)
结果为:7
2.有参函数,无返回值:
>>>def test2(x, y):
>>> c = x + y
>>> print(c)
>>>test2(2,1)
结果为:3
3.无参函数,有返回值:
>>>def test3():
>>> a,b = 3,4
>>> c = a + b
>>> return(c)
>>>d = test(3)
>>>print(d)
结果为:7
4.无参函数,无返回值:
这类函数不需要传入函数,也不需要返回值,调用这类函数的时候直接就输出结果。
1.全局变量
含义:在函数外定义的变量。
范围:即在一个函数内部定义的变量,只在本函数范围内有效。
1.1如何在函数中使用全局变量?
一定要声明 global 全局变量。
不要将全局变量的使用和传参当成一回事!
2.局部变量
含义:在函数内定义的变量。
范围:即从定义变量的位置到本源文件结束都有效。
函数内部会优先使用局部变量再使用全局变量。
调用函数也就是执行函数,在内存中函数的调用叫做压栈、弹栈。等函数执行完成后,函数就立刻出栈。
函数调用的基本格式如下:
[返回值] = 函数名([形参])
#形参指的是当初创建函数时要求传入的各个形参的值
#如果该函数有返回值,我们可以通过一个变量来接收,当然也可以不接收。
注意:
Python中的变量是没有类型的,但变量是可以指向任何对象的,而对象才是有类型的。
Python中的对象有可变对象(Number,String,Tuple等)和不可变对象之分(List,Dict等)。 区别可戳这篇文章,Python入门——四大容器解析
1.值传递
如果你传入的参数对象是不可变的对象:数字,元组,字符串,这个时候就是值传递。那么源对象是不会改变的。(被调函数新开辟内存空间存放的是实参的副本值)
2.引用传递
如果你传入的参数对象是可变对象:列表,字典,这个时候就是引用传递,如果参数在函数体内被修改,那么源对象也会被修改。(被调函数新开辟内存空间存放的是实参的地址)
意义:当函数参数特别多的时候,为了解决调用时传参麻烦。Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我们只要使用默认值就可以了。使用类时能够方便的创建类,而不需要传递一堆参数。
>>>lambda [参数1, 参数2... n]:语句
>>>lambda x,y:x + y
>>>def add(x, y):
>>> return x + y
注意:
在Python中,lambda虽然简化了代码书写,增强了代码维护成本,但代码的可读性下降了。
人生苦短,我用Python。
Python函数的学习还比较浅显,今天就先写到这里。