python(8)函数

函数是什么

1.函数是对实现某一功能的代码的封装
2.函数可以实现代码的复用,从而减少代码的重复编写

Python 中函数的特性:

1.函数的参数可以是python 中的任意数据类型,并且参数的数量可以是零个或多个。

2.函数也可以通过关键字 return 返回任何数量的 Python 中的任意数据类型,作为结果

image.png

函数分类

1.内置函数
​ 为了方便我们的开发,针对一些简单的功能,python解释器已经为我们定义好了的函数即内置函数。

​ 对于内置函数,我们可以拿来就用而无需事先定义,如len(),sum(),max()

2.自定义函数
​ 很明显内置函数所能提供的功能是有限的,这就需要我们自己根据需求,事先定制好我们自己的函数来实现某 种功能,以后,在遇到应用场景时,调用自定义的函数即可。
1)局部变量
local()输出局部变量值
在函数中使用

  • 局部使用变量名的时候,查找顺序:局部---》全局---->-内置
    2)全局变量
    global()输出全局变量值
    在函数外使用
  • 全局使用变量名时,查找顺序:全局---->内置

形参和实参

什么是形参?顾名思义,形参就是形式上的参数,可以理解为数学的X,没有实际的值,通过别人赋值后才有意义。相当于变量。

什么是实参?顾名思义,实参就是实际意义上的参数,是一个实际存在的参数,可以是字符串或是数字等。

image.png

以上面的例子介绍下什么是形参和实参:

1. 形参

对于函数来说,形式参数简称形参,是指在定义函数时,定义的一个变量名;

形参分为:位置参数和默认参数
a. 位置参数


image.png

b. 默认参数


image.png

默认参数在函数定义的时候,就已经绑定了实际的值了。
调用函数时,可以给其传值,也可以不传。

不传值 就使用定义函数时绑定的值。
传值 就是使用传递的值。

2. 什么是实参

对于函数来说,实际参数简称实参。
是指在调用函数时传入的实际的数据,这会被绑定到函数的形参上;
函数调用时,将值绑定到变量名上,函数调用结束,解除绑定,并且实参将不再存在于程序中。因此,大家要明白,这里的 位置参数 和 关键字参数 是在函数调用的情况下的概念。
a.位置参数传递参数

image.png
  • 要注意,如果这样传参的话就要对应着你上面设置的变量名传,因为系统时无法识别出那个是name的,它只能按照位置识别。

b.关键字参数传递参数

image.png

使用关键字参数传参时,不必考虑形参的位置。但是需要注意,关键字必须和在定义函数时形参一致。

3. 万能参数: *args 和 **kwargs

a. 用 * 表达式接收传进来的任意多个未明确定义的位置参数
def foo(x, y, *args):
print(args)

foo(1, 3, 5, 6)
在函数体内接收到的参数会放在元组中

b. 用 ** 表达式接收传进来的任意多个未明确定义的关键字参数
def func(x, y, **kwargs):
print(kwargs)

func(1, 3, name='shark', age=18)
在函数体内接收到的参数会放在字典中

函数的返回值

如何函数周产生的值如果函数之外要用就要返回值,并用一个变量去接受它 的返回值
没有return,就要一个变量接受它的返回值,就会是none

def f4():
return 1 ,2,‘qf’,[1,2],{'a':1}
r4 = f4()
print (r4)

def foo():
    n = 10 + 20
    return n     #返回值
 y = foo()      #返回值赋值给y
 print(y)


>>>def f2():
...     return       #返回值为空的时候就不会返回值,放回none空
... 
>>> r = f2()
>>> print(type(r),r)
<class 'NoneType'> None


 def f3():
     n = 1 + 20

 r2 = f3()    #没有返回值,则r2会赋值为空
 print(type(r), r)
========================
def f4():
    return 1, 2, 'qf', [1,2], {'a': 1}

r4 = f4()   #也就是 r4= (1, 2, 'qf', [1, 2], {'a': 1})
print(r4)
(a1, 2, 'qf', [1, 2], {'a': 1})  #r4是输出一个元组

a,b,c,li,dic = f4()    #元组可以进行解包
print(a,b,c,li,dic)

*_, d5 = f4()       #*_是表示后面变量匹配完之后剩下的
>>> print(*_,d5)
1 2 qf [1, 2] {'a': 1}
>>> print(*_)
1 2 qf [1, 2]


a, *_, d6 = f4()
image.png
>>> def func(arg):
...     return arg
... 
>>> def f1():
...     n = 1+2
... 
>>> def f1():
...     n = 1+2
...     return n
... 
>>> f = func(f1)
>>> print(f)
<function f1 at 0x7f5b8a562200>
>>> print(id(f))
140031139652096
>>> print(id(f1))
140031139652096
>>> print(f1)
<function f1 at 0x7f5b8a562200>
>>> n = f()
>>> print(n)
3
>>> type(f1)
<class 'function'>
>>> type(f)
<class 'function'>


image.png

什么是局部变量和全局变量

局部变量就是函数内使用的
其他都是全局变量

名称空间和作用域
名称空间是表示变量名是哪儿声明的(定义的)
作用域是变量名可以在哪儿生效 (使用)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第5章 函数和函数式编程 5.1 引言函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数...
    VIVAFT阅读 4,529评论 0 5
  • 这篇笔记记录的知识点:函数的基本概念自定义函数函数的几种参数 编程的三种方式:1.OOP 面向对象编程,万物皆对象...
    古月半半阅读 4,533评论 0 2
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 3,576评论 0 0
  • 函数只定义一次,但可能被执行或调用任意次。JS函数是参数化的,函数的定义会包括一个称为形参的标识符列表,这些参数在...
    PySong阅读 2,586评论 0 0
  • 函数和对象 1、函数 1.1 函数概述 函数对于任何一门语言来说都是核心的概念。通过函数可以封装任意多条语句,而且...
    道无虚阅读 10,102评论 0 5