函数 (一) 基础

一、函数的作用

函数可以让我们代码结构更清晰,而且避免了代码的重复,冗余,使一段代码或者功能可以反复的被调用,大大提高了开发效率

二、函数的定义

def 函数名(参数1,参数2,*args,默认参数,**kwargs):
    """注释:函数功能和参数说明"""
    函数体
    ……
    return 返回值

实例如下:

1 def my_max(x,y):
2     '''比较两个值的大小,返回最大的那个数'''
3     if x > y:
4         return x
5     if x < y:
6         return y
7     else:
8         return '%s=%s'%(x,y)

三、函数的调用

调用函数很简单,就是已经定义的函数名加括号,如果此函数需要参数,那括号内就要加入需要传的参数。如,调用上面定义的my_max函数的方法如下:

1 my_max(5,2)

四、函数的返回值

我们只需要在函数的最后加上一个return,return后面写上你要返回的值就可以了。

接下来,我们就来研究一下这个return的用法。

return关键字的作用

  return 是一个关键字,在pycharm里,你会看到它变成蓝色了。你必须一字不差的把这个单词给背下来。

  这个词翻译过来就是“返回”,所以我们管写在return后面的值叫“返回值”

  要研究返回值,我们还要知道返回值有几种情况:分别是没有返回值、返回一个值、返回多个值

没有返回值

  不写return的情况下,会默认返回一个None,等同于 return None

有一个返回值

  return 后面跟上返回值即可,调用函数的话可以用一个变量来接收这个返回值(就是将函数执行完之后的返回值赋给这个变量),如下:

1 def my_sum(x,y):
2     '''求两个数字的和,返回两数之和'''
3     return x+y
4 
5 sum = my_sum(3,2)   #调用函数
6 print(sum)          #结果:5

有多个返回值

  如果有多个返回值的话只需在return后面依次跟上返回值,用逗号隔开。

  调用函数 的时候可以用一个变量来接收(此时返回的是一个元祖,赋值给此变量),也可以用多个变量来接收,此时返回值会按变量的顺序,一 一赋值(变量数要跟返回值的数目相等),如下:

1 def getNum():
2     '''返回三个数字的函数'''
3     return 1,3,6
4 
5 res = getNum()   #用一个变量接收返回值
6 print(res)        #结果是:(1, 3, 6)
7 
8 a,b,c = getNum()  #用一个变量接收返回值

五、函数的参数

函数的参数分为形参和实参。简单来讲,形参就是定义函数的时候的参数,而实参就是调用函数的时候传递的参数

而在调用函数进行传值的时候,传参方式又分为位置传参和关键字传参。

位置传参是按照位置进行传值(此时,解释器会按照顺序,将实参一 一对应赋值给形参),

关键字传参是按照关键字进行传值(这种传参方式是直接将实参以赋值的方式传给形参,如x=1,y=2)

位置传参的优点是方便,只需一一写出需要传递的实参就行,关键之传参的优点是可以改变参数顺序。

如下:

1     '''求两个数字的和,返回两数之和'''
2     return x+y
3 
4 my_sum(3,2)      #位置传参
5 my_sum(x=3,y=2)  #关键字传参

此外,还有一种参数是默认参数,是指在定义函数的时候,其中一个或者多个参数已经指定了默认值

这种情况下在调用函数进行传参的时候,依然可以传递实参给此形参,如果不传,此参数的值即为默认值,如下:

1 def user_info(name,sex='男'):
2     '''用户信息'''
3     print('%s的性别是%s'%(name,sex))
4 
5 user_info('小明')     #结果为:小明的性别是男生 。不用指定的情况下,默认是男
6 user_info('小花','女')#结果是:小花的性别是女。    传参的情况下,会覆盖默认值

另外,还有一种特殊的参数,他可以接收任何数量的参数,称为动态参数

  而动态参数又有两种,一种是参数名前加一个星号 " * " 这种参数可以接收不限数量的位置参数,然后组成一个元祖

  另一种是动态参数是参数名前加两个星号 “ ** ”  这种参数可以接收不限数量的关键字参数,然后组成一个字典

  如下:

1 def func(*args,**kwargs):
2     print(args)
3     print(kwargs)
4 
5 func(1,2,3,a='a',b='b',c='c')
6 #结果为:
7 # (1, 2, 3)
8 # {'b': 'b', 'c': 'c', 'a': 'a'}

需要注意的是:如果一个函数的参数包括:位置参数,默认参数,以及动态参数 *args 和 **kwargs,那么他们的顺序应该是:(位置参数,*args,默认参数,**kwargs)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小古哥的博客园

JavaScript 正则表达式入门教程

正则表达式是描述一组字符串特征的模式,用来匹配特定的字符串 主要分三个部分:基本语法、RegExp对象的方法、JS中支持正则表达式的String对象方法 一、基...

34630
来自专栏武军超python专栏

2018-7月19日系统模块字符串操作

每天遇到的新单词: recursion   n:递归 objece      n:对象 maximum     adj:最大值 exceed      ...

14830
来自专栏散尽浮华

python基础随笔

一: 作用域 对于变量的作用域,只要内存中存在,该变量就可以使用。 二:三元运算 name = 值1 if 条件 else 值2 如果条件为真:result =...

23390
来自专栏Coco的专栏

javascript中函数声明和函数表达式浅析

18290
来自专栏深度学习思考者

C++常见问题(二)——虚函数、类与结构、引用与值传递

一 文件输入输出的方式 C++定义了ifsteam、ofstream和fstream 3种类型以用来支持文件的输入输出。 二 异常 异常就是程序运行时出...

19760
来自专栏小白的技术客栈

Python内置数据结构之字符串

字符串 今天跟大家来说一说Python中的字符串数据结构。 ? 上文回顾 让我们回顾一下可变类型及不可变类型: 不可变数据类型:str、int、tuple ...

41680
来自专栏有趣的django

5.python函数

函数介绍 定义:  函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可。 特性:减少重复代码、使程序变的可扩展、使程...

31760
来自专栏C语言及其他语言

C语句和程序流

1、 表达式和语句 在C中,表达式代表值,而语句代表给计算机的指令。 表达式 表达式由运算符和操作数组成。最简单的表达式只是一个不带运算符的常量或者变...

34560
来自专栏LIN_ZONE

es6语法需要注意的部分

由于无符号右移运算的结果是一个 32 位的正数,所以负数的无符号右移运算得到的总是一个非常大的数字。例如,如果把 -64 右移 5 位,将得到 13421772...

9540
来自专栏开源优测

[快学Python3]Tuple(元组)

概述 元组,使用小括号()来标识,其特点是:元组中的元素不可修改 下面我们看下如何创建元组的示例: tuple1 = (u'DeepTest', u'开源优测'...

27650

扫码关注云+社区

领取腾讯云代金券