您好,欢迎访问三七文档
Python函数1.函数简介函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。Python提供了许多内建函数,比如print();也可以自己创建函数,这被叫做用户自定义函数。2.函数定义规则:函数代码块以def关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串,用于存放函数说明。函数内容以冒号起始,并且缩进。return[表达式]结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回None。语法:1deffunctionname(parameters):2函数_文档字符串3function_suite4return[expression]默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的。实例:以下为一个简单的Python函数,它将一个字符串作为传入参数,再打印到标准显示设备上。1defprintme(str):2打印传入的字符串到标准显示设备上3printstr4return3.函数调用定义一个函数只给了函数一个名称,指定了函数里包含的参数,和代码块结构。这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从Python提示符执行。如下实例调用了printme()函数:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#定义函数6defprintme(str):7打印任何传入的字符串8print(str)9return1011#调用函数12printme(我要调用用户自定义函数!)13printme(再次调用同一函数)复制代码输出结果:1我要调用用户自定义函数!2再次调用同一函数4.按值传递参数和按引用传递参数所有参数(自变量)在Python里都是按引用传递。如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。例如:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#可写函数说明6defchangeme(mylist):7修改传入的列表8mylist.append([1,2,3,4])9print(函数内取值:,mylist)10return1112#调用changeme函数13mylist=[10,20,30]14changeme(mylist)15print(函数外取值:,mylist)复制代码输出结果:1函数内取值:[10,20,30,[1,2,3,4]]2函数外取值:[10,20,30,[1,2,3,4]]传入函数的和在末尾添加新内容的对象用的是同一个引用。5.参数以下是调用函数时可使用的正式参数类型:必备参数关键字参数默认参数不定长参数必备参数必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。调用printme()函数,你必须传入一个参数,不然会出现语法错误:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-34#可写函数说明5defprintme(str):6打印任何传入的字符串7print(str)8return910#调用printme函数11printme()复制代码输出结果:1Traceback(mostrecentcalllast):2FileD:/PycharmProjects/S15/day04/test.py,line11,inmodule3printme()4TypeError:printme()missing1requiredpositionalargument:'str'关键字参数关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为Python解释器能够用参数名匹配参数值。以下实例在函数printme()调用时使用参数名:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#可写函数说明6defprintme(str):7打印任何传入的字符串8print(str)9return101112#调用printme函数13printme(str=Mystring);复制代码输出结果:1Mystring下例能将关键字参数顺序不重要展示得更清楚:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#可写函数说明6defprintinfo(name,age):7打印任何传入的字符串8print(Name:,name)9print(Age,age)10return1112#调用printinfo函数13printinfo(age=50,name=miki)复制代码以上实例输出结果:1Name:miki2Age50缺省参数调用函数时,缺省参数的值如果没有传入,则被认为是默认值。下例会打印默认的age,如果age没有被传入:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#可写函数说明6defprintinfo(name,age=35):7打印任何传入的字符串8print(Name:,name)9print(Age,age)10return111213#调用printinfo函数14printinfo(age=50,name=miki)15printinfo(name=miki)复制代码以上实例输出结果:1Name:miki2Age503Name:miki4Age35不定长参数你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。基本语法如下:1deffunctionname([formal_args,]*var_args_tuple):2函数_文档字符串3function_suite4return[expression]加了星号(*)的变量名会存放所有未命名的变量参数。选择不多传参数也可。如下实例:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#可写函数说明6defprintinfo(arg1,*vartuple):7打印任何传入的参数8print(输出:)9print(arg1)10forvarinvartuple:11print(var)12return1314#调用printinfo函数15printinfo(10)16printinfo(70,60,50)复制代码输出结果:复制代码1输出:2103输出:470560650复制代码6.匿名函数python使用lambda来创建匿名函数。lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。语法lambda函数的语法只包含一个语句,如下:1lambda[arg1[,arg2,.....argn]]:expression如下实例:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-34#可写函数说明5sum=lambdaarg1,arg2:arg1+arg267#调用sum函数8print(相加后的值为:,sum(10,20))9print(相加后的值为:,sum(20,20))复制代码输出结果:1相加后的值为:302相加后的值为:407.return语句return语句[表达式]退出函数,选择性地向调用方返回一个表达式。不带参数值的return语句返回None。如下实例:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-345#可写函数说明6defsum(arg1,arg2):7#返回2个参数的和.8total=arg1+arg29print(函数内:,total)10returntotal1112#调用sum函数13total=sum(10,20)复制代码输出结果:1函数内:308.变量作用域一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。两种最基本的变量作用域如下:全局变量局部变量定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。调用函数时,所有在函数内声明的变量名称都将被加入到作用域中。如下实例:复制代码1#!/usr/bin/envpython2#-*-coding:UTF-8-*-34total=0#这是一个全局变量567#可写函数说明8defsum(arg1,arg2):9#返回2个参数的和.10total=arg1+arg2#total在这里是局部变量11print(函数内是局部变量:,total)12returntotal1314#调用sum函数15sum(10,20)16print(函数外是全局变量:,total)复制代码以上实例输出结果:1函数内是局部变量:302函数外是全局变量:09.内置参数1)abs(x)函数返回数字(可为普通型、长整型或浮点型)的绝对值。若参数是复数,返回值就是该复数的模1abs(-2.4)22.42)all(iterable)如果iterable的所有元素不为0、''、False或者iterable为空,all(iterable)返回True,否则返回False(若为空串返回为True)空元组、空列表、空字典空集合的返回值为True复制代码1all(['a','b','c','d'])#列表list,元素都不为空或02True3all(['a','b','','d'])#列表list,存在一个为空的元素4False5all([0,1,2,3])#列表list,存在一个为0的元素6False78all(('a','b','c','d'))#元组tuple,元素都不为空或09True10all(('a','b','','d'))#元组tuple,存在一个为空的元素11False12all((0,1,2,3))#元组tuple,存在一个为0的元素13False1415all({'a':James,'b':24})#字典dict,key都不为空16True17all({'a':James,'':24})#字典dict,存在一个key为空的元素18False1920all(set(('a','b','c','d')))#集合set,元素都不为空或021True22all(set(('a','b','','d')))#集合set,存在一个为空的元素23False24all(set((0,1,2,3)))#集合set,存在一个为0的元素25False262728all([])#空列表29True30all(())#空元组31True32all({})#空字典33True34all(set())#空集合35True复制代码3)any(iterable)如果iterable的任何元素不为0、''、False,all(iterable)返回True。如果iterable为空,返回False复制代码1any(['a','b','c','d'])#列表list,元素都不为空或02True3any(['a','b','
本文标题:Python 函数
链接地址:https://www.777doc.com/doc-4210398 .html