python中的函数是如何使用的? 欢迎关注「」感谢“一起学习一起成长“1.定义函数与调用函数输入def, 接着输入函数名, 再输入带有函数参数的圆括号, 最后输入紧跟的一个冒号(:) , 以此进行函数定义。函数命名有着规范, 其规范为, 必须要使用字母或者下划线_来作为开头, 并且仅能够含有字母、数字以及下划线。定义函数def ():... pass注意一下, 函数里头的pass所表明的情况是, 该函数并未做任何的事情。并且, 跟这一页特意留出空白拥有相同的作用。调用函数()注意出现在def语句里函数名之后的变量, 一般被称作函数的形参, 然而在调用函数之际所给出的值是实参, 也被叫做参数。引入参数基础def echo():... 传入到函数的值称为参数。输入参数函数例子:需求做到把输入参数设为color, 调用这样子的函数, 借此让它将返回了对颜色作出评论的字符串。def (color):if colorred:Its a elif colorgreen:Its a green elif colorbee :else:“我从来都没有听说过”, “那种颜色”, “叫做”, “color”, “的”。传入字符串参数blue调用函数():(blue)这个函数做了以下事情得到返回值print()我从来都没听说过蓝色这种颜色。哪一种颜色是蓝色, 我从来都没听说过。如果函数不显示调用函数那么会默认返回None。2.位置参数位置参数传入参数的值是按照顺序依次复制过去的。弊端必须熟记每个位置的参数的含义。下面创建一个带有位置参数的函数并且返回一个字典def menu(wine,,):{wine:wine,:,:}调用函数menu(beef,bagel,)替换后的内容依次为: 无, 无, 牛肉, 无, 百吉饼。3.关键字参数调用函数之际, 为防止位置参数致使的混乱状况, 能够指定对应参数的名称, 甚至于能够以与函数定义不一样的顺序来进行调用。把“bagel”当作一个部分, “wine”为空, 又有一个部分是“beef”。将位置参数跟关键字参数混杂一块儿, 位置参数得放置在前头, 在关键词参数之前menu(,flan,fish)4.指定默认参数值指定默认参数值def menu(wine,,)... {wine:wine,:,:}实用例子:注明, 函数buggy()于每一回进行调用之际, 将参数arg增添至一个空的列表里头, 接着打印输出一个仅含有单值的列表。然而存在着一个状况, 只有在首次进行调用之时列表呈现为空的状态, 第二次进行调用的时候便会存有之前那次调用所产生的返回值。def buggy(arg,):... .(arg)... print()buggy(a)buggy(b)如果写成下面的样子就回解决刚才的问题def works(arg)... ... .(arg)...works(a)(b)这样的修改也为了表明是第一次调用跳过一些操作def (arg,None):... if is None:... ... .(arg)... print()(a)(b)5.使用*收集位置参数元组星号, 它会把一组有着可变数量的、位置方面的参数, 集合成为参数值的元祖, 举例来说:def (*args):... print( tuple:,args)无参数调用什么都不返回()tuple:()给函数传入的所有参数都会以元祖的形式返回输出(3,2,1,wait!,uh...)元组, 其中包含, 数字3, 数字2, 数字1, 字符串‘wait!’, 字符串‘uh...’。应用:说明: 对于编写如print()那样能接纳可变数量参数的函数而言, 这样的技巧极具用处。要是你的函数同时存在限定的位置参数, 那么*args会将剩余的参数收集起来:def (,,*args):... print(Need this one:,)执行打印操作, 输出内容为, “All the rest:”, 以及变量args的值。Need this one:capNeed this one too:其余的全部: “围巾”, “”, “蜡”要是运用*的时候, 并非一定得将元祖参数命名成args, 然而这却是其中一种常见的做法6.使用**收集关键字参数字典概述运用两个星号**能够把参数收集进一个字典里, 参数的称谓是字典之中的键, 与之对应的参数的数值是字典里的值。def (**):... print( :,)使用关键字参数调用函数(wine,,):{wine:,:,:}要是将带着*args以及**的位置参数予以混合, 那它们必定得依照顺序来出现。7.文档化函数给函数写文档要点说明: 要是期望为函数撰写文档, 从而使得其他运用该函数的人能够明白的情形吧。文档字符串def echo()... echo its input ...可以定义非常长的文档字符串加上详细的规范说明例如def (thing,check):the first if a is true.The is:1.Check the ** is true.2.要是它属于这种情况, 那就打印出那首个的。调用函数help()打印输出一个函数的文档字符串help(echo)Help on echo in :echo():echo its input如果仅仅想得到文档字符串print(echo._doc_)echo its input注意其函数属性为_doc_, 它是函数里变量的文档字符串那相应名字, 属性名当中双下划线意味着它属于特殊属性。8.一等公民函数中一切都是对象包括数字、字符串、元组、列表、字典和函数。函数, 于其中属于一等公民, 能够将它们返回值赋予变量, 能够当作参数被别的函数调用, 还能够从别的函数里头返回值。其所起的作用能助力于里边去达成其他语言很难达成的功能。举例如下No.1def ():... print(42)()42No.2def (func):... func()()42要留意的是, 传递给函数的, 并非是()。在其中, 圆括号意味着调用函数。在不存在圆括号的情形下, 会将函数视作普通对象。这是由于在其他状况下, 它同样仅仅代表着一个对象:type()No.3def (arg1,arg2):... print(arg1arg2)的类型是type()No.4此刻定义一个函数rgs它带有三个参数func-可以运行的函数arg1-func函数的第一个参数arg2-func函数的第二个参数def rgs(func,arg1,arg2):... func(arg1,arg2)在调用rgs()之际, 调用方所传来之事函数予以func参数赋值呈现该状态, 并且arg1以及arg2自参数列表当中获取相应的值, 随后运行携带参数的func(arg1,arg2)。rgs(,5,9)14程序最后执行func(5,9)于此同样能够运用上这般将 *args位置参数收集以及 **args关键字参数收集的技巧:def (*args):... sum(args)又去定义出一个全新样子的函数args(), 使其去接收一个函数的名称, 以及随便是多少数量的处于位置上的参数:def args(func,*args):... func(*args)直接调用args(,1,2,3,4)10留意: 同样能够将函数当作列表的元素, 当作元组的元素, 当作集合的元素, 当作字典的元素。函数名是不可变的, 所以能够将函数用作字典的键。9.内部函数在中可以在函数中定义另外一个函数def outer(a,b):... def inner(c,d):... cd... inner(a,b)outer(4,7)特点是, 当存在在函数里边多次去执行复杂的任务这种需求的时候, 内部函数可是相当有用的, 进而避免了循环以及代码的堆叠重复。def ():... def inner(quote):我们是那些说: “%s”的人 , 引号内为引用内容, 由quote表示。... inner()(Ni!)We are the who say:Ni!10.闭包概要来讲, 内函数能够被看成是一个封闭包裹体。封闭包裹体是那种能够经由另一个函数动态予以生成的函数, 而且那种函数是能够对在函数之外所创建的变量的值进行有所改变以及予以存储的。def ():... def ():, “我们是那些说: ‘%s’的人百分之”。...有这样一种函数 , 它能够获取参数的值 , 并且将其记录下来。而另外这一行 , 返回的是函数的复制副本 , 这并非是直接对函数进行调用。所以说 , 它实际上就是一个闭包: 是那种被动态创建出来的 , 能够记录外部变量的函数。a(Duck)b()type(a)type(b)如果调用它们它们会记录被函数创建时的外部变量a()We are the who say:Duck b()We are the who say: 11.匿名函数()函数在其中, 函数是那种通过一条语句去加以描述呈现的匿名函数, 此匿名函数能够被用于用来替换那些小型的函数。def (words,func):... for word in words:... print(func(word))thud,meow,thud,hiss对于函数, 它需把每个单词的第一个字母予以大写处理, 之后在结尾添加上叹号。def (word): #让这些单词更有情感(,)Thud!Meow!Thud!Hiss!最后到了。()函数可以简洁地用下面的一个代替(, word:word.() !)Thud!Meow!Thud!Hiss!函数接收一个参数, 这个参数是word。在冒号和末尾圆括号中间的部分, 它属于函数的定义。当进行诸多小函数的定义, 以及将它们的名字予以记住时, 这会具备着实颇高的效用性。特别是在图形用户界面那个范畴之内, 能够借助其来开展回调函数的定义操作。12.生成器能够拿来创建序列的一个对象是生成器, 借助它能够迭代庞大的序列, 并且不需要于内存里创建以及存储整个序列, 通常而言, 专向为迭代器产生数据的便是生成器。sum(range(1,101))5050不同寻常之地在于, 每当咱们对生成器进行迭代操作之时, 它会将上一回调用所处的位置予以记录, 以及给出接下来的那个值。正是在这一点上同普通的函数存有着差异, 一般情况下的那些函数对此前的调用是不会留存记忆的, 同时呢又皆是会从函数的首例起始执行的。如果你打算去创建一个相对较大些的序列, 运用生成器推导的代码会显得很长, 在这种情况下能够尝试去写一个生成器函数。生成器函数跟普通函数相类似, 然而它的返回值是使用yield语句来进行声明的并非是。... first... while... yield... step(1,5)for x in :... print(x)...假如笔记让您觉得有帮助, 在收藏之际, 要为其点个赞, 并且添加关注, 多谢文中的代码, 都是亲自测试过的, 要是存在错误的地方, 欢迎大伙进行批评指正, 大家一起学习, 共同成长语言及其应用