热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python3函数基础知识一

函数就是一种具有高健狀性、高使用率的代码块。Python自带了非常多的优秀的内置函数。同时允许用户自定义函数,这样大大的提高了编程的灵活性,这是每一种高

函数就是一种具有高健狀性、高使用率的代码块。Python自带了非常多的优秀的内置函数。同时允许用户自定义函数,这样大大的提高了编程的灵活性,这是每一种高级编程语言都带有的特性。内置函数可以通过查看工具指南即可达到使用的效果。这里将探讨Python自定义函数的使用技巧和关键点。

1、Python自定义函数的框架

def  function_name (formal parameters):

       function body

 return [expressions]

def 是定义函数的关键字,函数名和一对小括号是必须的。参数可以非必选,参数列表可以自由定制,可以传入几个参数或者多个参数。

2、Python函数参数的特殊传入(普通传入与其他语言无异,不赘述)

函数在定义时可以根据需求传入灵活的参数设置。通过在形参前加一个星号(*)或两个星号(**)来指定函数可以接收任意数量的实参。例如:

>>> def parameter(*args):
print(type(args))
print(args)

>>> parameter(1,2,3,4)

(1, 2, 3, 4)

def parameter(**args):
print(type(args))
print(args)

parameter(a=1,b=4,c=4,g=6)

{'a': 1, 'b': 4, 'c': 4, 'g': 6}

有上述可知,使用一个星号传入的参数,被按照元组图tuple的形式存储起来,而是用两个星号的形参,则采用字典dictionary(键值对)。在使用两个星号形参的时候,调用参数得使用键值对keyword-value的形式传入。

3、普通参数列表也可采用键值对方式传递实参,此时的参数的顺序可以乱序。

def parameter1(name,age,gender):
    print(name,age,gender)

>>> parameter1('jack','20','man')
jack 20 man
>>> parameter1(age=20,name='jack',gender='man')
jack 20 man

函数也同样可以作为参数传入到函数体中,在函数体中照样可以接收参数。

def call_func(func,para):
    print(func(para))
if __name__=='__main__':
    call_func(lambda x:x+2,5)
   
4、函数的调用

Python中在调用函数时,需要给定和形参相同个数的实参并按顺序一一对应即可。

5、针对第2点,使用*或**来表示形参接收的个数。其实使用*表示将所有参数打包成列表list的形式传入函数体,**表示将所有的参数打包成字典dictionary的形传入函数体。既然 有打包必然有解包。故而在函数的调用的过程中,可以事先定义好列表或者字典。作为参数传入。函数会自动将解包,将一一对应传给形参。

def fib(a,b,c):
    print(a+b+c)

>>> list=[1,2,3]

>>> dict={'a':20,'b':30,'c':40}
>>> fib(*list)
6
>>> fib(**dict)
90

6、匿名函数lambda(anonymous inline function)表达式

lambda [arg1 [,arg2,.....argn]] : expression。lambda表达式可以在任何需要函数对象的地方使用,它们在语法上被限制为单一的表达式。lambda函数能接收任何数量的参数但只能返回一个表达式的值

>>> f=lambda x: x**2
>>> f(10)
100
>>> f=lambda x: x>10
>>> f(5)
False

其返回结果的结果要么是定义好的表达式,要么就是bool值。

7、函数中使用文本字符串

函式体的第一个语句可以是三引号括起来的字符串, 这个字符串就是函数的文档字符串,或称为docstring 。我们可以使用print(function.__doc__)输出文档:

def fib():   

 """ synchronized translation for 90 languages, predictive typing"""   

 return  

>>>print(fib.__doc__)

synchronized translation for 90 languages, predictive typing 


文档字符串主要用于描述一些关于函数的信息,让用户交互地浏览和输出 。建议养成在代码中添加文档字符串的好习惯。





推荐阅读
  • 前言有时候我们需要把图片填充成某个数字的整数倍才能送进模型。例如,有些模型下采样倍率是8倍,或者16倍,那么输入的长和高就分别应该是8或16的整数倍。如果图片达不到,除了拉伸图像( ... [详细]
  • python教程分享python人物视频背景替换实现虚拟空间穿梭
    引言近期网上这位卖蜂蜜的小伙鬼畜挺火的,大家质疑背景造假,这里我就带着大家实现“背景造假”(ps:原视频小伙是在真实场景拍摄的)准备工作在实现该功能之前,我 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • C# 7.0 新特性:基于Tuple的“多”返回值方法
    本文介绍了C# 7.0中基于Tuple的“多”返回值方法的使用。通过对C# 6.0及更早版本的做法进行回顾,提出了问题:如何使一个方法可返回多个返回值。然后详细介绍了C# 7.0中使用Tuple的写法,并给出了示例代码。最后,总结了该新特性的优点。 ... [详细]
  • 正常情况下,我们完成一件事情的过程中,可能会存在多种条件限制如:用户去ATM机取钱->输入取款密码->输入正确,取钱成功|输入错误,退卡。这样的情况下,需要根据不同的条件,执行不同的逻 ... [详细]
  • Python3从入门到放弃最后更新时间:2017-09-2503:05目录:第一章:HelloWorld第二章:输入和输出附录:常用的Python内置函数第一章:Hell ... [详细]
  • 一、简介在面向对象的程序设计中类和对象是其重要角色,我们知道对象是由类实例化而来,那么类又是怎么生成的呢?答案是通过元类。本篇文章将介绍元类相关知识,并剖析元类生成类的过程,以及元 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文介绍了一种划分和计数油田地块的方法。根据给定的条件,通过遍历和DFS算法,将符合条件的地块标记为不符合条件的地块,并进行计数。同时,还介绍了如何判断点是否在给定范围内的方法。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
author-avatar
U友50054453
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有