函数基础

目录

  1. 什么是函数
  2. 为什么需要函数
  3. 函数的参数

1. 什么是函数

函数(function):用于完成特定任务的程序代码的自包含单元。

在面向对象编程的类中,函数通常被称作方法。

  • 内置函数
# 有多少内置函数(BIF)
dir(__builtins__)
  • 函数命名规则:
    函数名必须符合标识符的规范(可以包含字母、数字、下划线但是不能以数字开头)

  • 注意:print是函数对象 print()是调用函数

  • 语法

def 函数名([形参1,形参2,形参3....]):
    代码块

2. 为什么需要函数

  • 1、函数的使用可以重用代码,省去重复性代码的编写,提高代码的重复利用率。如果程序中需要多次使用某种特定的功能,那么只需要编写一个合适的函数就可以了。程序可以在任何需要的地方调用该函数,并且同一个函数可以在不同的程序中调用,就像我们经常使用的print()和input()函数一样。

  • 2、函数能封装内部实现,保护内部数据,实现对用户的透明。很多时候,我们把函数看做“黑盒子”,即对应一定的输入会产生特定的结果或返回某个对象。往往函数的使用者并不是函数的编写者,函数的使用者对黑盒子的内部行为并不需要考虑,可以把精力投入到自身业务逻辑的设计而不是函数的实现细节。只有函数的设计者或者说编写者,才需要考虑函数内部实现的细节,如何暴露对外的接口,返回什么样的数据,也就是API的设计。

  • 3、即使某种功能在程序中只使用一次,将其以函数的形式实现也是有必要的,因为函数使得程序模块化,从“一团散沙”变成“整齐方队”,从而有利于程序的阅读、调用、修改和完善。

eg:定义一个幂的计算函数

#定义一个幂的计算函数
def power(x,y):
    result = 1
    for i in range(y):
        result *= x
    return result
power(2,3)
  • 这样当我们之后想要进行幂运算的时候就可以直接用power()

3. 函数的参数

3.1 形参和实参

• 形参(形式参数) 定义形参就相当于在函数内部声明了变量,但是并不是赋值

• 实参(实际参数)指定了形参,那么在调用函数时必须传递实参,实参将会赋值给对应的形参,简单来说有几个形参就要有几个实参

3.2 函数的传递方式

• 定义形参时,可以为形参指定默认值。指定了默认值以后,如果用户传递了参数则默认值不会生效。如果用户没有传递,则默认值就会生效

• 位置参数:位置参数就是将对应位置的实参赋值给对应位置的形参

• 关键字参数 : 关键字参数可以不按照形参定义的顺序去传递,而根据参数名进行传递

• 混合使用位置参数和关键字参数的时候必须将位置参数写到关键字参数前面去

def wo(a, b=2):
    print('a和b是形参,c是实参,1是传递的参数值,2是形参的默认值')
    print('其中a是位置参数,b是关键字参数')
    print(a, b) # 1 3
c = 1
wo(c,d=3)

3.3 不定长参数

• 定义函数时,可以在形参前面加一个*,这样这个形参可以获取到所有的实参,它会将所有的实参保存到一个元组中

• 带*号的形参只能有一个,可以和其他参数配合使用

• *形参 只能接受位置参数,不能接受关键字参数

• **形参 可以接收其他的关键字参数,它会将这些参数统一保存到字典当中。字典的key就是参数的名字,字典的value就是参数的值

• **形参只有一个,并且必须写在所有参数的后面

def cao(a, *a, **a):
    '''
        *a 处理的是位置参数 **a 是处理的是关键字参数
    '''
    pass
d = 1
e = (2,3,4)
f = 'qjh'
cao(d, e, f = f)
    

3.4 参数的解包

• 传递实参时,也可以在序列类型的参数前添加星号,这样它会自动的将序列中元素依次作为参数传递

• 要求序列中的元素的个数必须和形参的个数一致

def fn(a,b,c):

    print('a =', a)
    print('b =', b)
    print('c =', c)

# 创建一个元组
t = (20,30,40,50)

# 创建一个字典.可以通过**来对字典进行解包
d = {'a':1,'b':2,'c':3}

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

推荐阅读更多精彩内容

  • 第 2 章:函数基础 函数式编程不是仅仅用 function 这个关键词来编程。如果真这么简单,那我这本书可以到此...
    iKcamp阅读 952评论 0 7
  • 一 没有使用函数式编程之前带来的问题 代码的组织结构不清晰,可读性差 实现重复的功能时,你只能重复编写实现功能的代...
    红衣漫漫阅读 413评论 0 0
  • 一 、没有使用函数式编程之前带来的问题 1.代码的组织结构不清晰,可读性差2.实现重复的功能时,你只能重复编写实现...
    光明_7c13阅读 293评论 0 0
  • 一、函数基础 1.什么是函数 函数就是对实现某一特定功能的代码段的封装 2.函数的分类 系统函数: 系统已经给我们...
    星龙断月阅读 201评论 0 0
  • 为了什么而出发还是忘了 快结束的时候留恋的 也和别人不同 玩过几个新奇的游戏 看过几个可爱的表情 尝过几口幸福的味...
    阿吉0528阅读 233评论 0 1