【Lemon】Python的函数
目录
函数的定义
函数的参数
函数的返回值: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的函数相关推荐
- 第三章:Python基础の函数和文件操作实战
本課主題 Set 集合和操作实战 函数介紹和操作实战 参数的深入介绍和操作实战 format 函数操作实战 lambda 表达式介绍 文件操作函数介紹和操作实战 本周作业 Set 集合和操作实战 Se ...
- 【Python】函数图像绘制:二维图像、三维图像、散点图、心形图
[Python]函数图像绘制:二维图像.三维图像.散点图.心形图 所有需要用的包 二维图像 三维图像 散点图绘制 心形图绘制 所有需要用的包 from mpl_toolkits.mplot3d imp ...
- 技术图文:Python 匿名函数 VS. C# Lambda表达式
背景 前段时间在知识星球上立了一个Flag,至少写10篇关于 Python,Matlab 和 C# 对比的总结. 这是第 2 篇,从定义和应用两个角度来对比 Python 的匿名函数 与 C# 的La ...
- Python divmod() 函数
Python divmod() 函数 python divmod() 函数把除数和余数运算结果结合起来,返回一个包含商和余数的元组(a // b, a % b). 函数语法 divmod(a, b) ...
- python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递
python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...
- python中函数包括标准库函数吗_Python语言和标准库(第二章:函数)
a-如何创建函数. b-给出一些指导原则,帮助思考如何创建和组织程序以使用函数. c-如何编写函数,使随后可以询问它们的工作方式和实现的功能. 2.1将程序放在单独的文件里 为了更加方便,从现在开始, ...
- c int转字符串_【C++实现python字符串函数库】字符串匹配函数startswith与endswith
[C++实现python字符串函数库]字符串匹配函数startswith与endswith 这两个函数用于匹配字符串的开头或末尾,判断是否包含另一个字符串,它们返回bool值.startswith() ...
- python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法
python中函数和方法的区别?Python编程判断当前获取的对象是函数还是方法 目录
- python log函数怎么打_Python的log日志功能及设置方法
python log函数怎么打_Python的log日志功能及设置方法_Elaine要当律师的博客-CSDN博客
- Python staticmethod() 函数
Python staticmethod() 函数 正在上传-重新上传取消 Python 内置函数 python staticmethod 返回函数的静态方法. 该方法不强制要求传递参数,如下声明一个 ...
最新文章
- #技术分享# “乐高”内核的诞生
- java float 四舍五入_JAVA如何把一个float四舍五入到小数点后指定位数.
- 如何迭代pandas dataframe的行
- Linux CENTOS6.5 图形命令互转
- 32tomcat的目录结构
- 令人拍案叫绝的EfficientNet和EfficientDet
- bzoj 1419: Red is good
- 广东石油化工学院大学计算机基础,大学计算机基础习题集-北京石油化工学院文档.doc...
- MixGo V1.0 发布,混合型高性能 Go 框架
- ISO50001认证辅导,ISO50001能源管理体系认证至少符合以下条件
- 遗传算法和禁忌搜索解TSP
- 对封装继承多态的理解
- android 10 长按Power键跳过关机对话框直接关机
- The following packages will be SUPERCEDED by a higher-priority channel是什么意思?
- IRF(智能弹性架构)
- project telecom / dianxin / shenfenzheng / SIM
- pytorch Module里的children()与modules()的区别
- 路由器与交换机配置——交换机默认网关(实现跨网段telnet)
- 手机号码归属地查询(php+redis)
- 第一次做项目经理总结_如何做最好的项目经理(项目经理管理项目攻略)!(赠书籍)...