Python学习笔记之函数(一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012561176/article/details/81939276

1、什么是函数:函数是带名字的代码块,用于完成具体的工作。 需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用执行该任务的函数。

2、定义函数,函数定义使用关键字def,直接附上示例代码:

#函数定义
def test():
    print("测试函数定义");
	
#调用函数
test();

其中定义函数test(),方法体就需进行代码的缩进,调用函数直接用test()即可,运行后代码如下:

3、向函数传递信息,我们可以向函数传递信息,只需在函数里带个参数,然后调用函数的时候传递过去即可,示例代码如下:

#向函数传递信息
def test(msg):
    print("你想说的是:" + msg);
	
#调用函数
msg = input("请输入你想说的话:");
test(msg);

运行后如下图所示:

4、实参和形参概念,通过代码来解析:

#向函数传递信息
def test(msg):
    print("你想说的是:" + msg);
	
#调用函数
test('Hello Python!');

其中在定义函数的时候带了个msg参数,这个msg变量就是形参,函数完成其工作所需的一项信息。其中后面调用函数时,'Hello Python!'便为实参,实参是调用函数时传递给函数的信息。我们调用函数时,将要让函数使用的信息放在括号内。所以'Hello Python!'这个实参传递到函数里,并存储到形参msg变量里面。

5、传递实参,鉴于函数定义中可能包含多个形参,因此函数调用中也可能包含多个实参。向函数传递实参 的方式很多,可使用位置实参,这要求实参的顺序与形参的顺序相同;也可使用关键字实参,其中每个实参都由变量名和值组成;还可使用列表和字典。

(1)、位置实参,你调用函数时,Python必须将函数调用中的每个实参都关联到函数定义中的一个形参。为此, 简单的关联方式是基于实参的顺序。这种关联方式被称为位置实参。 其中位置实参的顺序很重要,不然参数传递会出现一些意外的效果,函数是可以调用多次的。示例代码如下:

#传递实参,位置实参示例代码
	
def test(name,msg):
    print("你想对" + name + "说的是:")
    print(msg + "\n");
	
#多次调用函数
test('林梓然','我爱你,因为我爱我自己');
test('大佬','苟富贵,勿相忘');

#实参顺序调换之后,意义就不一样了,所以顺序很重要
test('苟富贵,勿相忘','大佬');

运行后如下图所示:

(2)、关键字实参,关键字实参是传递给函数的名称—值对。你直接在实参中将名称和值关联起来了,因此向函数传递实参时不会混淆。关键字实参让你无需考虑函数调用中的实参顺序,还清楚地指出了函数调用中各个值的用途。 改下上面的代码:

#传递实参,关键字实参示例代码
	
def test(name,msg):
    print("你想对" + name + "说的是:")
    print(msg + "\n");
	
#实参顺序调换之后,但使用了关键字实参
test(msg='苟富贵,勿相忘',name='大佬');

运行后如下图所示:

注:关键字实参的顺序无关紧要,因为Python知道各个值该存储到哪个形参中。使用关键字实参时,务必准确地指定函数定义中的形参名。

(3)默认值,在实参传递到形参的时候,如果实参里没有指定相关的值,可以在形参里指定其默认值,如果实参里指定了相关的值,形参也指定默认值了,就只会读取实参里传递给形参的值,不会读取默认值。示例代码如下:

#传递实参,默认值示例代码
	
def test(name='林哈皮',msg='一起哈皮'):
    print("你想对" + name + "说的是:")
    print(msg + "\n");

#实参无值传递,则全部使用形参里的默认值	
test();

#实参传递name的值,则形参里的name的默认值不起作用
test(name='陈哈啤');

运行后如下图所示:

(4)、等效的函数调用,可混合使用位置实参、关键字实参和默认值,通常有多种等效的函数调用方式。示例代码如下:

#传递实参,等效的函数调用
	
def test(name,msg='一起哈皮'):
    print("你想对" + name + "说的是:")
    print(msg + "\n");

test('林小熊');
test(name='大哈皮');
#test(msg='哈皮好玩吗');这里不符合位置实参的顺序,所以一运行的话会报下面的错误,这里注释这一行代码
#TypeError: test() missing 1 required positional argument: 'name' test()丢失了一个要求的位置实参'name'
test(name='陈哈啤',msg='哈啤你值得拥有');
test(msg='哈啤你知道我在等你吗',name='李哈啤');

运行后如下所示:

(5)、避免实参错误,如果出现实参错误时,Python解释器会traceback指出了问题出在什么地方,上面一个代码示例注释的也算一个,下面给出另外两个简单的示例代码:

示例代码一,传递实参时参数名写错:

#传递实参,实参传递错误问题
	
def test(name,msg='一起哈皮'):
    print("你想对" + name + "说的是:")
    print(msg + "\n");

test(nam='林梓然');

运行后如下,Traceback就提出第7行,test()函数得到一个意想不到的关键字参数“nam”:

示例代码二:

#传递实参,实参传递错误问题
	
def test(name,msg):
    print("你想对" + name + "说的是:")
    print(msg + "\n");

test();

运行后如下图所示,test()丢失了2个必要的位置参数:'name'和'msg':

以上内容仅供大家学习参考,谢谢!

猜你喜欢

转载自blog.csdn.net/u012561176/article/details/81939276
今日推荐