目录

函数的定义

函数的参数

函数的返回值:return

函数参数的拆包

函数的作用域


函数的定义

def 函数名():

# 函数内部的功能代码

# 函数内部的功能代码

# 函数内部的功能代码

可以将单一的功能封装成一个函数,在需要使用该功能的时候直接调用函数就可以了。

函数的作用: 封装代码。

函数的意义:提高代码的重用率。

函数的命名规范:可以由数字下划线组成,不能使用数字开头;不能使用python关键字,不要和内置函数和模块(第三方模块,官方库)重名。

函数的命名风格:推荐使用下划线命名法。

示例:

def func(n):for i in range(n):for j in range(i + 1):print('* ', end='')print()func(5)

函数的参数

函数的参数定义在函数后面的括号中

定义的参数叫形参,调用函数的时候传入的参数叫实参。

示例:

def add_number(a, b):print('a+b: ', a + b)add_number(3, 5)

1. 实参分类(实参可以是变量):

位置传参/位置参数:通过位置按顺序传递

关键字传参/关键字参数:通过参数名指定参数进行传递

示例:

def add_number(a, b):print('a+b: ', a + b)return a + b# 位置传参res = add_number(3, 5)# 关键字传参res1 = add_number(b=9, a=10)print(res, res1)

注意点:

位置参数与关键字参数可以一起用。

但是同时使用时,位置参数写前面,关键字参数写后面。

示例:

def add_number(a, b, c):return a + b + c# 位置传参 + 关键字传参res = add_number(3, c=5, b=4)print(res)

2. 形参:函数括号里面的就是形参

形参的分类:

必备参数(必须参数):定义了几个参数就要传递几个参数。

默认参数(缺省参数):可传可不传,不传的情况下使用默认值,传了的情况下使用传的值。

不定长参数:位置可前可后,但是一般放在后面。

*args:接收0个或多个位置参数

**kwargs:接收0个或多个关键字参数

示例:

# 必备参数def add_number(a, b, c):return a + b + cres = add_number(3, 7, 8)print(res)# 默认参数: 可传可不传def add_number1(a, b, c=90):return a + b + cres1 = add_number1(3, 7, 8)res2 = add_number1(3, 87)print(res1, res2)# 不定长参数def add_number2(a, b, c, *args):print('a=', a)print('b=', b)print('c=', c)print(args)add_number2(3, 7, 8, 45, 55, 6, 66)def add_number2(a, b, c, **kwargs):print('a=', a)print('b=', b)print('c=', c)print(kwargs)add_number2(a=3, b=7, c=8, d=45, e=55, f=6, g=66)

函数的返回值:return

函数中的返回值是由return来决定的。

函数中没有return就没有返回值,调用函数得到的结果就是None。

函数中返回多个值,直接下载return后面用逗号隔开就可以。

当函数执行到return之后,就会直接跳出函数,返回结果,后面的代码都不会再执行了。

# 注意:如果接收到的数据为None, 说明没有返回值

示例:

def add_number(a, b):return a + bres = add_number(3, 5)print(res)

函数参数的拆包

函数定义:

*:表示接收位置参数的不定长参数

**:表示接收关键字参数的不定长参数

示例:

def func(*args, **kwargs):print(args)print(kwargs)func(11,22,33, c = 7, d = 9, e = 10)# 输出结果:(11, 22, 33)#          {'c': 7, 'd': 9, 'e': 10}

函数调用:

*:可以对元组或列表拆包

**:可以对字典拆包

示例:

def func(a, b, c, d):print(a)print(b)print(c)print(d)tu= (11, 22, 33, 44)li = [333, 555, 777, 888]dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}# 对元组,列表进行拆包func(*tu)func(*li)# 对字典进行拆包func(**dic)

函数的作用域

1. 全局变量&局部变量

全局变量:直接定义在文件/模块中的变量。在该文件的任何地方都可以访问。

局部变量:定义在函数内部的变量。只有在函数内部才可以访问。

