一、什么是函数
当我们在日常工作中编写代码时,有没有发现这种情况,写了一套代码,却发现里面有很多段代码出现了有规律的重复,这样就不符合一个合格程序员的标准了,一个合格的程序员编写的代码最重要的应该是简洁,精炼。那么,有什么方法能减少代码中出现的这样有规律的重复的情况吗?当然有,那就是函数。例如我们平常使用最频繁的print(),input(),这些都是函数,属于python内置函数,这些函数是python中事先写好的函数,当我们需要打印一个内容时,我们就可以print()。
我们在python中除了可以使用已经写好的内置函数,还可以根据我们的需求自定义一个函数,然后在需要的时候直接调用即可。接下来介绍一下如何自定义一个函数,或者说自定义函数有哪些关键点需要注意。
二、函数的格式
def 函数名(形式参数):
函数体 #具体内容
函数名(实际参数) #调用你定义的这个函数
在这里需要注意;
1.开头这个def必须有
2.函数名字的命名规则和变量一样,必须以下划线或英文字母开头,可以包含任意字母数字和下划线的组合,不能使用标点符号和保留字,函数名区分大小写
3.函数名后边的括号和冒号必须是英文状态下的
4.在缩进块中编写具体内容,否则就不属于这个函数了
*5.函数的参数
*6.函数的返回值 return
三、函数的参数
在创建定义函数时,函数名括号里的参数称为形式参数,目的是在函数调用的时候接收实际参数。当调用函数时,函数名括号里面的参数叫实际参数,目的是传给形式参数具体内容。他们的区别是,形参是虚拟的。并不占用内存;实参是一个变量,占用内存空间,数据传送单向,由实参传给形参。
在Python中函数的参数类型分为:必选参数、默认参数、可变参数、关键字参数和命名关键字参数
1.必选参数:必须以正确的顺序传入函数,形参和实参要按照位置一一对应,调用时数量必须和声明时一样
def s(a,b): print(a*b)s(2,3)
2.关键字参数:这里形参与实参可以顺序不一致,因为函数调用是使用关键字参数来确定传入的参数值
def x(name,age): print(‘i am %s, i am %d‘%(name,age) )x(age=6,name=‘tom‘)
3.默认参数:当函数里的某一个参数在大多数的情况下是一个固定的值时,可以使用默认参数,事先把这个参数的值写好,当调用函数时,如果没有参数传入,就使用默认参数的值,如果有参数传入,就使用传入的值
def info_(name,age,sex=‘male‘): print(‘name:%s‘%name) print(‘age:%s‘ % age) print(‘sex:%s‘ % sex)info_(‘tom‘,12)info_(‘mary‘,50,‘female‘)结果:
name:tom
age:12
sex:male
name:mary
age:50
sex:female
4.可变参数:当我们要传入的数据有很多的时候,可以使用可变参数,传入未命名参数可以使用*args,所有数据保存在元组里;传入命名的参数可以用**kwargs,所有数据保存在字典里。
def e(*yz,**zd): print(yz) print(zd)e(1,2,3,name=‘tom‘)结果:
(1, 2, 3)
{‘name‘: ‘tom‘}
四、函数参数的顺序
上面介绍的这几种参数可以组合使用,但是要注意顺序。
参数定义的顺序必须是:必选参数、默认参数、可变参数和关键字参数。
比如定义一个函数,包含上述4种参数:
def q(a, b, c=0, *args, **kw): print(‘a =‘, a, ‘b =‘, b, ‘c =‘, c, ‘args =‘, args, ‘kw =‘, kw)q(1, 2)q(1, 2, c=3)q(1, 2, 3, ‘a‘, ‘b‘)q(1, 2, 3, ‘a‘, ‘b‘, tom=‘abc’)结果:
a = 1 b = 2 c = 0 args = () kw = {}
a = 1 b = 2 c = 3 args = () kw = {}
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {}
a = 1 b = 2 c = 3 args = (‘a‘, ‘b‘) kw = {‘tom‘: ‘abc‘}
五、函数的return
1.每一个函数都有返回值,返回值跟在return语句后边,值返回给调用的函数,如果return语句后边没有值,或者是函数里没有return,默认返回的是None
2.如果return后边有多个值,python会把这些值放到元组里显示
3.return语句一旦执行,就代表函数执行完毕,函数体内return后面的内容不再执行
def hello(): print(‘hello‘) return ‘over‘,345a=hello()print(a)结果:
hello
(‘over‘, ‘345‘)
def hello(): print(‘hello‘) return print(‘235’)a=hello()print(a)结果:helloNone
原文地址:https://www.cnblogs.com/bianhao89757/p/10252736.html