Python函数专题——函数的基本概念

一、什么是函数?

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.通过定义者来分类

  • 系统函数
  • 自定义
  • 第三方定义(开源公司、机构、组织或人士)、pip

将这第一和第二种分类分别组合起来:

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.局部变量
含义:在函数内定义的变量。
范围:即从定义变量的位置到本源文件结束都有效。 
函数内部会优先使用局部变量再使用全局变量。

七、函数的调用过程

调用函数也就是执行函数,在内存中函数的调用叫做压栈弹栈。等函数执行完成后,函数就立刻出栈。
函数调用的基本格式如下:

[返回值] = 函数名([形参])
#形参指的是当初创建函数时要求传入的各个形参的值
#如果该函数有返回值,我们可以通过一个变量来接收,当然也可以不接收。

注意:

  1. 创建函数有多少个形参,那么调用时就需要传入多少个值,且顺序必须和创建函数时一致。
  2. 即使该函数没有参数,函数名后的小括号不能省略。
  3. 解释性的语言代码是从上而下执行的。

八、Python中的值传递和引用传递

Python中的变量是没有类型的,但变量是可以指向任何对象的,而对象才是有类型的。
Python中的对象有可变对象(Number,String,Tuple等)和不可变对象之分(List,Dict等)。 区别可戳这篇文章,Python入门——四大容器解析

1.值传递
如果你传入的参数对象是不可变的对象:数字,元组,字符串,这个时候就是值传递。那么源对象是不会改变的。(被调函数新开辟内存空间存放的是实参的副本值)

2.引用传递
如果你传入的参数对象是可变对象:列表,字典,这个时候就是引用传递,如果参数在函数体内被修改,那么源对象也会被修改。(被调函数新开辟内存空间存放的是实参的地址)

九、函数的默认值

意义:当函数参数特别多的时候,为了解决调用时传参麻烦。Python函数默认值的使用可以在函数调用时写代码提供方便,很多时候我们只要使用默认值就可以了。使用类时能够方便的创建类,而不需要传递一堆参数。

十、函数递归

  1. 函数自身调用自身,叫做递归。
  2. 递归必须有终止条件,否则是一个死循环。

十一、lambda表达式(匿名函数)

>>>lambda [参数1, 参数2... n]:语句
>>>lambda x,y:x + y
>>>def add(x, y):
>>>	return x + y

注意:
在Python中,lambda虽然简化了代码书写,增强了代码维护成本,但代码的可读性下降了。

人生苦短,我用Python。
Python函数的学习还比较浅显,今天就先写到这里。

你可能感兴趣的:(python)