示例:

# 全局变量a = 100def func():# 局部变量b = 10print('打印全局变量a=', a)print('打印局部变量b=', b)print('打印全局变量a=', a)

2. 作用域

局部变量的作用域:函数内部

函数参数的作用域:函数内部

3. 在函数内部定义全局变量:使用global进行声明

示例:

def func(a, b):# 全局变量global cc = 10print('a=', a)print('b=', b)print('c=', c)func(1, 3)print(c)

4. 函数内部变量和全局变量同名时,在函数内部访问该变量,会优先使用局部变量

示例:

a = 100def func():a = 10print('a=', a)func() # 输出结果: a= 10

【Lemon】Python的函数相关推荐

  1. 第三章:Python基础の函数和文件操作实战

    本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...

  2. 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图

    [Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...

  3. 技术图文:Python 匿名函数 VS. C# Lambda表达式

    背景 前段时间在知识星球上立了一个Flag,至少写10篇关于 Python,Matlab 和 C# 对比的总结. 这是第 2 篇,从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的La ...

  4. Python divmod() 函数

    Python divmod() 函数 python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b). 函数语法 divmod(a, b) ...

  5. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  6. python中函数包括标准库函数吗_Python语言和标准库(第二章:函数)

    a-如何创建函数. b-给出一些指导原则,帮助思考如何创建和组织程序以使用函数. c-如何编写函数,使随后可以询问它们的工作方式和实现的功能. 2.1将程序放在单独的文件里 为了更加方便,从现在开始, ...

  7. c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith

    [C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...

  8. python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法

    python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录

  9. python log函数怎么打_Python的log日志功能及设置方法

    python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客

  10. Python staticmethod() 函数

    Python staticmethod() 函数 正在上传-重新上传取消​ Python 内置函数 python staticmethod 返回函数的静态方法. 该方法不强制要求传递参数,如下声明一个 ...

最新文章

  1. #技术分享# “乐高”内核的诞生
  2. java float 四舍五入_JAVA如何把一个float四舍五入到小数点后指定位数.
  3. 如何迭代pandas dataframe的行
  4. Linux CENTOS6.5 图形命令互转
  5. 32tomcat的目录结构
  6. 令人拍案叫绝的EfficientNet和EfficientDet
  7. bzoj 1419: Red is good
  8. 广东石油化工学院大学计算机基础,大学计算机基础习题集-北京石油化工学院文档.doc...
  9. MixGo V1.0 发布,混合型高性能 Go 框架
  10. ISO50001认证辅导,ISO50001能源管理体系认证至少符合以下条件
  11. 遗传算法和禁忌搜索解TSP
  12. 对封装继承多态的理解
  13. android 10 长按Power键跳过关机对话框直接关机
  14. The following packages will be SUPERCEDED by a higher-priority channel是什么意思?
  15. IRF(智能弹性架构)
  16. project telecom / dianxin / shenfenzheng / SIM
  17. pytorch Module里的children()与modules()的区别
  18. 路由器与交换机配置——交换机默认网关(实现跨网段telnet)
  19. 手机号码归属地查询(php+redis)
  20. 第一次做项目经理总结_如何做最好的项目经理(项目经理管理项目攻略)!(赠书籍)...

热门文章

  1. 如何通过Nginx代理将EasyNVR的视频流代理到其他IP地址?
  2. 【电气专业知识问答】问:蓄电池为何必须进行均衡充电?均衡充电何时进行、如何进行?
  3. jquery 点击旋转效果,点击图片旋转360度
  4. php利用phpexcel插件实现数据的导入和导出(支持csv\xls\xlsx格式和超过26个字段列)
  5. 蓝鲸智云环境搭建(1)
  6. 首次,第五轮学科评估结果不公开
  7. EA开发系列---回测
  8. DOC命令删除文件和文件夹
  9. 2021物联网产业链全景图谱(附PDF下载)
  10. Unity 播放本地视频