导语
  在编程意义上的函数其实是指完成某种操作的代码块,当然这个是个人的理解,但是这个概念在所有的编程语言中都是通用的。这个代码块用来完成某写特定的操作。但是在数学上的函数却是表示某种对应关系,这两者之间还是有一定的区别的。但是在某种角度上讲我们所编程的这种代码块其实就是表示的是参数与返回值之间的关系。从这个角度上来说其实也可以看做是两个函数的概念是一样的。

文章目录

  • Python中函数的定义
  • 何为函数
  • 何为过程
  • 函数的参数
  • 总结

Python中函数的定义

  在Python中函数是逻辑结构化和过程化的编程方式

# Python 中定义函数的方式# def 定义函数的关键字
# test 函数名
# ():定义参数
def test(x):# 函数体print("this is function")x+=1print(x)
test(6)# 无参数的函数
def test():return 2*3+1;a = test()
print(a)

何为函数

  为什么要使用函数,在工作或者开发中,有些工作是重复的并且常用的,如果将这些重复常用的工作做一个抽象总结,抽象出来一个适合全部功能使用的代码。通过这样的方式,就将一些特定的功能从整体中抽取出来,从而简化了代码,提高了开发效率。在使用相同功能的时候就直接调用者函数就可以了。

# Python 中定义函数的方式# def 定义函数的关键字
# test 函数名
# ():定义参数
def test(x):# 函数体print("this is function")x+=1print(x)
test(6)
def test():return 2*3+1;a = test()
print(a)

  使用函数的好处

  • 1、减少代码重复编写
  • 2、容易维护
  • 3、可扩展性强

何为过程

  过程在Python就是一个没有返回值的函数。过程的本质也是一种函数

def test01():message = 'this is test nihui'print(message)
def test02():msg = "hello world!"print(msg)return msgt1 = test01()t2 = test02()print(t1)print(t2)

从上面代码的输出效果来看,如果在Python中没有显式的指定返回值,其实Python会默认返回一个None,从这个角度上来看其实过程就是一个没有返回值的函数。下面就来看看如下的扩展。

def test01():message = 'this is test nihui'print(message)
def test02():msg = "hello world!"print(msg)return msgdef test03():return 1,2,3,4,[123,12,"1321"],(213,"34"),{"nihui":"name","temp":(123,"test")}t1 = test01()t2 = test02()t3 = test03()print(t1)print(t2)print(t3)

  在Python中返回多个值的时候返回的是一个元组,之前了解过元组是不可变的,第一层元素是不能修改的。其实在返回的时候将所有的值看做是一个元组返回整体。返回的其实还是一个元素。

函数的参数

  形式参数 形参变量只能在调用的时候被分配内存单元,在调用结束的时候立即释放为变量分配的内存空间,当然这个形参只在指定的函数内部是有效的,在函数运行结束的时候就不可以使用这个变量了。
  实际参数实际参数是作为变量传入到函数中进行操作的参数,可以是常量、变量、表达式、函数等。在进行操作的时候必须指定的参数值。

def calc(x,y):res = x**y;return resres = calc(2,3)
print(res)

位置参数和关键字
位置参数,缺一少一都不行
关键字参数,无须一一对应,缺一不行多一个不行。

def test(x,y,z):print(x)print(y)print(z)
test(1,2,3)# 关键字参数
def test(x,y,z):print(x)print(y)print(z)
test(y=1,z=2,x=3)

如果混合使用位置参数必须在关键字参数的左边,例如下一些使用会报错

test(1,3,y=2)
test(1,3,z=2,y=4)
test(z=2,1,3)

默认参数

def handle(x,type="nihui"):print(x)print(type)handle("test")
handle("test",type="hello")
handle('hello',"world")

参数组

  在字符串拼接的时候 * 表示与列表有关,** 就是与列表有关,那么这里提到的参数组的使用也跟这个地方是一样的。
  在Python中定义函数的时候,有时需要对函数参数做扩展,这个时候就是用到参数组。在使用的时候,如果传入多个值的时候,可以只取其中的一个值来使用。如果不传值的时候就为空。

def test(x,*args):print(x)print(args)
test(1,2,3,4,5,6)def test(x,**kwargs):print(x)print(kwargs)
test(1,y=2,z=3)位置参数和关键字参数,一个参数不能传两边值
test(1,y=1,z=2,z=3)
test(1,2,21,312,y=2,z=4)#这个函数可以接收任何形式的参数,就看你对这些参数如如何处理了。
def test(x,*args,**kwargs):print(x)print(args)print(kwargs)test(123,123,123,123,{"nihui":"test","age":123},y=2,z=3)

总结

  上面的内容分析了关于函数的定义,以及函数参数的使用方式,了解了什么叫做函数,什么叫做过程。以及位置参数和关键字参数等概念。

Python精通-Python函数使用相关推荐

  1. Python精通-Python学习路线详细介绍

    导语   自从上次说完Python学习路线之后就再也没有更新过关于Python的东西,那么从这篇博客开始将对整个的Python技术栈开启以场全面的旅途,更其他系列一样,博主会不定期的更新关于Pytho ...

  2. Python精通-Python局部变量与全局变量的区别

    导语   在子程序定义的变量被称为是局部变量,在程序一开始定义的变量被称为是全局变量.全局变量的作用域是整个程序的生命周期,而局部变量的作用域知识在其定义的范围内可以使用.当全局变量与局部变量出现重名 ...

  3. Python精通-Python字符串格式化操作

    导语   在之前的分享中提到了关于Python基本的数据类型,并且提到了一个基本数据类型字符串,花费了三篇博客的时间对于字符串的基本操作做了分享.这篇博客主要分享关于字符串格式化的问题,在开发中经常会 ...

  4. Python精通-Python字典操作

    导语   之前的内容中分享了关于数字.字符串.布尔值.列表.元组等数据类型,接下来看一个与之前的数据结构不一样的数据类型.字典,这里的字典与我们使用的字典是不一样的,它有点类似于编程意义上的Map,是 ...

  5. Python精通-Python入门基础

    导语   入坑Python系列开始了 文章目录 Python入门程序 Python程序运行方式 Python代码分析 执行一个操作内容 变量 条件语句 基本数据类型 字符串 数字 基本运算 加法 减法 ...

  6. Python精通-Python集合操作详解

    导语   在前面的分享中说完了基本的数据类型,基本的数据类型有六种分别是数字.字符串.列表.元组.列表.以及布尔值.接下来说的就是在Python中比基本数据类型变量等知识更加深入的数据类型叫做集合 文 ...

  7. Python精通-Python元组操作

    导语   在介绍元组之前那,先来回顾一个变量赋值问题.对于字符串来说一旦被创建如果需要进行修改的时候就如同下图中展示的一样,需要新开辟空间对新的值进行存储.对于其他语言也是同样适用.   元组作为Py ...

  8. Python精通-Python列表操作

    导语   在之前的关于Python的分享中对于基本数据类型中字符串.布尔值等做了详细的分享.接下来的内容就是在Python中的另一个比较重要的基本数据类型列表,关于列表在之前对于字符串进行切分的时候简 ...

  9. Python内置函数sorted()从入门到精通

    Python内置函数sorted()可以对列表.元组.字典.集合.字符串.range对象以及其他可迭代对象进行排序,返回排序后的列表,支持使用key参数指定排序规则,支持reverse参数指定升序或者 ...

最新文章

  1. CentOS 7 为firewalld添加开放端口及相关资料
  2. jzoj1373-食物链【并查集】
  3. 职教云自签系统部署教程及源码
  4. PetShop 4.0 SQLHelper
  5. IConfiguration的命令行解析
  6. sql2005数据库备份—sql语句
  7. Python-split()函数的使用
  8. UVA 10917 Walk Through the Forest 最短路 + DP
  9. Assimp Android 编译
  10. 盘点HTML页面跳转的5种方法
  11. 计算机极差全距符号,极差相对值的计算公式
  12. 智慧组塔抱杆组立动态在线监测装置
  13. c# Monitor
  14. php f4v元数据,CKplayer 超酷视频播放器(支持flv,f4v,mp4,rtmp)X2 bulid2020.09.20
  15. 过滤器:活性碳过滤器技术参数全面解读
  16. linux防火墙ip黑名单,【转】Linux防火墙(iptables)之黑名单
  17. java实现mysql拦截_java分页拦截类实现sql自动分页
  18. android自适应屏幕翻转,Android中正确自适应屏幕翻转
  19. ANSYS二次开发:Python解析ansys fluent结果文件
  20. android 仿钢笔代码,仿ps画布钢笔抠图工具代码

热门文章

  1. idea项目在maven projects中变灰色带有删除线的解决办法
  2. apiDoc构建源代码注释的接口文档
  3. 《数学建模:基于R》——1.1 数据的描述性分析
  4. vue+webpack 安装常见插件
  5. spring boot几个初始配置文件
  6. Java从零开始学十四(包和访问控制)
  7. php后门木马常用命令
  8. fpga 输入信号除了1和0还有别的状态?
  9. 更新FreeBSD Ports的方法
  10. 【React深入】深入分析虚拟DOM的渲染原理和特性